【问题标题】:Why changes in one branch can affect the other branch in git?为什么一个分支中的更改会影响 git 中的另一个分支?
【发布时间】:2016-08-24 06:03:46
【问题描述】:
  1. 我在master分支,
  2. 我承诺一切
  3. 然后我创建一个新分支“git checkout -b xxx”
  4. 然后我切换回master“git checkout master”
  5. 然后我在不使用“git rm”的情况下使用 master 分支删除所有内容
  6. 我签出到分支 xxx,在分支切换期间,它显示了一个长列表,每个文件的状态为“D”
  7. 然后我发现分支 xxx 也有一个空文件夹。

这不是问题,因为我可以使用“gt reset --hard HEAD”在分支 xxx 中恢复

我只是想知道为什么删除一个分支的行为会影响另一个分支?分支不是存储了所有东西吗?

【问题讨论】:

  • 删除后有提交吗?请出示您的git status

标签: git branch git-branch delete-file


【解决方案1】:

罢工>

  1. 然后我尝试使用“git merge xxx”合并我的一个分支,它说“已经更新到最新”

发生这种情况是因为您的 xxx 分支已经合并到 master 中,之后 xxx 没有任何变化。

  1. 我签出到分支xxx,在分支切换过程中,它显示了一个长列表,每个文件的状态都是'D'

您还没有提交更改并已切换到分支 xxx,因此您的所有更改都已移至此分支

我只是想知道为什么删除一个分支的行为会影响另一个分支?分支不是存储了所有东西吗?

是的。但是您在分支之间移动更改而不提交,因此您可以在每个“最新”分支中看到它。只需在某个地方提交它,它就会按预期运行

编辑: 删除文件与修改 git 的操作相同,因此您必须在 删除后提交更改,介于步骤 5 和 6 之间

【讨论】:

  • 我复制了它,好像我没有在分支xxx中提交,它只是指向它的父节点,所以它的父节点的任何更改都会反映在它自己的分支中。你介意更新你的推荐人吗?
  • @AlbertGao 你有点不对劲。当您对跟踪的文件进行更改(即删除它)时,它处于 stage 状态。然后,您可以移动到任何“最新”分支,这些更改将跟随您。然后你可以在任何“最新”分支上提交它,这个删除只会影响当前分支。 git分支中没有父子关系,一旦分支从“父”分支出来,它就与其他分支具有相同的级别状态。
  • 感谢您的澄清,所以这意味着当我更改分支时,“阶段状态”(我使用“git add”)中的任何内容都会跟随我?
  • @AlbertGao 不完全正确。仅当您的分支与目标分支保持同步时,它才有效。如果不是,您的“结帐”将被拒绝,直到您提交更改或回滚或存储它。
  • 好的,再进一步,假设我添加了一个文件,并在分支 A 和 B 中提交它,他们在每个分支中只有这个文件,然后我删除了这个没有在分支 A 中使用 'git rm' 的文件。那么,分支 B 是否仍然与分支 A 保持同步?
【解决方案2】:

如果您使用 Windows,为了更好地理解 git 分支,请尝试使用应用程序“Git Extensions”。这个应用程序显示了您的仓库中的所有分支,并且理解起来更简单。

【讨论】:

    猜你喜欢
    • 2018-05-08
    • 2014-10-07
    • 2011-07-15
    • 1970-01-01
    • 2019-03-17
    • 2020-06-03
    • 2020-04-12
    • 1970-01-01
    • 2020-02-05
    相关资源
    最近更新 更多