git命令使用理解及分支的創建合併衝突問題解決

使用git init 命令創建一個本地倉庫

git命令使用理解及分支的創建合併衝突問題解決

得到的文件結構如下圖:

git命令使用理解及分支的創建合併衝突問題解決

git命令使用理解及分支的創建合併衝突問題解決

使用git status 命令查看工作區狀態

git命令使用理解及分支的創建合併衝突問題解決

git add 命令添加工作區文件到倉庫

git命令使用理解及分支的創建合併衝突問題解決

git命令使用理解及分支的創建合併衝突問題解決

分別修改f.txt文件兩次,每次增加一行代碼後保存,然後運行git add f.txt

我們發現每次文件修改保存後,只要文件有變化,就會在objects目錄下有新的文件夾生成,其實這裡就是存放我們每次文件的記錄的。經測試文件沒有修改,運行git add f.txt是沒有變化的。

git命令使用理解及分支的創建合併衝突問題解決

提交文件(git commit)

git commit -m "first"

-m參數是備註的意思後面跟著我們這次提交的備註信息。

git命令使用理解及分支的創建合併衝突問題解決

提交後查看工作區狀態

git命令使用理解及分支的創建合併衝突問題解決

git log查看日誌

git命令使用理解及分支的創建合併衝突問題解決

查看提交詳情(git show)

git show 24acb470df451a7b6c97d9bc64ff971ce7403d72

git diff命令查看文件不同

git命令使用理解及分支的創建合併衝突問題解決

第一行運行時沒有任何結果,因為我們剛comiit(提交)了代碼,所以工作區與倉庫的內容沒有不同。當我們將e.txt文檔增加了一行aaaa後,運行git diff將會看到對比後的結果。

git reset命令恢復工作區到指定的更新點

git命令使用理解及分支的創建合併衝突問題解決

運行命令git reset --hard c551ecc634efc9e1339f2e35347d4ff704ce1615

git命令使用理解及分支的創建合併衝突問題解決

這時我們在打開f.txt,e.txt發現文件內容的確恢復到當時內容的情況了。

git命令使用理解及分支的創建合併衝突問題解決

git branch -l查看分支命令

git中分支的意思是以當前master為基準開出一個新的分支,倉庫在創建時就有一個默認分支master.如下圖:

git命令使用理解及分支的創建合併衝突問題解決

下面我們根據實例看一下到底分支是怎麼起作用的

創建我們創建一個倉庫,然後在工作區創建一個a.txt文檔,添加一行內容:111,然後添加到索引區(add),然後提交(commit)。

git命令使用理解及分支的創建合併衝突問題解決

創建新的分支

git branch b1

切換到新的分支

git checkout b1

git命令使用理解及分支的創建合併衝突問題解決

這時我們分支b1裡保存的就是從master複製來的文件快照,當我們切換到分支b1後修改一下a.txt增加一行內容:222,然後add(添加到索引區),然後再commit(提交)

git命令使用理解及分支的創建合併衝突問題解決

以上部分我們分支b1和分支master內容就不相同了.其中master中的a.txt還是隻有一行內容:111

我們先checkout 到master下

git checkout master

然後打開a.txt查看內容如下:

git命令使用理解及分支的創建合併衝突問題解決

然後我們切換到b1分支下

git checkout b1

然後打開a.txt查看內容如下:

git命令使用理解及分支的創建合併衝突問題解決

以上就演示了git神奇的分支功能,我們可以在代碼某一個版本後,開一個分支,繼續編寫另一套程序。最常見的應用場景之一就是我們比如在做好一套web框架後,基於這個框架開分支編寫具體的應用程序。

分支的合併

上面說了分支可以將多套代碼分別管理的功能,當然git中分支的強大功能還不侷限於此。下面我們討論一下分支的合併功能。

接著上面的步驟,我們在分支b1中給a.txt內容增加了一行:222,那麼現在master中a.txt內容還是:111,如果我們想把b1分支合併來,那怎麼做?答案是使用git merge命令。

git命令使用理解及分支的創建合併衝突問題解決

這時在master下查看a.txt內容與b1分支查看文件內容都是同樣的兩行內容了。(也就是實現了把b1分支下的文件內容合併到了mater下)

git命令使用理解及分支的創建合併衝突問題解決

關於分支衝突的產生

如果說上一步合併前,我們修改master分支下的a.txt,我們增加了一行內容:aaa,並提交了。這時如果我們運行合併命令時,會有出錯提示:

git命令使用理解及分支的創建合併衝突問題解決

因為我們這時master分支下a.txt內容為:

111

aaa

而b1分支下a.txt內容為:

111

222

因而在合併時出現了衝突

git命令使用理解及分支的創建合併衝突問題解決

至於 衝突的處理,我們繼續看

git命令使用理解及分支的創建合併衝突問題解決

如上圖,出現衝突後,git已經在出現衝突的文件裡給我們標記好衝突的位置及內容,我們修改好文件後,使用git add 然後git commit把修改好的文件提交到我們的master分支裡即可。


分享到:


相關文章: