初次接觸到git,其餘的操做都還好就是在解決衝突的時候,遇到了一些問題,網上找了好多,都感受不是很明確。通過屢次實驗,終於搞明白瞭解決衝突的步驟,特此記錄一下。android
1.首先我新建了一個空文本文件,而後push到遠程倉庫。這個時候遠程倉庫和本地倉庫是同步的git
2.我分別在本地和瀏覽器上對這個文本文件進行寫操做github
3.這個時候,test.txt在本地倉庫和遠程倉庫是不一樣的,咱們先commit本地修改到本地倉庫瀏覽器
而後從遠處倉庫中pull項目 bash
這個時候會發現項目的名字上多了一些向上向下的箭頭,向下表示本地與遠程倉庫有不一樣,向上表示本地提交的次數網站
並且若是有的文件發生了衝突,git會自動幫咱們合併,但他合併的方式並非咱們想要的3d
4.如今咱們須要打開同步視圖去解決咱們的衝突blog
這裏顯示的是衝突的文件ip
點擊Merge Tool咱們就能夠分屏看到本地和遠程文件的具體修改同步
5.接下來咱們就要參考兩個文件來修改test.txt的內容了,以解決衝突,我這裏將他們和並在一塊兒,而後保存
6.接下來再提交咱們的修改到本地倉庫,先add to index,而後commit
這個時候的commit信息會自動爲咱們填寫,就是合併的信息
咱們commit後,這時候項目上的箭頭也發生了變化
7.這個時候咱們就能夠將本地項目push到遠程倉庫了
push後咱們項目上的箭頭也消失了,這樣衝突就解決了
git方法解決衝突:
模似場景:
在本地git裏面增長一個文件readme.txt,編輯內容(內容隨便寫如:中國你好,哈哈),使用命令push到github.
假如你本地 branch 爲 master (能夠經過 git branch -av查看本地和遠程branch名字),遠程branch 就是建立repository的名字如:(androidFragment)
1. git add readme.txt(把文件添加到git cache)
2. git commit (提交)
3. git push androidFragment master(這句命令格式爲 git push 遠程分支名字 本地分支名字)
如今能夠看到在github上面看到有一個readme.txt文件。如今開始在本地編輯文件readme.txt(內容隨便寫如:這是一個readme.txt文件,用於描述項目內容);
同時,在github網站上面也編輯readme.txt,內容改下就好(如:中國你好,哈哈,hello).
到此,場景已經模似出來了。
如今在執行上面的1,2,3 步驟,就會push不上去了。如圖:
說的意思是,push到github的遠程訪問被拒了,push失敗,由於遠程包含了你所作的工做(就是遠程也作過更新)。
按照SVN,CVS的用法就從遠程更新本地的文件,操做:git pull 遠程 branch 本地branch ,查看本地文件沒遠程的內容,沒有成功;使用了git merge 遠程branch好像也沒成功(這步應該是不用試的,確定不行)。
就在 git pull 遠程branch名字 本地branch名字 時,提示有一個什麼rebase命令,git pull --rebase 遠程branch名字 本地branch名字。如圖:
遠程更新文件內容到本地成功。
可是,有幾個問題又出現了
1.執行成上步後,文件內容出現<<<============
========>>>這樣的內容,那就只能手動修改文件了,在git bash 中使用vi readme.txt編輯。改好後,wq.此問比較小,修改內容等待git push。
2. 使用了git pull --rebase 遠程branch名字 本地branch名字後,master 名字改了。如圖:
看到這個不同,也沒太注意。但是當我git push androidFragment master 時,仍是執行完1,2,3步後,那個仍是拒絕。
因而看一下,如圖:
也就釋然了(紅框包容內容)。執行了一下git rebase --continue提示如圖:
仍是搞不定。因而我就執行了,git rebase --skip ,執行後,沒有提示內容,可是(master|rebase1/1)沒有了。
如圖:
說明能夠git push了,而後我就執行1,2,3步驟,提示成功。
再去github網頁上面刷新,看到文件已經提交,內容是本地的內容,問題解決