1. 程式人生 > >Git如何解決衝突

Git如何解決衝突

解決衝突

現在我把gitTest中的東西全刪了包括那個.git檔案。

初始化倉庫git init,新建一個a.txt,在裡邊寫個master,執行git add a.txt,然後執行git commit -m ‘add a.txt’

然後建立第一個分支 git branch feature1,然後建立第二個分支並切換到第二個分支git checkout -b feature2,在a.txt中另起一行新增feature2,然後執行git add a.txt和 git commit -m ‘feature2 add a word’,然後切換到master,git checkout master,把feature2分支合併到master分支, git merge –no-ff -m ‘merge feature2’ feature2。之後切換到feature1,git checkout feature1,在a.txt中另起一行新增feature1,然後執行git add a.txt和 git commit -m ‘feature1 add a word’。

現在整理一下,master分支a.txt中原始的資料為

master

後來建立了分支feature1裡邊的內容同樣為

master

後來建立了feature2分支,並把feature2中的內容合併到了master,所以現在master中a.txt的內容為

master
feature2

後來我把feature1中的資訊改為

master 
feature1

現在master中的內容和feature1最初複製的內容不一樣,現在切換到master分支,把feature1合併到master肯定會有衝突。

執行git merge feature1

$ git merge
--no-ff -m 'merge feature1' feature1 Auto-merging a.txt CONFLICT (content): Merge conflict in a.txt Automatic merge failed; fix conflicts and then commit the result.

會發現有衝突了,這時候a.txt中的內容為

master
<<<<<<< HEAD
feature2
=======
feature1
>>>>>>> feature1

Git用<<<<<<<

=======>>>>>>>標記出不同分支的內容。HEAD為當前所在分支的內容,也就是說現在master中的內容。feature1為feature1分支中的內容。

現在我a.txt中內容改為

master
feature2
feature1

然後執行

YZ@YZ MINGW64 /d/gitTest (master|MERGING)
$ git add a.txt

YZ@YZ MINGW64 /d/gitTest (master|MERGING)
$ git commit -m 'fix confict'
[master 6f57951] fix confict

YZ@YZ MINGW64 /d/gitTest (master)
$

這樣就好了。git log –graph –pretty=oneline –abbrev-commit

–pretty=oneline這個引數的目的是不再顯示Author和Date,只顯示帶有id號的一行。–abbrev-commit的意思是縮寫id號。

[email protected] MINGW64 /d/gitTest (master)
$ git log --graph --pretty=oneline --abbrev-commit
*   7f2f3b5 (HEAD -> master) fix conflict
|\
| * f56a04d (feature1) feature1 add a word
* |   1387cb8 Merge branch 'feature2'
|\ \
| |/
|/|
| * 14ef937 (feature2) feature2 add a word
|/
* cf361f6 add a.txt

要修改上一條提交資訊,可以使用git commit –amend命令。上一條的提交資訊為fix config,但它其實是feature1分支的合併,解決合併時發生的衝突只是過程之一,這樣標記是在不妥。於是,我們修改這條提交資訊。

$ git commit -m 'merge feature1' --amend
[master dea2e9d] merge feature1
 Date: Sun Aug 27 21:24:11 2017 +0800

再次檢視日誌,可以發現其變成了

$ git log --graph --pretty=oneline --abbrev-commit
*   dea2e9d (HEAD -> master) merge feature1
|\
| * f56a04d (feature1) feature1 add a word
* |   1387cb8 Merge branch 'feature2'
|\ \
| |/
|/|
| * 14ef937 (feature2) feature2 add a word
|/
* cf361f6 add a.txt

相關推薦

Git解決衝突

Git是當今最流行的,也是世界上目前最先進的,用於版本控制的,分散式的控制系統。相信有許多人即使沒有使用過,但肯定聽說過,好,那麼接下來我們就介紹一下在日常Git操作中經常會發生的一個問題,衝突。 所謂衝突,顧名思義,當你本地更改一個檔案,還沒上傳到遠端倉庫,但是你的同事同

git解決衝突與merge

                     git衝突的場景與其他SCM工具一樣,我在這邊修改了檔案a,同事也修改了檔案a。同事比我先提交到倉庫中,那麼我pull程式碼時就會報錯:$ git pullremote: Counting objects: 39, done.remote: Compressing o

Eclipse中用git解決衝突----避免每次重新拉程式碼

 Eclipse中,git是個比較頭疼的問題,如果稍有不慎,就只能將自己的程式碼備份一下,然後重新從伺服器上拉程式碼,再把自己有修改的部分加上,然後提交。 每次都這樣做,總會很煩的,現在來學一招,通過

Web前端工程化之VSCode+Git 解決衝突和error

         多人協作開發使用版本控制難免會有衝突,在前端使用VSCode和Git過程中,就會遇到大大小小的衝突,有的merge一下,然後提交推送就可解決,有的是因為HEAD指標混亂造成,本地和遠端分支拉取/合併問題。 問題1、直接解決衝

205-git解決衝突

git解決衝突 現在我們有一個master, 有一個test1.txt內容是 hello01 hello02 然後我們建立一個分支dev, 然後編輯test1.txt,然後在這個dev上增加 hello01 hello02 helloworld-dev 然後我們提交一下 gi

eclipse 中git解決衝突

Eclipse有一個git的外掛叫EGit,用於實現原生代碼和遠端程式碼對比、合併以及提交。但是在原生代碼和遠端程式碼有衝突的時候,EGit的處理方案還是有點複雜。今天就徹底把這些步驟給理清楚,並公開讓一些類似我這樣的初學者有個指引,如有不當,請多指正。 這裡我通過OSC的git做了一個測試的專案,我

eclipse git解決衝突

前提工作 建立一個普通JAVA工程Test,建立一個類Test,寫點東西並加入到本地git庫;建立個develop分支,建立個Develop類,修改Test類的某些語句,新增新程式碼段,提交;切換到master分支,建立個Master類,修改Test類的同一部分語句,提交

Git解決衝突總結

介紹 使用git經常出現不同的提交者對一個檔案進行更改,進而導致所謂的衝突(conflict),相當球疼! 當然,你用視窗工具來使用git,一般這樣的工具都會給你提供比較友好的解決方案,只需要點選滑鼠就可以解決衝突,比如SourceTree右鍵點選衝突檔案會

Git 衝突是如何產生的及如何解決衝突

版權宣告:歡迎轉載,轉載請說明出處http://csdn.yanxml.com。Github專案地址https://github.com/SeanYanxml/bigdata。 https://blog.csdn.net/u010416101/article/details/60784811 G

Git程式碼衝突解決辦法

如果伺服器上的檔案發生了更改了的話,在本地更改該檔案之前未使用git pull命令的話,那麼在本地修改完該檔案後使用git pull 或者git push時會發生衝突: error: Your local changes to the following files would be overw

git合併分支時如何解決衝突

合併時有衝突  $ git merge --no-ff modifyGR error: Merging is not possible because you have unmerged files. hint: Fix them up in the work tree,

git patch 衝突解決

1 git patch生成方法 git format-patch commit-id commit-id 該次提交之後的所有patch,不包含commit-id這次提交 git format-patch commit-id1..commit_id2 commit-id1和commit-id2

解決git pull 衝突問題

git pull發生衝突時,             《《 先用git stash命令把當前修改過的工作儲存到棧裡面,此時程式碼還原到了未修改時的樣子         

Git——上傳檔案到分支以及解決衝突

先將主檔案夾克隆下來 然後點選克隆下來的資料夾,滑鼠右鍵,選擇git bash。 (必須要先克隆下來主資料夾,然後再切換分支,否則沒法切換) 鍵入以下命令切換分支 git check 分支名 可以看到,這樣就切換到“dev_rens

git 解決pull request衝突

  今天幫哥們解決個人專案pull request到主分支時候 先是重新開了個request  指定 人員為我 git checkout master  git pull https://gitee.com/shilianmall/mmall-fe.git mmall_v

git conflict衝突解決

git -----pull request時候的衝突解決:             pull requeses記錄裡面檢視------------所有的commit記錄--------對比diff  和 history記錄             1)pull 對應分支到本地

git什麼情況下會產生衝突以及如何優雅的解決衝突

寫在前面: 現在還只是雜亂的記錄,部分內容在公司,需要時間手工搬運出來… 普通合入引發的衝突 方法1(推薦):使用rebase git fetch 下載所有分支的最新的遠端分支(看一下如何下載某個特定分支) git rebase origin/master 以ori

Git:程式碼衝突常見解決方法

如果系統中有一些配置檔案在伺服器上做了配置修改,然後後續開發又新新增一些配置項的時候, 在釋出這個配置檔案的時候,會發生程式碼衝突: error: Your local changes to the following files would be overwritten

git提交衝突解決

Git衝突解決方案 在程式開發的時候,我們使用Git的時候,不得不面臨著一個檔案被多個人修改和提交,這樣就會產生衝突,如果處理不好,不僅衝突解決不了,還會造成回滾程式碼,或者程式碼覆蓋,損失利益,所以我通過實踐模擬,寫了此規範操作,希望同事們遇到衝突無法解決時,可以幫助大家解決問題。一共十個步驟

git學習(八) git pull衝突解決辦法

git命令解決辦法 在同一個分支如果遠端庫某個檔案做了改動,本地也做了改動,這時pull就會報錯 解決這個問題 git stash git pull git stash 找到剛才打的stash的名字(預設是[email protected]{0}),