我有一個團隊成員使用 GitHub 桌面,無論何時他們提交和推送他們的更改,而不是我們收到的提交訊息
"Merge branch <thebranch> of https://github.com/<our_account>/<our_repo> into <thebranch>"
它是什么意思,但最重要的是為什么要生產它?
我的第一個想法是,當他們不添加提交訊息但會中止提交時,可能會發生這種情況,不是嗎?訊息本身對我來說沒有意義-如何將分支合并到自身中?我認為這里問題的根源是我在命令列上使用 Git 而我的團隊使用 GitHub UI(我現在正在學習!)。提前致謝
uj5u.com熱心網友回復:
這里真的有兩個問題需要解決。
首先,這個訊息是從哪里來的?這是創建“合并提交”時生成的默認訊息 - 由git merge命令或某些圖形工具中的等效項產生的具有兩個(或更多)父項的提交。請注意,如果您在合并期間發生沖突,git 會記住合并的詳細資訊,直到您準備好運行git commit(或圖形等效),因此您不一定會在運行合并后立即看到這一點。
其次,為什么它似乎正在將分支合并到自身中?答案是,如果你仔細閱讀它,它不是,它合并了兩個碰巧具有相同名稱的分支:
- 分公司
<thebranch>的https://github.com/<our_account>/<our_repo>... - ... 進入
<thebranch>
也就是說,它正在將 Github 上的一個分支合并到一個本地分支中;分支碰巧具有相同的名稱,但 git 并不真正關心名稱。
為什么會發生這種情況?可能是因為git pull命令給出了一些無用的建議:
你的分支和......已經分歧......(使用“git pull”將遠程分支合并到你的分支中)
git pull 的意思是你的本地分支有變化,而你試圖推送到的分支有不同的變化。如果這是一個共享分支,建議可能有意義:使用git pullbeforegit push會將其他人的更改合并到您的分支中。然后,您將解決所有沖突,并創建一個提交,并帶有與您看到的類似的訊息。
什么是不是非常有幫助,不過,是經常要扔掉的遠程分支的變化,因為他們以前的版本,你不需要任何更多的-你已經“改寫歷史”與git commit --amend,git rebase或類似. 對于這些情況,您真正想要的是git push --force-with-lease- 但 git 不建議這樣做,因為它會洗掉服務器上的內容,因此您需要先確定自己知道自己在做什么。
在這種情況下可能發生的事情是:
- 您嘗試推送,并收到“分支已發散”錯誤
- 你試圖拉動,但發生了沖突
- 你沒有中止合并,但忘了你已經開始了
- 您提交了一些更改,然后 git 繼續創建了掛起的合并提交(有兩個父項,默認訊息如圖所示)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/354946.html
上一篇:Git使用一個命令撤消對多個檔案(但不是全部)的未提交更改,并將未跟蹤的檔案混入
下一篇:合并來自“嵌入式”上游專案的更改
