如何自动化"提交和推送"流程?(GIT)

Icy*_*ame 18 git

我有一个git repo.在我在代码库中进行的每次重大更改之后,我所做的就是进入终端并执行一组命令.

git add .
git commit -m 'some message'
git push origin master
Run Code Online (Sandbox Code Playgroud)

每天都是一样的,这个过程很无聊.任何人都可以建议一种方法来以某种方式自动化这个过程?

我正在运行Linux Mint 14操作系统.

Icy*_*ame 19

您可以使用Bash脚本轻松自动执行此操作.

git add .

echo 'Enter the commit message:'
read commitMessage

git commit -m "$commitMessage"

echo 'Enter the name of the branch:'
read branch

git push origin $branch

read
Run Code Online (Sandbox Code Playgroud)

将上面的代码存储为.sh文件(比如说gitpush.sh)

因为你必须使这个sh文件成为可执行文件,你需要在终端中运行以下命令:

chmod +x gitpush.sh
Run Code Online (Sandbox Code Playgroud)

现在运行此.sh文件.

每次运行它时,它都会询问您提交消息和分支的名称.如果分支不存在或未定义推送目标,则git将生成错误.要阅读此错误,我已添加最后一条read语句.如果没有错误,那么git会生成pushed successfully消息类型.

  • 这是一个相当差的实现.首先,它缺少错误处理,因此即使命令失败,脚本也会保持卡车运输.其次,它提示用户超出需要.没有`-m`的`git commit`会打开一个编辑器,这是一个在编写有用的日志消息时更有用的环境.此外,您提示用户输入分支名称,这也是非常必要的.您可以使用`git symbolic-ref --short HEAD`的输出,或者更好的是,使其成为跟踪分支,以便没有其他选项的`git push`正常工作. (5认同)
  • Upvoted.可以使用`dmenu`或`slmenu`进行改进:`branch = $(git branch | cut -c3- | dmenu -p"选择要推送的分支:")`,因为分支名称实际上是'枚举'而不是一个任意的字符串. (2认同)
  • @Abizern要做并回答你自己的问题,这是很常见的事情.我想甚至还有一个徽章.人们比他的博客更有可能访问这里.如果他有一个. (2认同)

Fre*_*ihl 10

这不是很多要打字的事情,但是通过使用别名可以简化这个过程.

编辑$HOME/.gitconfig以添加一些快捷方式,例如git p用作别名git push origin master,使用:

[alias]
        p = push origin master
Run Code Online (Sandbox Code Playgroud)

如果您使用像bash这样的下降shell,则可以使用历史记录功能.您需要知道的一切都在bash的手册页中.

在这里阅读有关别名的更多信息

另一方面,git add .它可能不是最好的方法,因为它将文件夹中的每个文件添加到临时区域.最好git add -u只用于添加索引中已有的文件.


Abi*_*ern 9

作为一个大块每天承诺你的工作一次不是对版本控制的有效使用.制作反映代码库开发步骤(或存储库中正在跟踪的其他内容)的小型,常规,原子提交要好得多

使用shell脚本可能有点过分 - 大多数人使用别名来自动化git命令,作为shell别名或git别名.

在我的例子中,我使用shell别名 - 其中一些是:

alias gp='git push'
alias gc='git commit'
alias gca='git commit -a'
alias gcm='git commit -m'
alias gcam='git commit -am'
Run Code Online (Sandbox Code Playgroud)

所以对我来说你要问的是:

gcam "My commit message";gp
Run Code Online (Sandbox Code Playgroud)

这不是很多打字而且很难玩,我这样做和类似的git操作每天几十次(我知道 - 因为我检查我的shell历史).

使用小别名而不是脚本的原因是我可以灵活地使用不同的提交方式.如果我使用脚本,我会失去这种灵活性.

  • @mLstudent33 不需要。快捷方式是这样我不必输入`git push`,我可以在它后面添加其他选项,例如`gp origin master`或`gp origin main`或`gp origin <my-other-branch-name >` (2认同)

Alp*_*per 6

你可以在$HOME/.gitconfig或中使用别名和shell函数.git/config

[alias]
        newalias = "!f(){ git add . && git commit -m \"$1\"; git push origin master; };f"
Run Code Online (Sandbox Code Playgroud)

并称之为

$ git newalias "message ..."
Run Code Online (Sandbox Code Playgroud)


小智 6

windows的最佳解决方案:1)在系统上的任何位置创建一个文本文件,并根据需要更改字段后将以下代码插入其中

git add .

git commit -m "commitMessage"

git push url master

exit
Run Code Online (Sandbox Code Playgroud)

2) 保存并退出文件。

3) 将文件名更改为push.sh.

4) 使用 git powershell 导航到系统上的文件目录,然后使用以下命令chmod +x push.sh使您的文件可运行。

5)点击windows开始搜索Task Scheduler,点击创建新任务。

6)单击操作并浏览到您的push.sh文件,然后按确定。

7) 导航到触发器并修改调度时间。

现在您有了一个可以根据需要自动执行的脚本。