【发布时间】:2013-01-31 08:38:28
【问题描述】:
我有两个分支,比如 B1 和 B2。我在 B2 中,我有暂存和未暂存的文件。
我希望在 B1 中提交暂存文件(当我 git add-ed 文件时我以为我在 B1 中),而在 B2 中提交未暂存文件。
有可能吗?怎么样?
【问题讨论】:
标签: git
我有两个分支,比如 B1 和 B2。我在 B2 中,我有暂存和未暂存的文件。
我希望在 B1 中提交暂存文件(当我 git add-ed 文件时我以为我在 B1 中),而在 B2 中提交未暂存文件。
有可能吗?怎么样?
【问题讨论】:
标签: git
git stash 在分支之间移动脏更改时非常强大。在您的情况下,您可以应用以下步骤:
git stash --keep-index,这只会存储未暂存的文件git stash,这将隐藏其余部分,即暂存文件git stash pop,暂存文件将移至 B1git stash pop,未暂存的文件将移至 B2之后,您可以单独提交每个分支中的更改。
【讨论】:
我确信有一种更优雅的方式,但我能想到的只是:
编辑
这个question 有一个详细的答案,或多或少符合我的建议。
【讨论】:
如果修改后的暂存文件和未暂存文件没有通过切换到 B1 分支而改变,您可以在不影响任何内容的情况下切换分支,然后您可以轻松提交文件并切换回 B2。
但是,如果您修改的文件在 B1 和 B2 之间发生更改,则无法切换分支。在这种情况下,您必须在切换分支之前存储您的更改。
git stash --keep-index 存储和保留暂存文件
git reset HEAD 取消暂存文件
git stash 存放您之前暂存的文件
git checkout B1 切换到 B1 分支
git stash pop 取消存储并删除您最后的存储
git commit -a 提交您之前在 B1 上暂存的文件
git checkout B2 切换到 B2 分支
git stash popgit commit -a 提交 B2 上的所有剩余更改em>
小心使用这些命令!我不是 git pro! :-)
【讨论】: