当我处理某个功能时,我常常偶然发现代码库中可以改进的某些部分。我希望修复这些部分,但我不想在当前的功能分支中修复它们,因为它们只是相关的,如果有的话。
因此我会做以下事情:
git add -A
git commit -m "WIP. Be back soon..."
git checkout master
git pull origin master
git checkout -b quickfix-something
git commit -m "Fix this and that"
git push my_origin quickfix-something
hub pull-request -b origin:master -h my_origin:quickfix-something
(这只是GitHub特定公关开放)git checkout my_feature_branch
git reset --soft HEAD~1
但这需要很长时间!
相反,我想做这样的事情:
git back-and-forth --start "my_new_branch"
git back-and-forth --finish -m "Fix this and that"
我知道git-flow可以做到这一点,但是我不想把它全部带给我,除非我们按照我想要的方式进行最低限度的设置。另外,如果我没弄错的话,它不支持在GitHub上自动打开PR。
在我编写自己的脚本之前,我的问题是:
答案 0 :(得分:1)
编写自己的脚本似乎是#1的最佳选择。您可以将命令组组合为简单别名,以避免编写完整的脚本。
就#2而言,您可以使用git stash
删除一些步骤而不检查主数据。
git stash
git fetch
git checkout -b quickfix-something origin/master
git commit -am "Fix some stuff"
git push my_origin quickfix-something
hub pull-request ...
git checkout my_feature_branch
git stash pop
您的原始问题有10个命令。这会将2个命令缩短为8个。
以下是我在尝试消除命令时想到的另一个选项。它不会保存任何打字,确保与上述解决方案相比,生活变得更加复杂。请不要使用它。
替代精神错乱: rebase方法。 除非你喜欢混合使用LSD和链锯,否则不要将它用于实际。 这可能会在rebase上发生冲突,具体取决于相对于“改进”的上游变化。
git stash
git commit -am "Fix some stuff i need elsewhere"
git fetch
git rebase HEAD^ --onto origin/master
git push my_origin my_feature_branch:quickfix-something
hub pull-request ...
git reset --hard ORIG_HEAD^
git stash pop