3

我有两个分支,比如 B1 和 B2。我在 B2 中,我有暂存和未暂存的文件。

我希望在 B1 中提交暂存文件(当我git add编辑文件时我以为我在 B1 中)并且在 B2 中提交未暂存文件。

是否可以?如何?

4

3 回答 3

3

我敢肯定有一个更优雅的方式,但我能想出的是:

  1. 将暂存文件提交到 B2
  2. 将未分阶段的工作存放在 B2 上
  3. 切换到 B1,然后在 B1 中挑选 B2 的最新提交
  4. 切换回 B2,重置最新提交(--hard way)
  5. 在 B2 上暂存并提交隐藏的工作

编辑

这个问题有一个详细的答案,或多或少符合我的建议。

于 2013-01-31T08:46:35.660 回答
3

git stash在分支之间移动脏更改时非常强大。在您的情况下,您可以应用以下步骤:

  1. git stash --keep-index,这将只存储未暂存的文件
  2. git stash,这将隐藏其余的,即暂存文件
  3. 切换到 B1
  4. git stash pop, 暂存文件将移至 B1
  5. 切换到 B2
  6. git stash pop,未暂存的文件将移至 B2

之后,您可以单独提交每个分支中的更改。

于 2013-01-31T09:22:25.963 回答
1

如果修改后的暂存和未暂存文件通过切换到分支 B1 没有改变,您可以在不影响任何内容的情况下切换分支,然后您可以轻松提交文件并切换回 B2。

但是,如果您修改的文件在 B1 和 B2 之间更改,则无法切换分支。在这种情况下,您必须在切换分支之前存储您的更改。

  1. git stash --keep-index 存储和保留暂存文件
  2. git reset HEAD 取消暂存文件
  3. git stash 存储您之前暂存的文件
  4. git checkout B1 切换到B1分店
  5. git stash pop 取消存储并删除您的最后一个存储
  6. git commit -a 在 B1 上提交您之前暂存的文件
  7. git checkout B2 切换到B2分店
  8. git stash pop
  9. git commit -a 在 B2 上提交所有剩余的更改

小心这些命令!我不是 git pro!:-)

于 2013-01-31T09:15:56.323 回答