将parameter passing给Git别名命令
我可以将parameter passing给Git命令的别名吗?
我在Gitconfiguration中有一些别名,如下所示:
rb1 = rebase -i HEAD~1 rb2 = rebase -i HEAD~2 rb3 = rebase -i HEAD~3 rb4 = rebase -i HEAD~4 ....
是否有可能使rb
别名,以便git rb <x>
适用于任何<x>
?
我试过这个别名:
rb = rebase -i HEAD~
但是然后例如git rb 8
不起作用。
如果你认为Git Faq部分“Git Aliases with argument” ,你可以这样做,但通过一个shell调用git:
[alias] rb = "!sh -c \"git rebase -i HEAD~$1\" -"
我还没有testing过,但如果你能通过一个论点,那就是做这件事的方法。
类似的解决scheme是使用shell函数 :
[alias] rb = "!f() { git rebase -i HEAD~$1; }; f"
重新分配所有提交
如果你只是想重新分配你的分支中新增的所有提交,那么从你从父分支中分支出来的时候,在你的configuration中只需要有下面的别名就更容易了:
rbi = !sh -c \"git rebase -i `git merge-base $1 HEAD`\" -
然后,如果您想重新绑定已添加到当前分支的所有提交,则可以运行:
git rbi parentBranch
这种方法使用了一个参数,而不是必须知道有多less提交返回,你只需提供分支名称,它会通过git merge-base
当前分支和父分支之间最近提交的提交
为什么这个,而不是git rebase -i parentBranch
你会这样做,而不是直接git rebase -i parentBranch
是,你可能不想处理合并冲突,直到后来的一点,甚至在一个提交中处理合并冲突,然后相同的冲突在另一个提交的同一行。 请参阅https://stackoverflow.com/a/31036645/444610