1. 程式人生 > >git分支管理小結

git分支管理小結

用處 推送 開始 之前 checkout 完成 分支合並 默認 pos

之前在使用git的時候,大部分的用處都是用來將自己本地的代碼上傳至github上。但是近期在做點小項目的時候,發現用到分支的地方,還是挺多的。

這是今天自己看了《github入門與實踐》那本書,跟著書上的步驟實踐了一番,發現又學到一部分東西。廢話不多說,進入正題。

先在本地目錄C:/gitTest1下,創建本地倉庫。
初始化倉庫:

git init

創建README.md文件

touch README.md

然後在這個md文件中添加幾行,然後從工作樹提交到暫存區

git add README.md

然後將暫存區的改動提交到本地倉庫中

git commit -m"add change"

此時可以通過git branch查看本地分支數。可以發現此時本地倉庫中只有master一個分支。
可能你們覺得在一個分支上開發沒有多大的意思,想再創建幾個分支進行開發。
可以通過下面的命令:

git checkout -b feature-A

這個命令相當於

git branch feature-A
git checkout feature-A

上面命令的意思就是創建feature-A分支,並將當前分支切換為feature-A分支。如果在這個分支中修改然後再進行提交,這些改動就被提交到feature-A分支下了。
此時切換到master分支下:

git checkout master

發現還是原來的狀態,並沒有被改動。這正是在開發中創建分支的優點,不同分支之間不會影響。只要創建多個分支,可以在互不影響的情況下同時進行多個功能的開發。
現在我們來看一下,如果之前創建了feature-A分支並提交了,此時就會有兩個分支:master和feature-A分支。master分支是Git默認的分支,主幹分支,比較重要的代碼發布在這個分支上,此時feature-A分支的任務假如已經完成了,此時需要合並到master分支上。
首先切換到master分支上。

git checkout master

然後合並feature-A分支,為了在歷史記錄中記錄本次分支合並記錄,最好使用下面的命令:

git merge --no-ff feature-A

執行上面的命令之後,如果想查看分支合並記錄,可以通過圖表形式查看:

git log --graph

到這裏基本上,本地的基本任務已經完成了。
下面開始進行遠程倉庫的事情了。
首先在自己的github上創建一個倉庫,此時不要勾選創建README.md選項。
我們需要添加遠程倉庫:

git remote add origin [email protected]:sminocence/git-tu.git

這個命令將它設置成本地倉庫的遠程倉庫,會將遠程倉庫的名稱設置為origin(標識符)。

假定我們是在master分支下執行下面的命令

git push -u origin master

執行上述命令之後,當前分支的內容就會被推送給遠程倉庫的origin的master分支。當然除了master分支之外,遠程倉庫也可以創建其他分支,舉個例子,我們在本地倉庫中創建feature-D分支,並將它以同名的形式push至遠程倉庫。

git checkout -b feature-D
git push -u origin feature-D

現在遠程倉庫的github頁面就可以查看到feature-D分支了。
現在我們從實際開發者的角度出發,在另一個目錄下D:/gitTest下新建一個本地倉庫,從遠程倉庫獲取內容。這就相當於我們剛剛執行過push操作的目標倉庫又有了另一名新開發者來共同開發。
git clone :獲取遠程倉庫
首先我們換到其他目錄下,將github上的倉庫clone到本地。註意不要與之前操作的倉庫在同一目錄下。

git clone [email protected]:sminocence/git-tu.git

執行git clone命令之後我們會默認處於master分支下,同時自動將origin設置成該遠程倉庫的標識符。我們可以用下面的命令查看本地倉庫和遠程倉庫的分支信息。

git branch -a

我們還可以將feature-D分支獲取到本地倉庫。

git checkout -b feature-D origin/feature-D

上述命令是以名為origin的倉庫的feature-D分支為來源,在本地倉庫中創建feature-D分支.
然後我們可以查看一下這個目錄下的本地的分支:master,feature-D。
我們可以在feature-D分支下進行改動並提交。然後將其推送到feature-D分支。

git push

git pull 獲取最新的遠程倉庫分支
我們放下剛剛操作的這個目錄,回到之前的那個目錄下,這邊的本地倉庫中只創建了feature-D分支,並沒有在這個分支中進行任何提交,然而遠程倉庫的feature-D分支已經有了我們剛剛推送的提交。這時,我們可以使用git pull命令,將本地的feature-D分支更新到最新狀態。當前分支為feature-D分支。

git pull origin feature-D

總結一下:
(1)我們在本地的一個目錄A下進行開發,然後推送了master和feature-D兩個分支(git push -u origin feature-D).
(2)然後我們又在本地的另一個目錄B下,clone了之前推送的那個遠程倉庫,然後
git checkout -b feature-D origin/feature-D,獲取遠程的feature-D分支到本地,此時本地就有了master和feature-D兩個分支,然後在B這個目錄下進行了改動、提交以及推送到遠程倉庫的feature-D分支下;
(3)此時之前A那個目錄下,feature-D分支就不是最新的狀態了。此時通過git pull origin feature-D獲取最新的遠程倉庫分支。這時候,這個A目錄下的feature-D分支就是最新的狀態了。這兩個目錄就相當於兩個開發者。就可以同時在同一個分支中進行作業,不斷給feature-D增加新功能。
今天先總結到這裏,如果有任何意見,歡迎評論指正,謝謝。

git分支管理小結