git版本分支和分支、分支和主分支切換

問題描述: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)     

相關文章
相關標籤/搜索