我曾經使用git fetch -p加上一些 git 管道命令1的指示自動洗掉我的分支,并匹配[gone]模式然后洗掉匹配的分支。
我使用的一些存盤庫強制壓縮拉取請求,因此從未在本地進行合并提交,而且我無法鏈接新提交的內容和本地分支的內容。
前段時間改用了push.default current,功能確實比push.default upstreamor好simple。
幾天后,我注意到我的所有分支都不再被洗掉;這來自于推送時的事實,上游是“猜測”的,但從未設定過。
如果我手動設定分支的上游(通過 --set-upstream-to),那么我可以看到我的修剪腳本再次作業;但這違背了使用 push.default 設定為current的目的。
$ git switch -c my-branch
Switched to a new branch 'my-branch'
$ git push
Total 0 (delta 0), reused 0 (delta 0)
remote: ...
$ git branch -vv
main 3b3a404 [origin/main] Merge branch 'test-push' into 'main'
* my-branch 3b3a404 Merge branch 'test-push' into 'main'
$ git push -u origin my-branch
Branch 'my-branch' set up to track remote branch 'my-branch' from 'origin'.
Everything up-to-date
$ git branch -vv
main 3b3a404 [origin/main] Merge branch 'test-push' into 'main'
* my-branch 3b3a404 [origin/my-branch] Merge branch 'test-push' into 'main'
$ git push -d origin my-branch # this is done automatically after merging
$ git fetch -p
...
- [deleted] (none) -> origin/my-branch
$ git branch -vv
main 3b3a404 [origin/main] Merge branch 'test-push' into 'main'
* my-branch 3b3a404 [origin/my-branch: gone] Merge branch 'test-push' into 'main'
^... this is what helps me automatically trimming merged branches
有沒有辦法在不實際輸入的情況下將上游設定自動化到推送到分支?
我實際測驗了插入一個pre-push hook,但是如果這個分支不存在,那么set-upstream就不能作業;并且推后掛鉤不存在。
實際上,我的最終目標是洗掉合并壓扁的分支,但我認為沒有更好的候選者可以檢查遙控器是否消失以驗證;因為我沒有歷史改寫的保證
1: git for-each-ref --format '%(upstream:track) %(refname)' refs/heads | awk ' $1 == "[gone]" { sub("refs/heads/", "", $2) ; print $2 }'
uj5u.com熱心網友回復:
如果您push.default設定為current,則git push -u單獨(沒有... origin my-branch)將創建遠程分支并設定您的本地分支以跟蹤該遠程分支。
附加說明:%(refname:short)(in git for-each-ref --format) 將顯示您習慣的分支名稱
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/380609.html
