我正在使用主分支和另一个主题分支的git存储库.我已切换到主题分支并修改了一个文件.现在,如果我切换到主分支,则相同的文件显示为已修改.
例如:
git-build分支中的git状态:
# On branch git-build # Changes to be committed: # (use "git reset HEAD..." to unstage) # # modified: cvsup_current #
切换到主分支
[root@redbull builder_scripts (git-build)]# git co master M builder_scripts/cvsup_current Switched to branch "master"
主分支中的git状态
[root@redbull builder_scripts (master)]# git status # On branch master # Changes to be committed: # (use "git reset HEAD..." to unstage) # # modified: cvsup_current #
为什么文件在master分支中显示为已修改,即使它在git-build分支中被修改了?
我的理解是,分支是相互独立的,当我从一个分支转换到另一个分支时,变化不会从一个分支"溢出"到另一个分支.所以我显然在这里遗漏了一些东西.
有人拿到了线索吗?
为什么文件在master分支中显示为已修改,即使它在git-build分支中被修改了?
要记住的关键是文件没有在git-build分支中修改.它只在您的工作副本中进行了修改.
只有当您提交时,更改才会返回到您已检出的任何分支
如果要在对另一个分支执行某个分支时暂时将更改存储到一个分支,则可以使用该git stash
命令.这是使用git的惊人的小功能之一.示例工作流程
git stash #work saved git checkout master #edit files git commit git checkout git-build git stash apply #restore earlier work
git stash
存储一堆更改,以便您可以安全地存储多个检查点.您也可以给他们姓名/描述.全部使用信息在这里.
这是git的默认行为.
如果您愿意,可以使用-f标志结帐以执行"清理结账".
在您添加和提交之前,修改后的文件不会放入存储库中.如果切换回主题分支并提交文件,则它不会出现在主分支上.