git switch branch -如何更新master?



我有两个分支,testmaster

test中,我已经删除了文件。c,但在master中我没有。我当时正在测试分支上工作,我想切换回master来做一个快速的更改。

git checkout master
git pull origin master

这将我当前的分支设置为master,但没有像我期望的那样还原file.c。

git reset --hard HEAD

按我希望的那样重置存储库,但似乎不是正确的解决方案。

如果我切换分支,我如何让我的本地副本匹配我切换到的分支?我本来希望git pull那样做,但也许我误解了。

最可能的解释是当你在test分支上时,在删除file.c之后,你没有提交那个更改。一旦你提交了变更,该提交将在分支test上,然后当你切换到另一个仍然有该文件的分支时,如master,该文件将返回。

请注意,误解可以从你对这个问题的措辞中看出(顺便说一下,这是一个非常常见的误解):

test中,我已经删除了file.c,但在master中,我没有。

你实际做的,是从你的工作文件夹中删除file.c,而你有分支test签出。但是您还没有向任何分支提交该删除。

变化本质上是跟随你从一个分支到另一个分支,只是等待你对它做些什么。但它不会到处跟着你。如果你试图切换到一个file.c已经被修改过的分支,这将是一个冲突,所以Git会停止并告诉你在你继续之前对你的更改做一些事情(比如保存,提交,或者撤销)。

注:您使用的重置命令:

git reset --hard HEAD

基本上撤销所有挂起的更改。如果您正在进行其他更改,那么它们也会被撤消,并且可能永远丢失。如果您只想撤销对特定文件的挂起更改,您可以使用:

git checkout file.c
# or the newer:
git restore file.c

最新更新