一、git命令在提交代碼前,沒(méi)有pull拉最新的代碼,因此再次提交出現(xiàn)了沖突
解決方法如下兩種:
1.保留你本地的修改
git merge --abort
git reset --merge
合并后記得一定要提交這個(gè)本地的合并(add–>commit–>push–>pull)
然后在獲取線上倉(cāng)庫(kù):
git pull
2.down下線上代碼版本,拋棄本地的修改
不建議這樣做,但是如果你本地修改不大,或者自己有一份備份留存,可以直接用線上最新版本覆蓋到本地
git fetch --all
git reset --hard origin/master
git fetch
二、從git遠(yuǎn)程倉(cāng)庫(kù)中pull最新的代碼,出現(xiàn)如下錯(cuò)誤:Please commit your changes or stash them before you merge.
解決方法如下:
git stash 可用來(lái)暫存當(dāng)前正在進(jìn)行的工作, 比如想pull 最新代碼, 又不想加新commit, 或者另外一種情況,為了fix 一個(gè)緊急的bug, 先stash, 使返回到自己上一個(gè)commit, 改完bug之后再stash pop, 繼續(xù)原來(lái)的工作。
- git stash //暫存代碼
- git pull 分支名//從遠(yuǎn)程倉(cāng)庫(kù)拉取最新代碼
- git stash pop //合并代碼到本地倉(cāng)庫(kù) 此時(shí)代碼是將暫存的代碼和遠(yuǎn)程倉(cāng)庫(kù)的代碼合并,如下圖:
- 這時(shí)候需要手動(dòng)修改合并所需的代碼即可。
- git stash clear//需要清空git棧執(zhí)行該命令
git stash: 備份當(dāng)前的工作區(qū)的內(nèi)容,從最近的一次提交中讀取相關(guān)內(nèi)容,讓工作區(qū)保證和上次提交的內(nèi)容一致。同時(shí),將當(dāng)前的工作區(qū)內(nèi)容保存到Git棧中。
git stash pop: 從Git棧中讀取最近一次保存的內(nèi)容,恢復(fù)工作區(qū)的相關(guān)內(nèi)容。由于可能存在多個(gè)Stash的內(nèi)容,所以用棧來(lái)管理,pop會(huì)從最近的一個(gè)stash中讀取內(nèi)容并恢復(fù)。
git stash list: 顯示Git棧內(nèi)的所有備份,可以利用這個(gè)列表來(lái)決定從那個(gè)地方恢復(fù)。
git stash clear: 清空Git棧。此時(shí)使用gitg等圖形化工具會(huì)發(fā)現(xiàn),原來(lái)stash的哪些節(jié)點(diǎn)都消失了
三、git push 報(bào)錯(cuò),如下:
解決命令:git pull --rebase origin 你的分支名稱,如下圖所示
再次執(zhí)行push命令:如下圖所示:
四、git push 還會(huì)報(bào)下面的錯(cuò)(如圖所示):這多是多人開發(fā)有了沖突。
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.
解決命令如下:
git push -u 代碼所在的分支 -f //強(qiáng)制提交,此時(shí)遠(yuǎn)程上的修改已經(jīng)被覆蓋。這種方法一般不建議使用,除非你把遠(yuǎn)程上修改的代碼復(fù)制到本地。
五、本地回退歷史版本,當(dāng)提交代碼發(fā)生沖突或者想回退到某一個(gè)版本,操作如下:
-
git log (獲取提交的歷史日志)
-
執(zhí)行命令:git reset --hard 版本號(hào)(就是git log 中的 commit后面的哈希值(上圖中的黃色部分 commit 后面的值))
-
想要修改遠(yuǎn)程上的代碼還需要執(zhí)行如下命令:
git push -u 代碼所在的分支 -f //強(qiáng)制提交,此時(shí)遠(yuǎn)程上的修改已經(jīng)被覆蓋。這種方法一般不建議使用,除非你把遠(yuǎn)程上修改的代碼復(fù)制到本地。
git merge --abort的一種使用情況
該命令僅僅在合并后導(dǎo)致沖突時(shí)才使用。git merge --abort將會(huì)拋棄合并過(guò)程并且嘗試重建合并前的狀態(tài)。但是,當(dāng)合并開始時(shí)如果存在未commit的文件,git merge --abort在某些情況下將無(wú)法重現(xiàn)合并前的狀態(tài)。(特別是這些未commit的文件在合并的過(guò)程中將會(huì)被修改時(shí))文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-421029.html
警告:運(yùn)行g(shù)it-merge時(shí)含有大量的未commit文件很容易讓你陷入困境,這將使你在沖突中難以回退。因此非常不鼓勵(lì)在使用git-merge時(shí)存在未commit的文件,建議使用git-stash命令將這些未commit文件暫存起來(lái),并在解決沖突以后使用git stash pop把這些未commit文件還原出來(lái)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-421029.html
到了這里,關(guān)于Git提交解決沖突的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!