是否可以一次全部运行以下命令:
Git的捷径添加,commiting并推到远程回购
1. git add . 2. git commit -m "Message" 3. git push orgin/master
我知道前两个可以排序来参加这样的:
git commit -am "Message"
我想在本地提交而不必经过所有这些步骤后推送到远程。
是否可以一次全部运行以下命令:
Git的捷径添加,commiting并推到远程回购
1. git add . 2. git commit -m "Message" 3. git push orgin/master
我知道前两个可以排序来参加这样的:
git commit -am "Message"
我想在本地提交而不必经过所有这些步骤后推送到远程。
恕我直言,这将是可能的,只有当
唯一的程序员,这带走灵活性和强大的git给你。
如果是这样,
可以使用'alias'
所以这样的事情可以做的工作。
$ gitFunction() {
> git add .
> git commit -m "$1"
> git push origin }
$ alias git-all="gitFunction"
$ git-all 'commit message' //Will do everything for you.
或者
添加到您的.git/config文件。
[alias]
sync = "!sync() { git add . && git commit -m \"$1\" && git push $2; }; sync"
稍后,可以使用
$git sync 'commit message' remote_repo
但你不应该这样做!
为什么?
虽然离这个话题,我很愿意引用Principle of sufficient reason
没有什么是没有理由或原因
的Git,当由Linus设计了这些步骤分开,因为充足理由。如果你滥用它,那么你将无法获得它的全部潜力。所以最好有遵循最佳实践。
从你打算实现的目标来看,git只是一个工具,可以将你的源代码更改上传到远程服务器,这是错误的,并带走了git给你的所有好处。
为什么git add
不应该自动化?
git add可以帮助您添加未跟踪文件/将修改后的文件添加到暂存区域。稍后会进入您的提交。做git add .
将把所有东西都加入你的临时区域。大多数时候你会有某些东西,你不想承诺或在特定的提交中出现。
为什么git commit -m "Message"
不应该自动化?
提交消息解释了上次提交后发生的更改。提交消息可帮助其他程序员与您协作,以了解您所做的更改。所以你不应该在提交消息中写无谓感
为什么git push
不应该是自动的?
即使使用您目前的逻辑,如果您不是唯一对该项目有贡献的程序员,这一步应该会失败。所以在远程会有变化,你应该拉动。在最好的情况下,自动合并会发生,你可以直接做下一步的git push。但是,如果发生冲突,您需要解决冲突,然后提交更改,合并然后推送(顺便说一下,如果可能,不易实现自动化)。
此外,你不会推入同一个遥控器,你不会一直推动同一个分支。所有这些都是可变的,需要开发者的决定。
因此,试着理解Git,然后再对这些进行一下思考。
阅读Pro Git它是免费的,最好的书上的git。
你有正确的想法,但你没有正确设置别名,并且你没有正确执行它。另外,可以将别名参数化为接受提交消息,并且应该添加该消息。 – 2013-07-17 19:50:18
@Cupcake:谢谢。我首先想到只有一个静态提交消息。所以更侧重于告诉他/她打算什么不是一个好习惯。现在更新它。 :) –
我其实认为这将是非常有用的做一个别名,做什么原始的海报要求。也许修改它只是将当前分支推送到他的远程,而不是'master'分支。如果他在GitHub上工作,他的'origin'回购可能只是一个分叉,在这种情况下,它可以作为一个“私人”回购。 – 2013-07-18 01:44:09
你可以定义一个别名,它需要一个参数like it is described in details here
你的情况,我认为这应该工作
[alias]
acp = "!f() { git add . && git commit -m \"$1\" && git push origin/master; }; f"
,那么你可以把它叫做
git acp "commit message"
此外,检查出在Git文档中你可以用alias做什么样的技巧,这是非常有用的工具。
难道你不能把它们结合在脚本中吗? –