Git分支管理及常見操做

  衆所周知,使用Git分支,咱們能夠從開發主線上分離開來,而後在不影響主線的同時繼續工做。git

  既然要使用Git分支,這裏就涉及到Git分支的管理及常見操做,如列出分支,分支的建立,分支的刪除,分支的合併等操做。github

  之前看到這就頭痛,老是搞不明白,今天研究了許久才搞懂,這裏作個筆記。緩存

  如,個人Git工具安裝在E盤>myGit中,安裝後目錄以下:服務器

  

  我本地建立的倉庫爲myProject,首先咱們能夠先查看下本地倉庫的分支狀況。打開Git工具,操做以下。 工具

jiangfeng@jiangfeng MINGW64 ~/桌面
$ cd e:

jiangfeng@jiangfeng MINGW64 /e
$ cd mygit

jiangfeng@jiangfeng MINGW64 /e/mygit
$ cd git

jiangfeng@jiangfeng MINGW64 /e/mygit/git
$ cd myProject

  檢查本地倉庫分支,命令,git branch回車便可查看該倉庫下的分支狀況,若是沒有建立的話,默認只有主分支master:測試

jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (master)
$ git branch  查看該倉庫下的分支狀況 * master

  

  下面,建立分支,如,我在該倉庫下建立了分支test,而後在該分支下寫了一個test.txt文件。那麼這裏就涉及到兩個操做了,即分支的建立與切換。具體操做以下: fetch

jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (master)
$ git branch test   test爲建立的分支名

jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (master)
$ git checkout test   從主分支master上切換到剛建立的分支test上
Switched to branch 'test'

jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (test)
$ echo "hello world!" >test.txt  在分支test裏寫入一個test.txt文件,文件內容爲「hello world!」

  

  下面要將剛建立的文件寫入到緩存區。操做以下:  spa

jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (test)
$ git add .   將文件寫入到緩存區中,注意add與句號間有空格
warning: LF will be replaced by CRLF in test.txt.
The file will have its original line endings in your working directory.

  

  而後要將緩存區內容test.txt文件添加到倉庫,操做以下: code

jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (test)
$ git commit -m "change log"  將緩存區內容添加到倉庫
[test afc4b17] change log
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt

 

  下面要進行分支合併,即將新建的分支test合併到主分支master上,這裏首先要將分支test切換到主分支master,而後進行分支合併。操做以下:blog

jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (test)
$ git checkout master  切換分支test到主分支master上
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.

jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (master)
$ git merge test  將分支test合併到主分支master上
Updating 68d8bfc..afc4b17
Fast-forward
 test.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt

  

  若是,咱們要將本地倉庫裏的內容提交到遠程GitHub上,操做以下: 

jiangfeng@jiangfeng MINGW64 /e/mygit/git/myProject (master)
$ git push origin master  提交內容到遠程GitHub上
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 282 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/leiwuhen-67/project.git
   68d8bfc..afc4b17  master -> master

 

  若是不想將新建分支test與主分支master合併,而是想將新建分支上的文件上傳到遠程對應的分支上,那麼操做以下。首先應該在遠程GitHub上創建與本地對應的分支。如我本地新建的分支爲test,那麼我在遠程GitHub上新建的分支也應該爲test,操做爲:

  一、打開Git工具,進入到本地倉庫,如個人是myProject,由於默認爲主分支master,因此先要切換分支到test上,操做: git checkout test 

  二、在遠程GitHub上新建分支test與本地對應,操做: git push --set-upstream origin test 

  三、如我如今在本地test分支上新建一個test.txt文件,文件內容爲」hello world!」 操做爲: echo "Hello world!" >test.txt 

  四、將新建文件添加到緩存區。操做爲: git add . 

  五、將緩存區內容添加到本地倉庫,操做爲: git commit -m "測試分支" 

  六、將本地分支test的內容提交到遠程GitHub上,操做爲: git push origin test 

  七、刪除遠程分支: git push origin --delete <branchName> (或者: git push --delete origin <branchName>) 

  注意:第一次建立遠程分支時須要執行步驟2,之後若是要將本地分支上內容提交到遠程對應分支上直接git push便可

 

  最後要說的是,假如要獲取遠程分支test的內容到本地test分支上,應該如何操做呢?

  其實,很簡單,打開Git工具,進入到本地分支所在的倉庫,而後git pull origin test便可,例如我本地倉庫在E盤>myGit>Git下,倉庫名爲myProject,那麼個人操做依次爲:

   cd e: 、 cd mygit 、  cd git 、 cd myproject 、 git pull origin test (由於我這裏進去直接是test分支,若不是,則要先從主分支maste切換到test分支,在進行此操做)

  進行到這裏,那麼遠程分支test裏的內容已經獲取到本地test分支上了。

  一樣的,若是我想將本地分支test內容提交到遠程分支master上,那麼個人操做則爲: git push origin master 

  

  總結:

  一、查看分支:git branch

  二、建立分支:git branch  分支名

  三、刪除分支:git branch -d 分支名

  四、切換分支:git checkout 新建分支名

  五、合併分支:git merge 新建分支名

  六、創建遠程分支:git push --set-upstream origin 分支名

  七、獲取遠程分支如test內容到本地分支test上:git pull origin test

  八、提交本地分支test內容到遠程分支test上:git push origin test

  九、刪除遠程分支:git push origin --delete <branchName>(或者,git push --delete origin <branchName>)

  十、查看全部分支狀況(本地和遠程):git branch -a

  十一、建立並切換分支:git checkout -b 分支名

  十二、配置用戶名和郵箱:

    git config --global user.name 用戶名

    git config --global user.email 郵箱

  ps:假如服務器的某個分支刪除了,可是本地經過git branch -a仍是能夠看獲得,可經過如下命令更新分支的狀況。git fetch origin --prune

相關文章
相關標籤/搜索