繁体   English   中英

git 别名:使用 arguments 提交并推送单个命令

[英]git alias: Commit with arguments & push in a single command

我试图说服我的同事离开 svn 并切换到 git。 我看到的一个问题是:必须分别执行 git 提交和 git 推送是复杂且容易出错的。 所以我在考虑一个 git ci 别名,它提交更改并将其推送到服务器。 我知道该怎么做,但是:

问题是,我想将 arguments 像 -m "" 提供给 git 提交。 所以

git ci -m "Cool change"

应该执行

git commit -m "Cool change" && git push

我该怎么做?

对于将 arguments 作为别名添加到多个命令之一的一般问题,git 别名的工作方式几乎与普通 *nix 别名完全相同。 唯一的区别是,除非 git 别名以! 假设git应该添加到命令之前。 任何与别名结合使用的 arguments 都在前面添加,要将参数插入到命令的记录器字符串中,您需要某种 shell 命令来解析 arguments。 例如,请参阅 arguments 这个问题

但特别是对于这个问题。 我同意其他人的观点,这是一件有用的事情。 如果您要在提交后立即推送,我假设每个用户都有自己的公共私有仓库(对其他人只读),以便推送“永远不会”失败,这意味着它的工作方式与 svn 非常不同; 他们必须从不同的回购等中提取。

如果您使用的是每个人都拉和推送到的公共“主仓库”,这将是一个更糟糕的主意,因为当推送不可避免地在某个时候失败时,他们被训练不使用“提交”然后“推送”但使用您的“ci”别名来提交和推送更改; 当他们尝试“重新提交”更改时,第二部分将不会运行,因为第一个命令没有以成功状态完成(但打印no changes added to commit (use "git add" and/or "git commit -a")代替)。

您可以像“git 成就”项目一样“隐藏”git。 这将使您能够添加类似于 git 命令的脚本。 您的基本流程应该是:

git pull --rebase

所以历史是线性的,就像他们在 SVN 的更新中习惯的那样。 但是你必须告诉他们他们可能需要摆脱冲突并告诉他们git add -A && git rebase --continue或别名。 我建议打开 rerere 并在团队中共享这些决议,并使用附加到您要为此制作的“别名”的脚本。

接下来,使用以下内容隐藏提交:

git add -A
git commit -m "message"
git pull --rebase
git push origin <current branch> # or set up tracking and omit the last 2 args

这些也应该在冲突中优雅地失败。

这是 git 成就的链接:

http://benjamin-meyer.blogspot.com/2010/03/git-achievements.html

尽管我认为从长远来看这对他们没有帮助,但我希望这对现在有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM