场景1, 临时拉取feature branch做修改
emambp:learn ema
gitfetchoriginfeature/elinatestemambp:learnema
git checkout -b elinatest origin/feature/elinatest
git remote update=git fetch
场景2,feature branch需要合并到master
master已经被其他同事更新了许多
目前在elinatest 分支, rebase master分支上别人的更新
git rebase master
如果很久没有更新,conflict肯定很多,需要解决conflict 然后执行git add
master维护者只需要直接根据你提的pr merge你的分支即可
git checkout master
git merge elinatest
场景3,针对feature branch 开发自己的code (分支开发)
git fetch origin feature/perf_jobs_master2mesos
git checkout -b perf_jobs_master2mesos origin/perf_jobs_master2mesos
此时 git log 看到
commit 1 lijing
balaba… 本地编写代码 过了几天 完成
git commit -a -m “comment info”
此时 git log 看到
commit 3 shaofang
commit 1 lijing
git rebase origin/feature/perf_jobs_master2mesos
此时git log 看到
commit 3 shaofang
commit 2 lijing
commit 1 lijing
然后push 本地修改到feature
git push origin HEAD:feature/perf_jobs_master2mesos
此时查看远端 repo branch发现 commit log
commit 3 shaofang
commit 2 lijing
commit 1 lijing
场景4,push代码后 查看本地 发现HEAD值为最新的commit 但FETCH_HEAD 为次新commit 所以每次开发前或者每次准备push代码前 最好fetch一下 更新一下该值(此时只是更新了指针索引 但本地的代码没有更新 只有rebase才会更新远端代码到本地) 然后 rebase的时候将根据FETCH_HEAD的值rebase 远端最新 code到本地
emambp:jenkins ema
cat.git/HEADref:refs/heads/perfjobsmaster2mesosemambp:jenkinsema
cat .git/FETCH_HEAD
b87369608ef3a3c1d6e25676fed6a9d034ae218e branch ‘feature/perf_jobs_master2mesos’ of ssh://stash.bbpd.io/learn/jenkins
emambp:jenkins ema
cat.git/refs/heads/perfjobsmaster2mesos836eb8f427c090064fd922fd4ca7656975a4809aemambp:jenkinsema
git fetch origin feature/perf_jobs_master2mesos
From ssh://stash.bbpd.io/learn/jenkins
* branch feature/perf_jobs_master2mesos -> FETCH_HEAD
emambp:jenkins ema$ cat .git/FETCH_HEAD
836eb8f427c090064fd922fd4ca7656975a4809a branch ‘feature/perf_jobs_master2mesos’ of ssh://stash.bbpd.io/learn/jenkins