日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

git rebase/reset小计

發(fā)布時間:2024/4/17 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git rebase/reset小计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

http://www.cnblogs.com/kym/archive/2010/08/12/1797937.html

git rebase,顧名思義,就是重新定義(re)起點(base)的作用,即重新定義分支的版本庫狀態(tài)。要搞清楚這個東西,要先看看版本庫狀態(tài)切換的兩種情況:

  • 我們知道,在某個分支上,我們可以通過git reset,實現(xiàn)將當前分支切換到本分支以前的任何一個版本狀態(tài),即所謂的“回溯”。即實現(xiàn)了本分支的“后悔藥”。也即版本控制系統(tǒng)的初衷。
  • 還有另一種情況,當我們的項目有多個分支的時候。我們除了在本地開發(fā)的時候可能會“回溯”外,也常常會將和自己并行開發(fā)的別人的分支修改添加到自 己本地來。這種情況下很常見。作為項目管理員,肯定會不斷的合并各個子項目的補丁,并將最新版本推送到公共版本庫,而作為開發(fā)人員之一,提交自己的補丁之 后,往往需要將自己的工作更新到最新的版本庫,也就是說把別的分支的工作包含進來。
  • 舉個例子來說吧!假設我們的項目初期只有一個master分支,然后分支上作過兩次提交。這個時候系統(tǒng)只有一個master分支,他的分支歷史如下:

    master0(初始化后的版本)
    ||
    v
    master1(第一次提交后的版本)
    ||
    v
    master2(第二次提交后的版本)

    這個時候,我們可以通過git reset將master分支(工作目錄、工作緩存或者是版本庫)切換到master1或者master0版本,這就是前面所說的第一種情況。
    假設我們這里把master分支通過git reset回溯到了master1狀態(tài)。那么這個時候系統(tǒng)仍然只有一個master分支,分支的歷史如下:

    master0(初始化后的版本)
    ||
    v
    master1(第一次提交后的版本)

    然后,我們在這里以master1為起點,創(chuàng)建了另一個分支test。那么對于test分支來說,他的第一個版本test0就和master1是同一個版本,此時項目的分支歷史如下:

    master0(初始化后的版本)
    ||
    v
    master1(第一次提交后的版本)===test0(test分支,初始化自master分支master1狀態(tài))

    這個時候,我們分別對master分支、test分支作兩次提交,此時版本庫應該成了這個樣子:

    master0(初始化后的版本)
    ||
    v
    master1===test0==>test1===>test2
    ||
    v
    master2===>master3

  • 這個時候,通過第一種git reset的方式,可以將master分支的當前狀態(tài)(master3)回溯到master分支的master0、master1、master2狀態(tài)。 也可已將test分支當前狀態(tài)(test2)回溯到test分支的test0、test1狀態(tài),以及test分支的父分支master的master0、 master1狀態(tài)。
  • 那么。如果我要讓test分支從test0到test2之間所有的改變都添加到master分支來,使得master分支包含test分支的所有修改。這個時候就要用到git rebase了。
  • 首先,我們切換到master分支,然后運行下面的命令,即可實現(xiàn)我們的要求:

    1
    git rebase test

    這個時候,git做了些什么呢?

  • 先將test分支的代碼checkout出來,作為工作目錄
  • 然后將master分支從test分支創(chuàng)建起的所有改變的補丁,依次打上。如果打補丁的過程沒問題,rebase就搞定了
  • 如果打補丁的時候出現(xiàn)了問題,就會提示你處理沖突。處理好了,可以運行git rebase –continue繼續(xù)直到完成
  • 如果你不想處理,你還是有兩個選擇,一個是放棄rebase過程(運行git rebase –abort),另一個是直接用test分支的取代當前分支的(git rebase –skip)。
  • 此外,rebase還能夠讓你修訂以前提交,這個功能日后再說。


    總結

    以上是生活随笔為你收集整理的git rebase/reset小计的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。