2013-03-25 130 views
2

我試圖將一個提交分成五個提交。我的計劃是使用git stash save -p,並在第一次提交時隱藏除我想要的內容之外的所有內容。然後提交更改git stash apply,除了我想要的第二次提交等內容之外,還存儲了所有內容。但是,我的原始提交包含新添加的文件,看起來我無法選擇要使用-p存儲的內容,並且還存儲了未跟蹤的內容文件同時使用-u。git stash保存-u和-p

$ git stash save -u -p "take 4" 
Can't use --patch and --include-untracked or --all at the same time 

有沒有辦法做到這一點?

回答

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標誌)將只提交分階段更改。

相關問題