我的git repo中有不同的分支。我签出一个新分支并应用更改。当我结帐回我的主分支时,它仍然显示更改。类似地,当我在新分支中进行提交更改时,检查主分支,它再次将这些更改显示为暂存。
为什么即使我切换回我的分支regrid-more-flexible-times
,我的分支master
中的更改似乎也会显示(暂存或未暂停)?请参阅下面的插图。
$ git branch
* master
regrid-more-flexible-times
regrid-sst
$ git checkout regrid-more-flexible-times
Switched to branch 'regrid-more-flexible-times'
$ git status
# On branch regrid-more-flexible-times
nothing to commit (working directory clean)
$ vim regridworkflow.py
$ git status
# On branch regrid-more-flexible-times
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: regridworkflow.py
#
no changes added to commit (use "git add" and/or "git commit -a")
到目前为止一切顺利。我在我的分支regrid-more-flexible-times
中进行了更改。现在我需要回到master
来访问代码库而不做任何更改。
$ git checkout master
M mms/src/main/python/regridworkflow.py
Switched to branch 'master'
$ git status
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: regridworkflow.py
#
no changes added to commit (use "git add" and/or "git commit -a")
咦?为什么分支master
显示我在分支regrid-more-flexible-times
上所做的未分阶段更改?也许只是在我上台后才意识到差异?
$ git checkout regrid-more-flexible-times
M mms/src/main/python/regridworkflow.py
Switched to branch 'regrid-more-flexible-times'
$ git add regridworkflow.py
$ git status
# On branch regrid-more-flexible-times
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: regridworkflow.py
#
$ git checkout master
M mms/src/main/python/regridworkflow.py
Switched to branch 'master'
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: regridworkflow.py
#
...为什么分支master
会显示我在分支regrid-more-flexible-times
上暂停的更改?
我的目标是能够在分支regrid-more-flexible-times
上进行更改,但能够签出没有这些更改的master
分支。为什么上面的工作流程没有这样做,我应该怎样做呢?
答案 0 :(得分:4)
我在我的分支
regrid-more-flexible-times
中进行了更改。
不,你已经改变了你的副本。
为什么分支
master
会显示我在分支regrid-more-flexible-times
上进行的更改?
每个工作副本只有一个临时区域。每个分支都不存在它们。请参阅git stash
,了解如何在不提交更改的情况下保存更改。
答案 1 :(得分:0)
git checkout&lt; branch&gt;
要准备工作,请切换到它 通过更新工作树中的索引和文件,以及通过 将HEAD指向分支。 对文件中的本地修改 保留工作树,以便它们可以提交到&lt; branch&gt;。
这就是您结帐主数据时未分期更改的原因。
您可能希望将更改提交到分支然后结帐主服务器,或使用git stash
保存更改而不提交更改。