nh2*_*nh2 11 git git-rebase git-commit
我想在我已经完成并想要发送到上游项目的分支上签署所有提交(例如,通过GitHub上的pull请求).
我发现的推荐方法是使用
git rebase -i [base-commit]
# Set all commits to "edit"
git commit --amend --signoff # do this for all commits
Run Code Online (Sandbox Code Playgroud)
如何在一个非交互式命令中自动执行此操作?
在Git 2.13(2017年第二季度)中,不再git commit --amend --signoff需要“ ”:
请参阅Giuseppe Bilotta()提交9f79524(2017年4月18日),提交0fb3c4f,b7cc705(2017年4月15日)。(通过合并JUNIOÇ滨野- -在提交768c7cb 4月26日2017)Oblomov
gitster
rebase:将--[no-]signoff选项传递给git am这样可以轻松在提交之前注销整个补丁集。
该git rebase手册页现在包括:
--signoff:
Run Code Online (Sandbox Code Playgroud)
此标志传递给'
git am',以注销所有重新提交的提交。
与该--interactive选项不兼容。
更新(一年后,2018年5月)“ git rebase”已经学会了--signoff使用“ am”(但不是“ --preserve-merges”)后端时使用“ ”选项。
rebase:扩展--signoff支持允许
--signoff与--interactive和一起使用--merge。
在交互模式下,仅标记为被选择,编辑或改写的提交将被注销。此补丁的主要动机是允许一个人运行'
git rebase --exec "make check" --signoff',这在准备发布的补丁系列时非常有用,并且比使用另一个--exec命令进行签名更方便。这种变化也使
--root不--onto与工作--signoff以及(--root与--onto已经支持)。
它也更强大:
rebase -p:如果--signoff给出错误
rebase --preserve-merges不支持--signoff这样的错误输出,而不仅仅是默默地忽略它,以便用户知道提交不会被注销。
它转变为git别名可以很好地做到这一点.投入你的~/.gitconfig:
[alias]
# Usage: git signoff-rebase [base-commit]
signoff-rebase = "!GIT_SEQUENCE_EDITOR='sed -i -re s/^pick/e/' sh -c 'git rebase -i $1 && while git rebase --continue; do git commit --amend --signoff --no-edit; done' -"
Run Code Online (Sandbox Code Playgroud)
这里也是一个要点.
你就像使用它一样git rebase; 在picks的自动翻转到edit使用S sed并--no-edit确保不要打开编辑器为每一个承诺.
| 归档时间: |
|
| 查看次数: |
3170 次 |
| 最近记录: |