为什么在切换分支之前只进行正在进行的工作是不够的?我为什么还要承诺?

时间:2016-05-25 16:31:52

标签: git version-control branch git-index

我正在处理一个分支中的一些文件(称为big_new_feature)。文件尚未准备好提交,但我需要切换分支以在另一个分支(称为stable_branch)中快速修复。为什么我不能在big_new_feature暂存文件并查看stable_branch?为什么在切换到big_new_feature之前我必须在stable_branch中实际提交文件?

或者我误解了?

2 个答案:

答案 0 :(得分:0)

切换分支时,跟踪文件的内容将发生变化,以反映目标分支的提示。

如果工作目录和阶段中的内容与目标分支状态不冲突,则不需要提交,您可以根据需要切换分支。

但是,我猜你看到了这个错误信息:

  

错误:您对以下文件的本地更改将被覆盖   通过结帐

这是因为当您播放内容时,它仍然存在于文件系统上的文件状态中。

如果您在舞台上的内容与其他分支的内容相冲突,那么由于冲突,Git无法继续。 Git不知道哪一方应该获胜。

所以,我的建议是做以下其中一项:

  • 创建一个单独的主题分支来保存此临时工作
  • 存储您的更改并稍后重新应用
  • 即使您还没有准备好也要继续...在推送之前,您可以随时修改或修改您的提交

答案 1 :(得分:0)

您不必提交提交。如果其他分支还没有更改了这些文件,那么您可以让它们暂存。虽然你可能不想这样做,因为 - 好吧,因为现在他们将在另一个分支上进行,听起来你不想让他们提交另一个分支。

% vi foo.c
% git add foo.c
% git checkout branch
M       foo.c
Switched to branch 'branch'
% git status
On branch branch
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   foo.c

所以很有可能这样做,但现在foo.c将在另一个分支上提交,你刚刚切换到的那个分支以便修复错误。这几乎肯定不是你想要的。

我不确定你为什么反对在这种情况下做出承诺。这当然是应对的最远,最容易的情况,而不是藏匿(尽管这也是一种可能性)。

如果你担心自己现在有一个半生不熟的&#34;正在进行中&#34;提交,然后只需commit --amend你的下一次提交来清理它。或者在推动之前压缩提交。