Git 使⽤规范流程(原⽂出处:阮⼀峰)
下图是ThoughtBot的Git使⽤规范流程。
第⼀步:新建分⽀
⾸先,每次开发新功能,都应该新建⼀个单独的分⽀()。
第⼆步:提交分⽀commit
分⽀修改后,就可以提交commit了。
git add 命令的all参数,表⽰保存所有变化(包括新建、修改和删除)。从Git 2.0开始,all是git add 的默认参数,所以也可以⽤git add .代替。
git commit 命令的verbose参数会列出diff的结果。
第三步:撰写提交信息
提交commit时,必须给出完整扼要的提交信息,下⾯是⼀个范本。Present-tense summary under 50 characters More information about commit (under 72 characters).
More information about commit (under 72 characters).
第⼀⾏是不超过50个字的提要,然后空⼀⾏,罗列出改动原因、主要变动、以及需要注意的问题。最
后,提供对应的⽹址(⽐如Bug ticket)。
第四步:与主⼲同步 分⽀的开发过程中,要经常与主⼲保持同步。
# 获取主⼲最新代码
$ git checkout master
$ git pull
# 新建⼀个开发分⽀myfeature $ git checkout -b myfeature
$ git add --all
$ git status
$ git commit --verbose
$ git fetch origin
$ git rebase origin/master
第五步:合并commit
分⽀开发完成后,很可能有⼀堆commit,但是合并到主⼲的时候,往往希望只有⼀个(或最多两三个)commit,这样不仅清晰,也容易管理。这就要⽤到 git rebase 命令。
$ git rebase -i origin/master
git rebase命令的i参数表⽰互动(interactive),这时git会打开⼀个互动界⾯,进⾏下⼀步操作。
下⾯采⽤Tute Costa的例⼦,来解释怎么合并commit。
pick 07c5abd Introduce OpenPGP and teach basic usage
pick de9b1eb Fix PostChecker::Post#urls
pick 3e7ee36 Hey kids, stop all the highlighting
pick fa20af3 git interactive rebase, squash, amend
# Rebase 8db7e8b..fa20af3 onto 8db7e8b
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
git常用指令
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
上⾯的互动界⾯,先列出当前分⽀最新的4个commit(越下⾯越新)。每个commit前⾯有⼀个操作命令,默认是pick,表⽰该⾏commit 被选中,要进⾏rebase操作。
pick:正常选中;
reword:选中,并且修改提交信息;
edit:选中,rebase时会暂停,允许你修改这个commit;
squash:选中,会将当前commit与上⼀个commit合并;
fixup:与squash相同,但不会保存当前commit的提交信息;
exec:执⾏其他shell命令。
上⾯这6个命令当中,squash和fixup可以⽤来合并commit。先把需要合并的commit前⾯的动词,改成squash(或者s)。
pick 07c5abd Introduce OpenPGP and teach basic usage
s de9b1eb Fix PostChecker::Post#urls
s 3e7ee36 Hey kids, stop all the highlighting
pick fa20af3 git interactive rebase, squash, amend
第六步:推送到远程仓库
合并commit后,就可以推送当前分⽀到远程仓库了。
$git push--force origin myfeature
git push命令要加上force参数,因为rebase以后,分⽀历史改变了,跟远程分⽀不⼀定兼容,有可能要强⾏推送。
第七步:发出Pull Request
提交到远程仓库以后,就可以发出 Pull Request 到master分⽀,然后请求别⼈进⾏代码review,确认可以合并到master。(完)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论