我有一个git repo,在每次对代码库做重大修改后,我会去终端执行一组命令.
git add . git commit -m 'some message' git push origin master
这些每天都是一样的,过程相当无聊。有没有人能建议一种方法,以某种方式自动化这个过程?我运行的是Linux Mint 14操作系统。
xu3bshqb1#
您可以使用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
将上述代码存储为.sh文件(例如gitpush.sh)由于您必须使此sh文件成为可执行文件,因此需要在终端中运行以下命令一次:
.sh
gitpush.sh
chmod +x gitpush.sh
现在运行这个.sh文件。每次运行它时,它都会询问提交信息和分支的名称。如果分支不存在或者推送目的地没有定义,那么git会生成一个错误。为了读取这个错误,我添加了最后一条read语句。如果没有错误,那么git会生成pushed successfully type-of消息。
read
pushed successfully
flvtvl502#
每天提交一次你的工作并不是版本控制的一种有效的使用,更好的方法是进行小的、有规律的、原子的提交,这些提交反映了代码库(或者存储库中正在跟踪的任何东西)的开发步骤。使用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'
所以你要我做的就是:
gcam "My commit message";gp
这不是很多的打字,也不无聊,我每天都要做很多类似的git操作(我知道--因为我会检查我的shell历史记录)。使用小别名而不是脚本的原因是我可以灵活地使用不同的提交方式,如果我使用脚本,我将失去这种灵活性。
sr4lhrrt3#
这并不是一个很大的打字工作,但可以通过使用别名来简化这个过程。编辑$HOME/.gitconfig以添加一些快捷方式,例如,要将git p用作git push origin master的别名,请用途:
$HOME/.gitconfig
git p
git push origin master
[alias] p = push origin master
如果你使用的是像bash这样的descent shell,你可以使用history特性,你需要知道的一切都在bash的man页面中。了解更多关于别名here的信息顺便说一句,git add .可能不是最好的方法,因为它会将文件夹中的每个文件都添加到临时区域。最好使用git add -u只添加那些已经在索引中的文件。
git add .
git add -u
hxzsmxv24#
可以在$HOME/.gitconfig或.git/config中同时使用别名和shell函数
.git/config
[alias] newalias = "!f(){ git add . && git commit -m \"$1\"; git push origin master; };f"
并称之为
$ git newalias "message ..."
9lowa7mx5#
Windows的最佳解决方案:1)在系统上的任意位置创建一个文本文件,并根据需要更改字段后将以下代码插入其中
git add . git commit -m "commitMessage" git push url master exit
2)保存并退出文件。3)将文件名更改为push.sh。4)使用git powershell导航到系统上的文件目录,然后使用以下命令chmod +x push.sh使文件可运行。5)单击Windows开始并搜索Task Scheduler,然后按创建新任务。6)单击操作并浏览到您的push.sh文件,然后按“确定”。7)导航到触发器并修改计划时间。现在您有了一个脚本,它可以根据您的需要自动执行。
push.sh
chmod +x push.sh
Task Scheduler
juud5qan6#
对于我的工作流来说,git“adds”和git“commits”是有目标的和原子的,所以把它们合并到一个批量命令中是没有用的。然而,每天,我都要推送到许多不同仓库中的许多不同分支,这通常遵循“git push origin {branchname}"的模式。这 * 可以 * 在shell脚本中自动完成:
parse_git_branch() { git symbolic-ref HEAD 2>/dev/null | cut -d"/" -f 3 } git push origin $(parse_git_branch)
然后,您可以添加一个bash别名(例如,“git-push”)来调用这个脚本,它将在您所在的任何仓库上有效地运行“git push origin {currently checked out分支}”。
qrjkbowd7#
我的bash脚本将选择您当前所在的分支,并拉取以避免来自同一分支的冲突,然后推送。如果您要在多个分支之间/跨多个分支工作,此脚本将非常有用。
git add . read -p "Enter commit message: " commit_message git commit -m "$commit_message" BRANCH=$(git describe --contains --all HEAD) git pull --rebase origin "$BRANCH" git push origin "$BRANCH"
使用方法:
qyuhtwio8#
下面是一个简单的bash脚本
#!/bin/bash git add . echo "Insert your commit >" read -r commit git commit -m commit echo "Pull or Push >" read -r answer if [[ $answer == "pull" ]]; then git pull echo "Done with pulling, do you wanna push your files (y/n)?" read -r pushing if [[ $pushing == "y" ]]; then git push else exit; fi elif [[ $answer == "push" ]]; then git pull fi
将其保存为.sh扩展名,然后保存为+x以获得执行权限
+x
8条答案
按热度按时间xu3bshqb1#
您可以使用Bash脚本非常容易地自动完成此操作。
将上述代码存储为
.sh
文件(例如gitpush.sh
)由于您必须使此sh文件成为可执行文件,因此需要在终端中运行以下命令一次:
现在运行这个
.sh
文件。每次运行它时,它都会询问提交信息和分支的名称。如果分支不存在或者推送目的地没有定义,那么git会生成一个错误。为了读取这个错误,我添加了最后一条
read
语句。如果没有错误,那么git会生成pushed successfully
type-of消息。flvtvl502#
每天提交一次你的工作并不是版本控制的一种有效的使用,更好的方法是进行小的、有规律的、原子的提交,这些提交反映了代码库(或者存储库中正在跟踪的任何东西)的开发步骤。
使用shell脚本可能有些矫枉过正--大多数人使用别名来自动化git命令,无论是shell别名还是git别名。
在我的例子中,我使用shell别名-其中有几个是:
所以你要我做的就是:
这不是很多的打字,也不无聊,我每天都要做很多类似的git操作(我知道--因为我会检查我的shell历史记录)。
使用小别名而不是脚本的原因是我可以灵活地使用不同的提交方式,如果我使用脚本,我将失去这种灵活性。
sr4lhrrt3#
这并不是一个很大的打字工作,但可以通过使用别名来简化这个过程。
编辑
$HOME/.gitconfig
以添加一些快捷方式,例如,要将git p
用作git push origin master
的别名,请用途:如果你使用的是像bash这样的descent shell,你可以使用history特性,你需要知道的一切都在bash的man页面中。
了解更多关于别名here的信息
顺便说一句,
git add .
可能不是最好的方法,因为它会将文件夹中的每个文件都添加到临时区域。最好使用git add -u
只添加那些已经在索引中的文件。hxzsmxv24#
可以在
$HOME/.gitconfig
或.git/config
中同时使用别名和shell函数并称之为
9lowa7mx5#
Windows的最佳解决方案:1)在系统上的任意位置创建一个文本文件,并根据需要更改字段后将以下代码插入其中
2)保存并退出文件。
3)将文件名更改为
push.sh
。4)使用git powershell导航到系统上的文件目录,然后使用以下命令
chmod +x push.sh
使文件可运行。5)单击Windows开始并搜索
Task Scheduler
,然后按创建新任务。6)单击操作并浏览到您的
push.sh
文件,然后按“确定”。7)导航到触发器并修改计划时间。
现在您有了一个脚本,它可以根据您的需要自动执行。
juud5qan6#
对于我的工作流来说,git“adds”和git“commits”是有目标的和原子的,所以把它们合并到一个批量命令中是没有用的。然而,每天,我都要推送到许多不同仓库中的许多不同分支,这通常遵循“git push origin {branchname}"的模式。这 * 可以 * 在shell脚本中自动完成:
然后,您可以添加一个bash别名(例如,“git-push”)来调用这个脚本,它将在您所在的任何仓库上有效地运行“git push origin {currently checked out分支}”。
qrjkbowd7#
我的bash脚本将选择您当前所在的分支,并拉取以避免来自同一分支的冲突,然后推送。如果您要在多个分支之间/跨多个分支工作,此脚本将非常有用。
使用方法:
qyuhtwio8#
下面是一个简单的bash脚本
将其保存为
.sh
扩展名,然后保存为+x
以获得执行权限