git(/ɡɪt/[5],关于这个音频文件 音频(帮助·信息))是一个分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。应注意的是,这与GNU Interactive Tools[6](一个类似Norton Commander界面的文件管理器)有所不同。
git最初的开发动力来自于BitKeeper和Monotone[7][8]。git最初只是作为一个可以被其他前端(比如Cogito或Stgit[9])包装的后端而开发的,但后来git内核已经成熟到可以独立地用作版本控制[10]。很多著名的软件都使用git进行版本控制[11],其中包括Linux内核、X.Org服务器和OLPC内核等项目的开发流程[12]。
合併
您上次的push到執行下一次的push的期間,如果有其他人push更新了遠端數據庫,而您沒有更新您的本地端數據庫,那麼您的push會被拒絕,。
這個時候,需要進行合併操作導入其他人的修改歷史,不然push都會被拒絕喔。若沒有合併直接覆蓋歷史記錄的話,其他人push的修改內容(如圖提交C)會消失。
解決衝突
上一頁已經講解過了,Git執行合併會自動合併修改的部分,但也有不能自動合併的時候。
如果遠端數據庫和本地端數據庫的同一個地方都發生了修改的情況下(例:檔案中同一行的地方)。
這時,因為Git不能自動判斷要導入那一個修改內容於是就會發生錯誤。
發生衝突的地方,Git會修改檔案的內容如下圖顯示。所以衝突的地方需要手動修改喔。
用==分隔的上方是本地端數據庫的編輯內容,下方是遠端數據庫的編輯內容哦。
如下圖所示,修改好所有衝突的地方之後,執行提交會提交衝突的合併訊息的提交內容。
教學3 合併修改記錄
製造衝突
在教學3,我們要學習如何解決衝突,首先,我們必須使用「tutorial 數據庫」和「tutorial2 數據庫」製造衝突的狀態。
Windows
在tutorial的操作
首先在打開tutorial目錄的sample.txt,修改成以下的內容再提交。
add 修改加入索引 commit 記錄索引的狀態
在tutorial2的操作
接著打開tutorial2目錄的sample.txt,修改成以下的內容再提交。
add 修改加入索引 pull 取得遠端數據庫的內容
在tutorial2的操作
直接從tutorial2 push內容到遠端數據庫。
現在,遠端數據庫的第三行即為「pull 取得遠端數據庫的內容」啦。
在tutorial的操作
接下來,從tutorial push提交到遠端數據庫。
教學3 合併修改記錄
解決衝突
想要push修改內容到遠端數據庫,我們必須先手動解決衝突,請執行pull,從遠端數據庫取得最新的修改歷史。
Windows
在tutorial的操作
執行pull:對tutorial目錄按右鍵,從選單中點「TortoiseGit」> 「拉取」。
在tutorial的操作
會顯示以下畫面,點一下「確認」。
在tutorial的操作
顯示自動合併失敗的訊息。點一下「關閉」結束畫面。
在tutorial的操作
系統會詢問是否要檢視變更,請點擊「Yes」
在tutorial的操作
TortoiseGit會告知自動合併失敗是因為sample.txt發生了合併衝突,點一下「確認」以結束畫面。
<<<<<<< HEAD
commit 記錄索引的狀態
=======
pull 取得遠端數據庫的內容
>>>>>>> 17c860612953c0f9d88f313c8dfbf7d858e02e91
commit 記錄索引的狀態
pull 取得遠端數據庫的內容
在tutorial的操作
我們解決了檔案內容的衝突,檔案內容已變更,所以需要進行提交,請點右鍵選單中的「Git提交」執行提交。
這樣就完成了從遠端數據庫導入最新的修改內容了。
這表示兩個修改歷史已經成功合併且建立了新的合併提交。
我們現在可以放心地push變更到遠端數據庫,不用擔心會產生任何衝突。
转自 https://backlogtool.com/git-guide/tw/intro/intro2_2.html