Hav*_*veF 66 git git-config git-alias
我可以将参数传递给Git命令的别名吗?
我在Git配置中有一些别名,如下所示:
rb1 = rebase -i HEAD~1
rb2 = rebase -i HEAD~2
rb3 = rebase -i HEAD~3
rb4 = rebase -i HEAD~4
....
Run Code Online (Sandbox Code Playgroud)
是否可以制作rb
别名,以便git rb <x>
适用于任何<x>
?
我试过这个别名:
rb = rebase -i HEAD~
Run Code Online (Sandbox Code Playgroud)
但后来例如git rb 8
不起作用.
Von*_*onC 92
如果你考虑Git Faq部分"Git Aliases with argument",你可以这样做,但是通过shell调用git:
[alias]
rb = "!sh -c \"git rebase -i HEAD~$1\" -"
Run Code Online (Sandbox Code Playgroud)
我还没有测试过,但是如果你能通过一个论证,那就是这样做的方法.
类似的解决方案是使用shell函数:
[alias]
rb = "!f() { git rebase -i HEAD~$1; }; f"
Run Code Online (Sandbox Code Playgroud)
自分支以来重新调整所有提交
如果您只想重新设置分支中所有新提交的基础,那么自从您从父分支分支以来,在您的配置中只使用以下别名会更容易:
rbi = !sh -c \"git rebase -i `git merge-base $1 HEAD`\" -
Run Code Online (Sandbox Code Playgroud)
然后,如果您想重新设置您添加到当前分支的所有提交,您可以简单地运行:
git rbi parentBranch
Run Code Online (Sandbox Code Playgroud)
这种方法使用一个参数,但不必知道要返回多少次提交,您只需提供分支名称,它就会通过以下方式找出当前分支和父分支之间共享的最新提交 git merge-base
为什么这样,而不是 git rebase -i parentBranch
您这样做而不是直接这样做的原因git rebase -i parentBranch
是您可能不想在稍后处理合并冲突,甚至不想在一次提交中处理合并冲突,然后在同一行中处理相同的冲突另一个提交。见/sf/answers/2172565181/
归档时间: |
|
查看次数: |
19729 次 |
最近记录: |