這是我在觀看此內容後一直在嘗試的工作流程Git/TFS 視頻。
所以我從我的開發分支創建一個分支
$ git checkout -b my-feature-branch development
然後我進行更改、暫存、提交並將變更推送到 TFS 伺服器。
現在,當我進入 TFS Web 介面時,我的伺服器上有一個「my-feature-branch」。
我點擊“New Pull Request”並建立一個 PR 進行開發,並接受此 PR。此過程會刪除 TFS 伺服器上的“my-feature-branch”,但它仍保留在我的本機上。
此時一切都很好。
回到我的本機機器,切換出功能分支:
git checkout development
刪除本機分支
git branch -d my-feature-branch
warning: deleting branch 'my-feature-branch' that has been merged to
'refs/remotes/origin/test-pr', but not yet merged to HEAD. Deleted branch my-feature-branch (was d525adc).
獲取最新資訊 -
git pull -p
有時,我可能在刪除之前進行拉取,但刪除失敗,我必須強制刪除它。
git branch -D my-feature-branch
我的工作流程有問題嗎?我應該在刪除之前進行某種合併嗎?為什麼 git 不知道功能分支在拉取後已作為拉取請求合併並讓我刪除而不出錯?
答案1
為什麼 git 不知道功能分支在拉取後已作為拉取請求合併並讓我刪除而不出錯?
從您提供的資訊很難得知,但這裡有兩個猜測:
您確定要在刪除本機功能分支之前拉取嗎?如果不是,那麼主分支當然不會有新的提交。
您如何合併功能分支?使用常規合併還是擠壓合併?常規合併將功能分支提交合併到主分支中,以便 Git 知道它們都在那裡。壁球合併,OTOH,包含了所有內容來自功能分支,但透過建立新的提交來實現,並且 Git 不會追蹤新的壓縮提交是從功能分支提交生成的事實,因此它不認為功能分支已合併。
(我強烈推薦不是使用擠壓合併。像標準合併一樣,保留原始提交有助於讓 Git 更好地工作。