一、从远程仓库拉取代码
在多人协作项目中,很多时候我们需要从远程仓库中拉取别人的代码,以确保本地仓库的代码是最新的。
方法一
git status
git add .
git commit -m <commit message>
git pull
// 解决冲突
git add .
git commit -m <commit message>
git push
方法二
git status
git stash
git pull
git stash pop
// 解决冲突
git add .
git commit -m <commit message>
git push
二、合并分支
在复杂的项目中,很多人可能在同一个repo上工作,这个时候每个人可能都会从master分支上创建一个新的分支,并在自己的分支上工作。
场景一
假使A从master上创建了一个新分支feature-1
,同时B也从master上创建了一个新分支feature-2
,俩人分别在各自分支上提交了commit,此时,A和B都想将代码合并到master上。
方法一
// A
git switch master
git merge feature-1
// B
git switch master
git pull
<conflit resolving>
git merge feature-2
方法二
// A
git switch master
git rebase feature-1
// B
场景二
A在feature-1
分支上作出修改,B从feature-1
的基础上拉出了一个新分支feature-2
,并在新分支上开发提交。这个时候,B只能等A的代码merge到master之后,才能将自己的代码merge到master。
将feature-1
merge到master
// at master branch
git rebase feature-1
// conflict resolving
git add.
git rebase --continue
git push -f
将feature-2
merge到master
// at master branch
git rebase feature-2
// conflict resolving
git add.
git rebase --continue
git push -f
此时,git的提交记录就会变成一条漂亮的直线了。
三、修改历史提交记录
场景一
A在凌晨四点终于写完的最后一行代码,开心的提交了一个commit,提交完之后定睛一看,提交记录上写着不可描述十分真实但是可能会让客户一百分不开心的心理活动,A倒吸一口冷气,幸好发现的早。
git commit --amend
修改完之后用:wq保存编辑,上一次的commit就被修改了。
场景二
当A修改完最后一次提交之后,长出一口气,缓缓打出了一个git log
来查看自己的修改是否成功。谁承想A的那些不可描述十分真实但是可能会让客户一百分不开心的心理活动在A的倒数第三次提交中也被写出来了。
git rebase -i HEAD~3
屏幕上此时会显示图一这样的记录,注意此时的提交记录排序是从倒数第三次到倒数第一次,也就是按照时间正序排序的。
此时,我们需要修改862fe4a的commit message,因此我们将862fe4a前面的pick改成edit,保存并退出之后,git会像图二一样提示我们。
这个时候我们就按照提示用
git commit --amend
修改commit message,之后git会带我们到下一个提交,这个时候我们用git rebase --continue
跳过就可以了。