問題描述:html
公司裏項目管理使用的是gitLab(收費的), 若是開發人員提交代碼, 須要首先建立一個分支, 而後把代碼提交到你建立的分支上去(不容許把代碼直接提交到主分支上). 在代碼提交到已經建立的分支上後, 你要發送一個merger request的請求 給合併代碼的人員, 這我的有權限把你建立的分支合併到主分支上(你本身是沒有權限的), 有他作最後代碼審覈. 若是這我的合併成功後, 本身就能夠切換回到主分支, 去更新代碼了. git
如今出現一個很棘手的問題(其實仍是git提交操做的流程): 學習
目前主分支: masterspa
在msater上建立新分支newBranch, 在newBranch上更改代碼, 沒有提交(commit / push), 此時msater分支上有人更新了代碼, 我須要在newBranch上去更新master代碼, 其實就是更新建立分支的基線(master).code
以下圖: htm
把基線移更新到藍色的線blog
我目前的操做:(目前的分支是newBranch)項目管理
git branch (查看當前分支是否處於newBranch)開發
git add <file> (提交newBranch上的更改的文件) get
git commit -m "comment" (只提交到本地, 不作git push操做, 至關於提交到本地倉庫)
git checkout master
(這裏是切換到msater分支, 若是不把newBranch上修改的文件提交到本地, 那麼這個操做就會提示錯誤) (切換分支前, 必須保證當前的分支記錄所有提交, 簡單來講, 執行git status, 若是有顯示未提交的修改文件, 那麼切換分支就不會成功;這是咱們就能夠採起把修改的文件提交到本地,不去作git push操做, 而後切分支,作其餘事情. 完成以後, 最後切換到以前的分支, 能夠經過git reset HARD~1的命令還原.把本地提交的還原回來)
git pull origin master(把master的分支新提交的代碼更新下來)
git checkout newBranch (切換到以前的newBranch分支)
git reset HEAD~1 (這裏是先reset, 而後merge)
(上面和下面這兩個步驟操做意義是: 把以前提交到本地, 所有還原回來, 即同時更新了master代碼, 也把基線移到指定的地方, 這樣就至關於(上圖)把基線移到藍線, )
git merge --no-ff master (是否須要加參數--no-ff, 看須要)
(git merge –no-ff 能夠保存你以前的分支歷. 可以更好的查看merge歷史, 以及branch狀態) (git merge 則不會顯示 feature,只保留單條分支記錄)
後續的修改提交文件, 和正常的git add / git commit -m "" / git push 等操做徹底不影響
(詳細的內容能夠查看個人另外一篇博客: http://www.cnblogs.com/xumBlog/p/8623736.html)
(git reset的命令學習: http://www.cnblogs.com/xumBlog/p/8555666.html)