0

是否可以一次运行以下命令:

1. 混帐添加。
2. git commit -m "消息"
3. git push 源/主

我知道前两个可以像这样加入:

git commit -am "消息"

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

4

2 回答 2

5

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

  • 你是唯一贡献的程序员
  • 您仅使用一个本地存储库将更改推送到远程

这剥夺了 git 给你的灵活性和力量。

如果是这样,

你可以使用“别名”

所以像这样的东西可以完成这项工作。

$ 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

但你不应该这样做!!

为什么?

虽然题外话,但我很想引用充分理由原则

没有什么是无缘无故的

由 Linus 设计的 Git 有充分的理由将这些步骤分开。如果您滥用它,那么您将无法充分发挥它的潜力。所以最好遵循最佳实践。

从您打算实现的目标来看,您将 git 视为将源代码更改上传到远程服务器的工具,这是错误的,并带走了 git 给您的所有好处。

为什么git add不应该自动化?

git add 帮助您添加未跟踪的文件/将修改的文件添加到暂存区。稍后将进入您的提交。这样做git add .会将所有内容添加到您的暂存区域。大多数时候你会有一些东西,你不想提交或在特定的提交中出现。

为什么git commit -m "Message"不应该自动化?

提交消息解释了上次提交后发生的更改。提交消息可帮助与您合作的其他程序员了解您所做的更改。所以你不应该在提交信息中写出无意义的东西

为什么git push不应该自动化?

即使按照您目前的逻辑,如果您不是唯一为该项目做出贡献的程序员,此步骤也应该失败。所以远程会有变化,你应该拉。在最好的情况下会发生自动合并,您可以直接执行 git push 作为下一步。但是如果发生冲突,您需要解决冲突,然后提交更改,合并然后推送(顺便说一下,如果可能的话,这不容易自动化)。

此外,您不会推送到同一个遥控器,也不会一直推送同一个分支。所有这些事情都是可变的,需要开发人员的决定。

所以,试着理解 Git,然后再考虑这些。

阅读Pro Git,它是关于 git 的免费和最佳书籍。

于 2013-07-17T19:44:10.367 回答
1

你可以定义一个别名,它接受一个参数,就像这里详细描述的那样

在你的情况下,我相信这应该有效

[alias]
    acp = "!f() { git add . && git commit -m \"$1\" && git push origin/master; }; f"

那么你可以调用它

 git acp "commit message"

此外,请查看Git 文档中的别名可以使用哪些技巧,这是非常有用的工具。

于 2013-07-17T19:54:42.323 回答