git rebase 项目实践

当你在做一个软件开发项目时,如果有多个developer同时在进行开发,或者你自己在同时进行多个feature的实现或bug修复时,一定会从代码主分支上branch out出来很多不同的工作分支。

一旦主分支得到自己或他人提交的更新,你本地的很多分支就会落后于主分支,这个时候当你想将这些落后的分支提交到github/gitlab等系统进行merge request的时候,系统就无法对你的分支进行自动的merge。

要处理这种情况,就需要对本地正在工作的分支进行rebase,换种说法就是将本地的工作分支跟主分支上最新的代码进行同步。

这里假设远程的主分支叫master,在你的本地将要merge的分支名叫dev,下面演示如何进行rebase并提交。

假设你当前处于dev branch。

首先要提交你在dev branch上做的修改:
git commit -m "changes notes"

切换到master branch:
git checkout master

拉取master branch remote最新的commit:
git pull origin master

切换回dev branch:
git checkout dev

进行rebase:
git rebase master

这时很有可能会提醒你有代码冲突,需要手动解决冲突。

然后将修改的文件add:
git add [filepath/filename]

继续rebase:
git rebase --continue

将本地push到remote:
git push origin dev

如果上面的push命令遇到问题,根据情况,可以强制push:
git push --force origin dev

下面附上软件开发的正确流程:

当你要做一个新功能时,先从主分支上创建一个新分支:
git checkout -b patch_fix_what

做完修改后进行add和commit:
git add .
git commit -m "changes notes"

然后不是直接push代码,而是创建merge request供Approver去review你的修改:
git push --set-upstream origin patch_fix_what -o merge_request.create -o merge_request.target=master

如果你的修改得到approve,那么系统一般会帮你自动merge。

如果你的修改有问题,Approver将不会通过,你需要继续修改你的代码,并再次提交。而之后提交就不用再创建merge request,可以直接push。
git add .
git commit -m "new changes"
git push origin patch_fix_what

Push成功后,Approver就可以在之前的merge request里,看到你的新的commit了。

 

你可能感兴趣的:(git)