3 回答

TA貢獻1785條經驗 獲得超8個贊
我知道這個問題已經快3年了,但我問自己同樣的問題并沒有找到任何現成的解決方案。所以,我自己創建了一個自定義git命令shell腳本。
在這里,git-ffwd-update
腳本執行以下操作...
它發出一個
git remote update
來獲取lates revs然后用于
git remote show
獲取跟蹤遠程分支的本地分支列表(例如可以使用的分支git pull
)然后它檢查
git rev-list --count <REMOTE_BRANCH>..<LOCAL_BRANCH>
遙控器后面的本地分支提交的數量(反之亦然)如果本地分支提前1或更多提交,則不能快速轉發,需要手動合并或重新綁定
如果本地分支提前0提交,后面提交1個或多個提交,則可以快速轉發
git branch -f <LOCAL_BRANCH> -t <REMOTE_BRANCH>
該腳本可以像:
$ git ffwd-updateFetching origin branch bigcouch was 10 commit(s) behind of origin/bigcouch. resetting local branch to remote branch develop was 3 commit(s) behind of origin/develop. resetting local branch to remote branch master is 6 commit(s) behind and 1 commit(s) ahead of origin/master. could not be fast-forwarded
完整的腳本應該保存為git-ffwd-update
并且需要在PATH
。
#!/bin/bashmain() { REMOTES="$@"; if [ -z "$REMOTES" ]; then REMOTES=$(git remote); fi REMOTES=$(echo "$REMOTES" | xargs -n1 echo) CLB=$(git rev-parse --abbrev-ref HEAD); echo "$REMOTES" | while read REMOTE; do git remote update $REMOTE git remote show $REMOTE -n \ | awk '/merges with remote/{print $5" "$1}' \ | while read RB LB; do ARB="refs/remotes/$REMOTE/$RB"; ALB="refs/heads/$LB"; NBEHIND=$(( $(git rev-list --count $ALB..$ARB 2>/dev/null) +0)); NAHEAD=$(( $(git rev-list --count $ARB..$ALB 2>/dev/null) +0)); if [ "$NBEHIND" -gt 0 ]; then if [ "$NAHEAD" -gt 0 ]; then echo " branch $LB is $NBEHIND commit(s) behind and $NAHEAD commit(s) ahead of $REMOTE/$RB. could not be fast-forwarded"; elif [ "$LB" = "$CLB" ]; then echo " branch $LB was $NBEHIND commit(s) behind of $REMOTE/$RB. fast-forward merge"; git merge -q $ARB; else echo " branch $LB was $NBEHIND commit(s) behind of $REMOTE/$RB. resetting local branch to remote"; git branch -f $LB -t $ARB >/dev/null; fi fi done done}main $@

TA貢獻1813條經驗 獲得超2個贊
您描述的行為pull --all
完全符合預期,但不一定有用。該選項被傳遞給git fetch,然后從所有遙控器獲取所有引用,而不僅僅是所需的引用; pull
然后合并(或在你的情況下,rebase)適當的單個分支。
如果你想查看其他分支機構,你將不得不檢查它們。是的,合并(和重新定位)絕對需要一個工作樹,所以如果不檢查其他分支就無法完成。如果你愿意的話,你可以把你描述的步驟包裝成一個腳本/別名,雖然我建議加入這些命令,&&
這樣如果其中一個失敗了,它就不會嘗試使用。
- 3 回答
- 0 關注
- 5245 瀏覽
添加回答
舉報