• <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • Git教程
    Git標簽管理
    Git分支
    Git操作
    Git應用
    GitHub應用
    IDEA對于Git&GitHub的支持
    Git與GitHub使用注意事項

    Git分支管理

     

     

    什么是分支管理

     

    在版本控制過程中,使用多條線同時推進多個任務就是分支管理。

     

    如下圖所示:

     

     

     

    分支管理的好處

     

    ⒈同時并行推進多個功能開發,提高開發效率

     

    ⒉各個分支在開發過程中,如果某一個分支開發失敗,不會對其他分支有任何影響。失敗的分支刪除重新開始即可。

     

     

    分支操作允許創建另一路線/方向上開發。我們可以使用這個操作將開發過程分為兩個不同的方向。 例如,我們發布了1.0版本的產品,可能需要創建一個分支,以便將2.0功能的開發與1.0版本中錯誤修復分開。

     

    創建分支

     

    我們可使用git branch 命令創建一個新的分支。可以從現有的分支創建一個新的分支。 也可以使用特定的提交或標簽作為起點創建分支。 如果沒有提供任何特定的提交ID,那么將以HEAD作為起點來創建分支。參考如下代碼,創建一個分支:new_branch:

     

    $ git branch new_branch
    
    Administrator@MY-PC /D/worksp/sample (master)
    $ git branch
    * master
      new_branch

     

    執行上命令后,它創建了一個新的分支:new_branch; 使用git branch命令列出可用的分支。Git在當前簽出分支之前顯示一個星號。

     

    創建分支操作的圖示表示如下:

     


     

     

    切換分支

     

    使用git checkout命令在分支之間切換。

     

    $ git checkout new_branch
    M       src/string.py
    Switched to branch 'new_branch'

     

     

    創建和切換分支的快捷方式

     

    在上面的例子中,分別使用兩個命令創建和切換分支。 Git為checkout命令提供-b選項; 此操作將創建一個新的分支,并立即切換到新分支。

     

    $ git checkout -b test_branch
    M       src/string.py
    Switched to a new branch 'test_branch'
    
    Administrator@MY-PC /D/worksp/sample (test_branch)
    $ git branch
      master
      new_branch
    * test_branch

     

     

    刪除分支

     

    可以通過向git branch命令提供-D選項來刪除分支。 但在刪除現有分支之前,請切換到其他分支。

     

    如上面所示,目前在test_branch分支,如要想刪除該分支。需要先切換到其它分支再刪除此分支,如下所示。

     

    $ git branch
      master
      new_branch
    * test_branch
    
    Administrator@MY-PC /D/worksp/sample (test_branch)
    
    $ git checkout master
    M       src/string.py
    Switched to branch 'master'
    Your branch is ahead of 'origin/master' by 4 commits.
      (use "git push" to publish your local commits)
    
    Administrator@MY-PC /D/worksp/sample (master)
    
    $ git branch -D test_branch
    Deleted branch test_branch (was b759faf).
    Administrator@MY-PC /D/worksp/sample (master)
    
    

     

    當前剩下的分支如下:

     

    $ git branch
    * master
      new_branch

     

     

    重命名分支

     

    假設需要在項目中添加對寬字符的支持。并且已經創建了一個新的分支,但分支名稱需要重新命名。那么可通過使用-m選項后跟舊的分支名稱和新的分支名稱來更改/重新命名分支名稱。

     

    $ git branch
    * master
      new_branch
    
    Administrator@MY-PC /D/worksp/sample (master)
    $ git branch -m new_branch wchar_support
    

     

    現在,使用git branch命令顯示新的分支名稱。

     

    $ git branch
    * master
      wchar_support

     

     

    合并兩個分支

     

    實現一個函數來返回寬字符串的字符串長度。新的代碼將顯示如下:

     

    $ git branch
    master
    * wchar_support
    
    $ pwd
    /D/worksp/sample
    
    Administrator@MY-PC /D/worksp/sample (master)
    $ git diff
    diff --git a/src/string.py b/src/string.py
    index 18f165f..89e82b3 100644
    --- a/src/string.py
    +++ b/src/string.py
    @@ -8,3 +8,9 @@ print ("var2[1:5]: ", var2[1:5]) #   切片 加索引
    
     def my_strcat(str1, str2):
            return (str1+str2)
    +
    +a = '我'
    +b = 'ab'
    +ab = '我ab'
    +
    +print(len(a), len(b), len(ab), len('='))
    \ No newline at end of file
    
    Administrator@MY-PC /D/worksp/sample (master)
    
    

     

    假設經過測試,代碼沒有問題,最后將其變更推送到新分行。

     

    $ git status
    On branch master
    Your branch is ahead of 'origin/master' by 5 commits.
      (use "git push" to publish your local commits)
    
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
            modified:   src/string.py
    
    no changes added to commit (use "git add" and/or "git commit -a")
    
    Administrator@MY-PC /D/worksp/sample (master)
    $ git add src/string.py
    
    Administrator@MY-PC /D/worksp/sample (master)
    $ git commit -m 'Added w_strlen function to return string lenght of wchar_t
    > string'
    [master 6bab70a] Added w_strlen function to return string lenght of wchar_t string
     1 file changed, 6 insertions(+)
    
    

     

    請注意,下面將把這些更改推送到新的分支,所以這里使用的分支名稱為wchar_support而不是master分支。

     

    執行過程及結果如下所示:

     

    $ git push origin wchar_support
    Username for 'http://git.oschina.net': 769728683@qq.com
    Password for 'http://769728683@qq.com@git.oschina.net':
    Counting objects: 18, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (12/12), done.
    Writing objects: 100% (15/15), 1.72 KiB | 0 bytes/s, done.
    Total 15 (delta 3), reused 0 (delta 0)
    To http://git.oschina.net/bjpowernode/sample.git
     * [new branch]      wchar_support -> wchar_support
    
    Administrator@MY-PC /D/worksp/sample (master)
    

     

    提交更改后,新分支將顯示如下:

     

     

    如果其他開發人員很想知道,我們在私人分支上做什么,那么可從wchar_support分支檢查日志。

     

    bjpowernode@ubuntu:~/git/sample$ git log origin/wchar_support -2

     

    輸出結果如下:

     

    bjpowernode@ubuntu:~/git/sample$ pwd
    /home/bjpowernode/git/sample
    bjpowernode@ubuntu:~/git/sample$ git pull
    remote: Counting objects: 15, done.
    remote: Compressing objects: 100% (12/12), done.
    remote: Total 15 (delta 3), reused 0 (delta 0)
    Unpacking objects: 100% (15/15), done.
    From http://git.oschina.net/bjpowernode/sample
     * [new branch]      wchar_support -> origin/wchar_support
    Already up-to-date.
    bjpowernode@ubuntu:~/git/sample$ git log origin/wchar_support -2
    commit b759fafeb2a58bd1104f4142e4c0ababdadce01d
    Author: maxsu <your_email@mail.com>
    Date:   Mon Jul 10 23:44:24 2017 +0800
    
        fdasjkfdlaks
    
    commit de08fcc70df3a31c788a2e926263b18498d2df09
    Author: maxsu <your_email@mail.com>
    Date:   Mon Jul 10 23:40:00 2017 +0800
    
        delete
    bjpowernode@ubuntu:~/git/sample$
    

     

    通過查看提交消息,其他開發人員(minsu)到有一個寬字符的相關計算函數,他希望在master分支中也要有相同的功能。不用重新執行代碼編寫同樣的代碼,而是通過將分支與主分支合并來執行代碼的合并。下面來看看應該怎么做?

     

    bjpowernode@ubuntu:~/git/sample$ git branch
    * master
    
    bjpowernode@ubuntu:~/git/sample$ pwd
    /home/bjpowernode/git/sample
    
    bjpowernode@ubuntu:~/git/sample$ git merge origin/wchar_support
    Updating 44ea8e4..b759faf
    Fast-forward
     src/string.py | 4 +++-
     1 file changed, 3 insertions(+), 1 deletion(-)
    bjpowernode@ubuntu:~/git/sample$
    
    

     

    合并操作后,master分支顯示如下:

     

     

    現在,分支wchar_support已經和master分支合并了。 可以通過查看提交消息或者通過查看string.py文件中的修改來驗證它。

     

    bjpowernode@ubuntu:~/git/sample$ git branch
    * master
    bjpowernode@ubuntu:~/git/sample$ cd src/
    bjpowernode@ubuntu:~/git/sample/src$ git log -2
    commit b759fafeb2a58bd1104f4142e4c0ababdadce01d
    Author: maxsu <your_email@mail.com>
    Date:   Mon Jul 10 23:44:24 2017 +0800
    
        fdasjkfdlaks
    
    commit de08fcc70df3a31c788a2e926263b18498d2df09
    Author: maxsu <your_email@mail.com>
    Date:   Mon Jul 10 23:40:00 2017 +0800

     

    上述命令將產生以下結果。

     

    #!/usr/bin/python3
    
    var1 = 'Hello World!'
    var2 = "Python Programming"
    
    print ("var1[0]: ", var1[0])
    print ("var2[1:5]: ", var2[1:5]) #   切片 加索引
    
    def my_strcat(str1, str2):
        return (str1+str2)
    
    a = '我'
    b = 'ab'
    ab = '我ab'
    
    print(len(a), len(b), len(ab), len('='))
    

     

    測試后,就可將代碼更改推送到master分支了。

     

    $ git push origin master
    Total 0 (delta 0), reused 0 (delta 0)
    To http://git.oschina.net/bjpowernode/sample.git
    5776472..64192f9 master ?> master
    

     

     

    分支管理操作方式

     

    git brach -v 查看分支

     

     

    觀察到我們現在只有一個默認的分支(系統提供的主干分支),就是master

     

    git branch 分支名 創建分支

     

    我們現在來創建一個分支bran1

     

     

    創建完畢后,再次查看分支,表示現在共有兩個分支master和bran1

     

    注意:由于barn1這個分支是由master這個分支創建出來的,所以默認指向同一個指針ggg

     

    master綠色高亮表示當前操作,使用的仍然是master分支

     

    git checkout 分支名 切換分支

     

     

    切換完再次查看分支,bran1分支綠色高亮顯示,表示我們現在操作的是bran1這個分支。

     

     

    分支合并以及解決沖突

     

    ⒈合并分支

     

    首先我們切換到bran1分支上,在test1.txt上新增信息iii,然后add和commit在bran1分支上,我們看到了iii;

     

    如果切換回master分支上,我們是看不到iii的(iii是bran1做的操作,所以看不到)

     

    此時master分支如果想要看到iii,就必須要和bran1分支進行合并

     

    分支的合并不會刪除某一個分支,而是對于信息進行對稱整合

     

    我們切換到master分支上執行命令 git merge bran1 就會將bran1中的信息進行整合

     

     

    這時我們再觀察cat test01.txt就會有最新的iii了

     

    ⒉合并分支過程中沖突的解決方式

     

    此時master分支和bran1分支上都是最新的iii

     

    在master分支上新增jjj,執行add和commit

     

    然后切換到bran1分支上,新增kkk,執行add和commit

     

    然后合并分支,例如我們還是使用master合并bran1分支

     

    此時就會產生沖突

     

     

    沖突的解決方式:

     

    首先編輯test01.txt文件,保留有用信息(協商解決),刪除(作為沖突標識的)特殊符號

     

    執行git add test01.txt

     

    執行 git commit -m"日志信息"

     

     

    這樣就成功的解決了沖突。

     

    全部教程
  • <nav id="wkkge"><strong id="wkkge"></strong></nav>
  • <menu id="wkkge"></menu>
  • 面对面棋牌游戏