簡體   English   中英

如何檢查git merge是否確實在多倉庫bash腳本中進行了合並

[英]How to check if git merge really did a merge in a multi-repo bash script

因此,我正在制作一個腳本,該腳本從主遠程存儲庫中獲取最新標記,並將其與我的自定義更改合並到本地存儲庫中,並在一個腳本中將其更改為大約10-20個存儲庫。 合並部分看起來像這樣:

git fetch -q https://android.googlesource.com/platform/$REPO_PATH $TAG
git merge -q --no-ff FETCH_HEAD
if [ $? -eq 0 ]; then
    echo -e "$REPO_PATH merged succesfully"
else
    echo -e "\n$REPO_PATH has merge conflict(s)\n"
fi

這樣做的重點是我想知道所有提交都成功合並(並且需要推送到我的自定義git)。 但是有時回購協議已經是最新的(即,遠程回購協議中的新標簽沒有任何新提交),在這種情況下,即使沒有真正合並,也會顯示“成功合並”消息。

我只想知道哪些所有存儲庫都進行了合並,並需要推送到我的git,並且還想知道哪些所有存儲庫都發生了合並沖突(盡管這在我的腳本中很好用)。 我注意到的是,當git進行真正的合並時,它將打開nano詢問提交消息。 但是我不知道如何使用它來檢測合並。 提前致謝。

在開始合並之前,請存儲當前分支頭的哈希值:

git rev-parse HEAD

然后,在運行merge命令后再次檢查它,如果它們相同,則表明合並無法完成。

您還可以通過檢查狀態碼來確定狀態:

  | Match      | No Match                    |
  --------------------------------------------
0 | Up to Date | Merged                      |
  --------------------------------------------
1 | Conflict   | Something is horribly wrong |
  --------------------------------------------

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM