创建项目
- fork公司项目到自己的仓库
- 复制自己仓库的项目地址将项目clone到本地
git clone https://github.com/Sara3104/{项目名}.git
这样remote里面的origin就是自己仓库的项目了 - idea打开工程后tools->VCS->git->remote 增加一个名为upstream的远程仓库,指向对应的公司项目地址,用于pull。也可用命令行
git remote add upstream [url]
工作并提交代码
- 假设公司主分支为master,那么把本地代码的master分支作为同步分支,工作开始时从本地的master分支checkout一个工作分支,我一般命名为dev
git branch dev
git checkout dev
- 多人合作的情况下,在dev分支上完成工作后,首先需要提交代码至本地代码库。我一般采用图形界面(缺图)
- 其次需要pull公司分支的更新
git pull upstream master
如果没有冲突的话就自动合并了,如果有冲突的话在dev分支上处理冲突之后提交修改至本地代码库 - 完成后将本地代码库的修改提交到自己的远程仓库的dev分支
git push origin dev
如果远程仓库没有dev分支的话会自动构建 -
push成功后在dev分支会显示"This branch is n commits ahead 公司名:分支名" 表示你的dev分支比公司分支提前n个commit. behind则表示你应该pull代码了。
-
然后点击上方的New pull request创建pr,等待review后合并。如果合并者选择的是第二种方式
那么这个pr中的所有commits会变成公司主分支的一个commit
该commit的message为对应pr的title
为下次提交所做的准备
- 假设之前的pr中有10个commit,如果采用第二种方式进行合并之后,主分支的commit数+1,但自己仓库的dev分支则有10个commit,那么会提示"This branch is 10 commit ahead, 1 commits behind 公司名:分支名."这样就意味着自己的dev分支已经与公司的主分支产生了不同步,需要删除本地和远程的dev分支。
git push origin --delete dev
删除自己远程仓库的dev分支
git branch -D dev
删除本地代码库的dev分支
注意下次工作前创建dev分支前可以先更新一下同步分支,使用git pull即可。因为不使用同步分支提交代码,所以同步分支永远不会在pull的时候产生冲突。
注意事项
- 新建dev分支用于提交代码是因为公司远程分支采用了第二种合并方式,所以每次pr合并之后应该立刻删除自己本地和远程的dev分支,否则下次提交的时候就会把之前不同步的10个commit也提交上去(虽然这种情况下files change不会有这10个commit的内容)
- 创建pr的时候可以通过查看自己分支的commit数和公司主分支的commits数来确定自己的分支是否干净