三、Team协作
分支概念:由于多人贡献于同一个仓库,但是又不能同时直接再仓库上修改,所以就需要从主仓库分支,每个人在自己对应的分支上操作,最后在合并到主仓库即可
1、fork 仓库。这是 github 的操作,而不是 git,fork 的仓库不是分支,但是可以通过 pull request 申请向原仓库合并
2、从远程仓库拉取到本地。同上,可以使用 https 或者 ssh 的方式
git clone git@github.com:daizeyao/hznuoj.git
3、设置上游仓库。 upstream 和上文中的 origin 都称为远程主机名
git remote -vgit remote add upstream git@github.com:hznuoj/hznuoj.git
4、新建分支。
(1)、 switch 和 checkout 都是切换分支,加上 -b 如果切换时发现没有就新建
git checkout -b devgit switch feature
git checkout feature
(2)、查看分支命令
git branch -a
5、同步上游的 commit
(1)、将远程仓库的修改下载到本地。用于预览和比对远程分支的修改。
git fetch upstream master
git fetch 远程主机名 分支名
(2)、将远程仓库的更新同步到本地分支时。下述操作就是先切换到 master 分支,然后将 feature 分支的修改合并到 master
git switch master
git merge feature
(3)、git pull = git fetch + git merge
git pull upstream master
git pull 远程主机名 分支名
6、整理、提交自己的 commit
自己的分支可能有多次 commit ,当我们需要整理自己的 commit 的时候就可以使用 rebase
为了避免意外,推荐先本地备份一遍仓库
(1)、首先查看日志,需要合并哪几次 commit ,选到那次 commit 的版本号
git log
(2)、交互形式进行 rebase 操作,之后会弹出两次交互框:
第一次是选择如何 rebase ,它会从上到下从老到新列出区间内每次 commit ,一行的一个参数表示对这次 commit 做什么操作,第二个参数就是commit的版本号,其中, pick 代表包括这次 commit , squash 代表将这次 commit 合并到上面第一个 commit ,那么我们只需要将第一行改为 pick ,后面的改为 squash 即可完成合并
第二次是更改本次合并后的 commit 的信息
git rebase -i xxx
(3)、强推到远程主机
git push -f origin master