提交到另一个分支而不触及未分级的文件

时间:2013-01-31 08:38:28

标签: git

我有两个分支,比如B1和B2。我在B2,我有分阶段和未分阶段的文件。

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

有可能吗?怎么样?

3 个答案:

答案 0 :(得分:3)

我确信这是一种更优雅的方式,但我能想到的只有:

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

    修改

    这个question有一个详细的答案,或多或少地表达了我的建议。

答案 1 :(得分: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
  7. 之后,您可以单独提交每个分支中的更改。

答案 2 :(得分: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
  10. 上的所有剩余更改

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