我正在尝试将一个提交分成五个提交。我的计划是使用git stash save -p
并存储除第一次提交之外的所有内容。然后提交更改,git stash apply
,存储除了我想要的第二次提交中的所有内容,等等。但是我的原始提交包含新添加的文件,看来我无法使用-p选择我想要存储的内容还可以同时使用-u存储未跟踪的文件。
$ git stash save -u -p "take 4"
Can't use --patch and --include-untracked or --all at the same time
有办法做到这一点吗?
答案 0 :(得分:4)
这是git add -p
的教科书用例。
执行以下操作:
git reset HEAD~
。这将“撤消”提交而不会丢失其更改。他们将在工作树中,未分期。git add -p
(并在此“阶段”中添加您想要的更改)。当您找到希望他们加入的补丁时,您需要git add
原始提交中添加的所有文件。git diff --staged
,查看您要提交的内容和/或git diff
,了解您 即将提交的内容。git commit
这将为您提供五个单独的提交。您也可以使用git add -i
代替git add -p
。此用例不是git stash
的预期用例。
这种方法的工作方式是利用Git的“临时区域”(也称为“索引”)。您的工作副本中有很多变化。您使用git add
“暂存”更改。然后git commit
(没有-a
标志)将只提交分阶段的更改。