2013-07-17 96 views
0

是否可以一次全部运行以下命令:
Git的捷径添加,commiting并推到远程回购

 
1. git add . 
2. git commit -m "Message" 
3. git push orgin/master 

我知道前两个可以排序来参加这样的:

git commit -am "Message"

我想在本地提交而不必经过所有这些步骤后推送到远程。

+0

难道你不能把它们结合在脚本中吗? –

回答

5

恕我直言,这将是可能的,只有当

  • 您是促进
  • 您只使用一个本地资源库,推动修改远程

唯一的程序员,这带走灵活性和强大的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。

+1

你有正确的想法,但你没有正确设置别名,并且你没有正确执行它。另外,可以将别名参数化为接受提交消息,并且应该添加该消息。 – 2013-07-17 19:50:18

+0

@Cupcake:谢谢。我首先想到只有一个静态提交消息。所以更侧重于告诉他/她打算什么不是一个好习惯。现在更新它。 :) –

+0

我其实认为这将是非常有用的做一个别名,做什么原始的海报要求。也许修改它只是将当前分支推送到他的远程,而不是'master'分支。如果他在GitHub上工作,他的'origin'回购可能只是一个分叉,在这种情况下,它可以作为一个“私人”回购。 – 2013-07-18 01:44:09

1

你可以定义一个别名,它需要一个参数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做什么样的技巧,这是非常有用的工具。