作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当我处理一项功能时,我经常会偶然发现代码库中可以改进的某些部分。我想修复这些部分,但我不想在当前功能分支中修复它们,因为它们只是相关,如果有的话。
因此我做了以下事情:
git add -A
git commit -m "WIP。很快回来..."
git checkout master
git pull origin master
git checkout -b quickfix-something
git commit -m "修复这个那个"
git push my_origin quickfix-something
hub pull-request -b origin:master -h my_origin:quickfix-something
(这只是 GitHub 特定的 PR 开放)git checkout my_feature_branch
git reset --soft HEAD~1
但这需要很长时间!
相反,我想做这样的事情:
git 来回 --start "my_new_branch"
git back-and-forth --finish -m "Fix this and that"
我知道 git-flow 会做类似的事情,但我不想承担它的所有负担,除非有办法按照我想要的方式对其进行最低限度的设置。另外,如果我没记错的话,它不支持在 GitHub 上自动打开 PR。
在我编写自己的脚本来做同样的事情之前,这是我的问题:
最佳答案
编写自己的脚本似乎是 #1 的最佳选择。您可以将命令组组合为简单的别名,以避免编写完整的脚本。
就 #2 而言,您可以通过使用 git stash
而不是 check out master 来消除一些步骤。
git 存储
git fetch
git checkout -b quickfix-something origin/master
git commit -am "修复一些东西"
git push my_origin quickfix-something
集线器 pull 请求 ...
git checkout my_feature_branch
git stash pop
您的原始问题有 10 个命令。这将它从 2 个命令缩短为 8 个。
下面是我在尝试消除命令时想到的另一个选项。它不会节省任何打字,而且与上述解决方案相比,肯定会使生活变得更加复杂。请不要使用它。
Alternative insanity: rebase 方法。 除非您喜欢混合使用 LSD 和电锯,否则不要将其用于真实用途。这可能会在 rebase 上发生冲突,具体取决于与您的“改进”相关的上游更改。
git 存储
git commit -am "修复一些我在别处需要的东西"
git fetch
git rebase HEAD^ --onto origin/master
git push my_origin my_feature_branch:quickfix-something
集线器 pull 请求 ...
git reset --hard ORIG_HEAD^
git stash pop
关于Git 分支 : There and Back Again,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24862317/
我是一名优秀的程序员,十分优秀!