使用git init 命令創建一個本地倉庫
得到的文件結構如下圖:
使用git status 命令查看工作區狀态
git add 命令添加工作區文件到倉庫
分别修改f.txt文件兩次,每次增加一行代碼後保存,然後運行git add f.txt
我們發現每次文件修改保存後,隻要文件有變化,就會在objects目錄下有新的文件夾生成,其實這裡就是存放我們每次文件的記錄的。經測試文件沒有修改,運行git add f.txt是沒有變化的。
提交文件(git commit)
git commit -m "first"
-m參數是備注的意思後面跟着我們這次提交的備注信息。
提交後查看工作區狀态
git log查看日志
查看提交詳情(git show)
git show 24acb470df451a7b6c97d9bc64ff971ce7403d72
git diff命令查看文件不同
第一行運行時沒有任何結果,因為我們剛comiit(提交)了代碼,所以工作區與倉庫的内容沒有不同。當我們将e.txt文檔增加了一行aaaa後,運行git diff将會看到對比後的結果。
git reset命令恢複工作區到指定的更新點
運行命令git reset --hard c551ecc634efc9e1339f2e35347d4ff704ce1615
這時我們在打開f.txt,e.txt發現文件内容的确恢複到當時内容的情況了。
git branch -l查看分支命令
git中分支的意思是以當前master為基準開出一個新的分支,倉庫在創建時就有一個默認分支master.如下圖:
下面我們根據實例看一下到底分支是怎麼起作用的
創建我們創建一個倉庫,然後在工作區創建一個a.txt文檔,添加一行内容:111,然後添加到索引區(add),然後提交(commit)。
創建新的分支
git branch b1
切換到新的分支
git checkout b1
這時我們分支b1裡保存的就是從master複制來的文件快照,當我們切換到分支b1後修改一下a.txt增加一行内容:222,然後add(添加到索引區),然後再commit(提交)
以上部分我們分支b1和分支master内容就不相同了.其中master中的a.txt還是隻有一行内容:111
我們先checkout 到master下
git checkout master
然後打開a.txt查看内容如下:
然後我們切換到b1分支下
git checkout b1
然後打開a.txt查看内容如下:
以上就演示了git神奇的分支功能,我們可以在代碼某一個版本後,開一個分支,繼續編寫另一套程序。最常見的應用場景之一就是我們比如在做好一套web框架後,基于這個框架開分支編寫具體的應用程序。
分支的合并
上面說了分支可以将多套代碼分别管理的功能,當然git中分支的強大功能還不局限于此。下面我們讨論一下分支的合并功能。
接着上面的步驟,我們在分支b1中給a.txt内容增加了一行:222,那麼現在master中a.txt内容還是:111,如果我們想把b1分支合并來,那怎麼做?答案是使用git merge命令。
這時在master下查看a.txt内容與b1分支查看文件内容都是同樣的兩行内容了。(也就是實現了把b1分支下的文件内容合并到了mater下)
關于分支沖突的産生
如果說上一步合并前,我們修改master分支下的a.txt,我們增加了一行内容:aaa,并提交了。這時如果我們運行合并命令時,會有出錯提示:
因為我們這時master分支下a.txt内容為:
111
aaa
而b1分支下a.txt内容為:
111
222
因而在合并時出現了沖突
至于 沖突的處理,我們繼續看
如上圖,出現沖突後,git已經在出現沖突的文件裡給我們标記好沖突的位置及内容,我們修改好文件後,使用git add 然後git commit把修改好的文件提交到我們的master分支裡即可。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!