如今程序猿標配GIT做爲代碼管理,可是從SVN到GIT學習中,其中GIT的衝突是一個難點,經常會致使Push不上去,Pull不下來,很尷尬的地步,還不知道本身寫的代碼被覆蓋沒,廢話很少說,直接上乾貨!php
採用SourceTree插件
和BeyondCompare
可視化解決衝突git
A 修改了conflict.file 中第1行內容而且提交到git上shell
B 這個時候也修改了confilct.file中第一行內容準備提交,這個時候git就會提示服務器
To git@192.168.x.xxx:xxx/server-aggregator.git ! [rejected] develop -> develop (fetch first) error: failed to push some refs to 'git@192.168.xx.xx:xxx/server-aggregator.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
提示遠程已經有更新了,本地版本過低,讓咱們先pull拉取最新的代碼。微信
咱們pull一下,這個時候因爲本地有修改這個文件,就會在本地產生衝突文件app
下載Beyond Comparesvn
打開SourceTree->工具->選項->比較->外部差別對比合並->選擇BeyondCompare工具
在本地副本->右鍵->解決衝突->打開外部合併工具
gitlab
和svn同樣解決好衝突保存更改,退出便可
學習
拉取時出現以下提示:
it -c diff.mnemonicprefix=false -c core.quotepath=false pull local-server-aggregator develop /opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-shell:3: warning: Insecure world writable dir /usr in PATH, mode 040777 From 192.168.0.200:weitoo/server-aggregator * branch develop -> FETCH_HEAD Updating b0c5c94..40cef3b error: Your local changes to the following files would be overwritten by merge: server/conflict.file Please, commit your changes or stash them before you can merge. Aborting
提示須要暫存本地修改,才能拉取服務器上新的代碼
點擊貯存(英文版:Stash),隨便起一個名字,裏面存的都是距離上次服務器版本到本地修改之間的差別,千萬別刪掉了,合併成功無誤了再刪掉。
pull拉取服務器代碼,這個時候,本地的代碼變成了服務器上的代碼。
點擊貯藏->應用貯藏區 ,這個時候是把以前的修改合併到本地上,這個時候會提示衝突。
git -c diff.mnemonicprefix=false -c core.quotepath=false stash apply stash@{0} Auto-merging server/conflict.file CONFLICT (content): Merge conflict in server/conflict.file
能夠在sourcetree裏看到有感嘆號,表明衝突文件,和上面解決衝突方法相似,可是稍微不一樣,最左邊成了遠程版本,中間爲遠程上一個版本,最後纔是本地修改。
這個是和咱們操做方式有關:咱們是先暫存本地修改,先拉取遠程代碼,這個時候local 就成了遠程代碼,最後咱們用暫存的合併進去,remote就成了本地修改
這個是因爲git自身形成的 它會解決衝突後 生成一個原來衝突的備份,咱們能夠去掉
git config --global mergetool.keepBackup false
感謝您的耐心閱讀,若是您發現文章中有一些沒表述清楚的,或者是不對的地方,請給我留言,你的鼓勵是做者寫做最大的動力,
若是您認爲本文質量不錯,讀後以爲收穫很大,不妨小額贊助我一下,讓我更有動力繼續寫出高質量的文章。
支付寶
微信
做 者 : @mousycoder
原文出處 : http://mousycoder.com/2015/10/14/git-source-conflict-reslove-solution/
創做時間:2015-6-15
更新時間:2015-10-16