当前位置:  开发笔记 > 开发工具 > 正文

git分支中的已修改文件正在溢出到另一个分支中

如何解决《git分支中的已修改文件正在溢出到另一个分支中》经验,为你挑选了4个好方法。

我正在使用主分支和另一个主题分支的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分支中被修改了?

我的理解是,分支是相互独立的,当我从一个分支转换到另一个分支时,变化不会从一个分支"溢出"到另一个分支.所以我显然在这里遗漏了一些东西.

有人拿到了线索吗?



1> Gareth..:

为什么文件在master分支中显示为已修改,即使它在git-build分支中被修改了?

要记住的关键是文件没有在git-build分支中修改.它只在您的工作副本中进行了修改.

只有当您提交时,更改才会返回到您已检出的任何分支


"它只在您的工作副本中进行了修改"< - 不,它也在索引中进行了修改,即更改已经上演

2> Peter Burns..:

如果要在对另一个分支执行某个分支时暂时将更改存储到一个分支,则可以使用该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存储一堆更改,以便您可以安全地存储多个检查点.您也可以给他们姓名/描述.全部使用信息在这里.



3> Marko..:

这是git的默认行为.

如果您愿意,可以使用-f标志结帐以执行"清理结账".


请注意,这并不会将更改保留在您要离开的分支或任何内容之上.这将丢弃未提交的更改(除非文件未跟踪).
这是非常罕见的情况,你想要使用`git checkout -f`,因为它会立即,不可逆转,并且不会提示丢弃任何未提交的更改.git checkout的工作原理是有道理的,我建议阅读下面的Gareth评论.

4> Greg Hewgill..:

在您添加提交之前,修改后的文件不会放入存储库中.如果切换回主题分支并提交文件,则它不会出现在主分支上.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有