这是我在观看此视频后尝试的工作流程Git/TFS 视频。
所以我从我的开发分支创建一个分支
$ git checkout -b my-feature-branch development
然后我进行更改、暂存、提交并将更改推送到 TFS 服务器。
现在,当我转到 TFS Web 界面时,服务器上有一个“my-feature-branch”。
我点击“新拉取请求”并创建 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 就知道它们都在那里。另一方面,压缩合并则合并所有内容来自功能分支,但通过创建新的提交来实现,并且 Git 不会跟踪新的压缩提交是从功能分支提交生成的事实,因此它不认为功能分支已合并。
(我强烈推荐不是使用压缩合并。保留原始提交(如标准合并一样)有助于使 Git 更好地工作。