git Pull Request工作流程的整合
git Pull Request工作流程的整合
fork项目
- fork项目,到网站上点击一下fork按钮,将项目复制到自己的工程中。
-
设置remote地址
➜ Desktop git clone ssh://root@code.5288z.com:24/zhangyuqing/PullRequestTest.git
Cloning into ‘PullRequestTest’…
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (5/5), done.
Checking connectivity… done.
➜ Desktop cd PullRequestTest
➜ PullRequestTest git:(master) git remote -v
origin ssh://root@code.5288z.com:24/zhangyuqing/PullRequestTest.git (fetch)
origin ssh://root@code.5288z.com:24/zhangyuqing/PullRequestTest.git (push)
➜ PullRequestTest git:(master) git remote add upstream https://code.5288z.com/test/PullRequestTest.git
➜ PullRequestTest git:(master) git remote -v
origin ssh://root@code.5288z.com:24/zhangyuqing/PullRequestTest.git (fetch)
origin ssh://root@code.5288z.com:24/zhangyuqing/PullRequestTest.git (push)
upstream https://code.5288z.com/test/PullRequestTest.git (fetch)
upstream https://code.5288z.com/test/PullRequestTest.git (push)
创建你自己的topic branch
➜ PullRequestTest git:(master) git checkout -b testBranch
Switched to a new branch 'testBranch'
在自己的topic branch上完成自己的工作
当你在主题branch下工作,想要导入来自上游库的(与你当前的工作不冲突的情况下)更新时,使用git rebase。
➜ PullRequestTest git:(testBranch) echo 'I love you' > test.txt
➜ PullRequestTest git:(testBranch) ✗ git add test.txt
➜ PullRequestTest git:(testBranch) ✗ git commit -m 'add test.txt'
假设上游branch为upstream/master
➜ PullRequestTest git:(testBranch) git fetch upstream
From https://code.5288z.com/test/PullRequestTest
* [new branch] master -> upstream/master
➜ PullRequestTest git:(testBranch) git rebase upstream/master testBranch
Current branch testBranch is up to date.
发送一个Pull Request
在网站界面上,左边选择base branch,右边选择head branch。base branch为master,head branch为testBranch。填写创建合并请求的标题和修改更新日志说明,并创建合并请求。
一旦你从自己的主题branch(例如testBranch)推送了一条Pull Request,那么在这条Pull Request被关闭之前,再次向这个branch里push代码,所有的commits都会被自动追加到这个Pull Request后面(不需要再另开Pull Request)。
这个功能尤其有用,比如你最初提交的Pull Request里存在某些问题,项目维护者要求你打回去修改;或者要求你给你的新feature添加一条相应的unit test(这种情况简直太常见了)。只要追加commits到你的这个主题branch中即可。
Pull Request发送之后
- 针对项目维护者。git pull和git merge是最常用的merge Pull Requests的方式,在命令行下merge之后,PullRequest也会相应地自动关闭。或者在网站上点击同意合并。
-
针对开发者,如果项目维护者同意合并之后,可以将本次多余的branch来进行删除。
git branch -d testBranch
➜ PullRequestTest git:(master) git branch -r -d origin/testBranch
Deleted remote-tracking branch origin/testBranch (was 49b74af).
➜ PullRequestTest git:(master) git pull upstream master
➜ PullRequestTest git:(master) git push