我拉了一个开发分支在我的测试服务器上进行测试,当我切换回主分支时,似乎开发分支已自动合并到主分支中。
首先,我拉取了 dev 分支,然后检查了它:
$ git status
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
$ git pull origin dev_branch
...
$ git checkout dev_branch
branch 'dev_branch' set up to track 'origin/dev_branch'.
Switched to a new branch 'dev_branch'
然后我进行了测试,发现我还有更多的改变要做。尝试将代码库返回到主分支:
$ git checkout main
Switched to branch 'main'
Your branch is ahead of 'origin/main' by 6 commits.
(use "git push" to publish your local commits)
$ git status
On branch main
Your branch is ahead of 'origin/main' by 6 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
这是预期的吗?如果没有,在合并之前测试开发代码的最佳方法是什么?
问题是,当您拉取
dev
时,您要求 Git 将其合并到本地沙箱中的 main
中。
您应该做的是一个简单的
git fetch
:在远程获取新工作,而不合并任何内容。获取后,您可以查看历史记录并决定您想要做什么,这可能是重新调整您的本地工作,或者(在我看来很少)实际合并。
现在,
git status
表示您的工作树在开始之前是干净的,这意味着您可以执行有时是危险的命令:硬重置。
git checkout main
git reset --hard origin/main
这两个命令将再次签出
main
,并丢弃所有尚未提交的本地工作(您没有这样的工作,所以没关系)并将main
重置为origin/main
。