这不是关于工作流意见的问题,而是一个关于如何减少下面工作流程击键的具体问题。
我的开发团队通常遵循定制的分支Git工作流程。
工作流
master
feature/<branch>
,refactor/<branch>
,bug/<branch>
等... master
master
这是我们的工作流程,对我们来说效果很好。但是,我执行所有这些的git
命令变得相当重复并且有点烦人。
工作流程的Git命令
git checkout -b feature/new-branch-name
git add .
git commit -m "some commit message"
git push --set-upstream origin feature/new-branch-name
git checkout master
(切换回主人以合并更改)git pull
(从新分支获取更新)git branch -d feature/new-branch-name
(删除本地分支)是否有更简洁的方法来减少这么多git
命令?重复所有这一切变得非常繁琐。我正在考虑编写一些脚本文件来管理其中一些。我知道有一些脚本已经存在,但我不想被迫使用别人的方法,我真的只是在寻找方法来保存我的手指。
任何给定的一天,我将分支并提交拉动请求约3-6次。所以我们的分支机构非常短暂,规模和范围都很小。但实际过程很艰巨。
任何人都有更好的实施来完成我的团队的分支机制?
答案 0 :(得分:1)
1)每次想要分支时,您都不需要物理更新master,您可以替换这些步骤:
git checkout master
git pull
git checkout -b feature/new-branch-name
使用:
git fetch
git checkout -b feature/new-branch-name origin/master
(这两个命令是git别名/脚本的理想选择,称为git-start-feature)
2)git add . && git commit -m msg
只是git commit -a -m msg
。有时您会想要进行单次提交,有时会将更改分成多次提交,因此编写此脚本没有意义。您也可以先提交任何更改,然后继续修改。
3)您不需要立即删除本地分支,但如果您愿意,则可以将此步骤与git push
结合使用:
git push -u origin feature/new-branch-name
git checkout master
git branch -D feature/new-branch-name
您可以将其转换为脚本git-push-forget
:
#!/bin/bash
branch_name=$(git rev-parse --abbrev-ref HEAD)
case "$branch_name" in
master)
echo "ops, this master!"
exit 1
;;
*)
if git push -u origin "$branch_name"; then
git checkout master
git branch -D "$branch_name"
else
echo "umpf, git push failed..."
exit 2
fi
;;
esac
(请注意,我没有检查此脚本是否有效,只是在线输入;如果您对此有任何疑问,请与我联系)
所以现在你的工作流程看起来像这样:
git-start feature/new-branch-name
# work, work, work
git commit -a -m "magnificent"
git-push-forget
# do github specific stuff
[编辑] 此外,使用bash完成与终端快速工作。如果您使用的是Linux,请确保已安装bash-completion(或bash-complete)数据包 - 某些发行版可能默认不安装它。您也可以编写自己的完成文件(例如,继续为git-start脚本建议分支名称)。如果你想朝着这个方向前进,请大声喊叫。
另一点是用git-push-forget脚本打开带有github pull请求的浏览器页面(如果可以猜到url;我不使用github enterprise)。