Git 簡單入門(二)

分支管理

  1. 分支的做用
    1. 提交不完整的代碼到主分支上會致使別人不能正常開發
    2. 若是等代碼所有寫完再提交,存在丟失天天進度的風險
      詳見:https://segmentfault.com/q/1010000010105733
  2. 新建與分支合併
    1. 過程
      1. Git 建立分支(例:dev) 除了增長一個dev指針外,讓HEAD指向dev,工做區的文件沒有變化
      2. 而後對工做區的修改和提交就是針對dev分支(HEAD指向的分支)
      3. 分支合併,直接將master指向dev的當前提交
      4. 而後能夠將dev分支(dev指針)刪掉
    2. 命令,例:
      1. 建立分支
        建立dev分支並切換到dev分支html

        git checkout -b dev

        上面的命令至關於git

        git branch dev
        git checkout dev
      2. 切換分支github

        git checkout master
      3. 合併指定分支到當前分支
        1. 正常合併
          git merge dev
        2. 若是在這個過程以前 主分支上面的代碼也被你的同伴修改過,這樣會出現衝突,這時候使用 git status 能夠查看一下衝突的文件,而後能夠去該文件中將Git <<<<<,=====,>>>>>> 標記出的不一樣分支的內容,解決完衝突後保存,而後再進行提交一次便可
      4. 合併完成後能夠刪除dev分支數據庫

        git branch -d dev
      5. 查看分支segmentfault

        git branch
      6. 若是沒有合併分支就要把分支刪除,可使用:app

        git branch -D 分支
        注:
      7. 合併分支時,Git通常默認使用 Fast forward 模式,刪除分支後,會丟掉分支信息
      8. 使用 git merge --no-ff -m"comment" dev 會在merge分支的時候生成一個新的commit,能夠從分支歷史上看出分支信息
  3. 常見分支策略
    1. master 分支是很是穩定的,僅用來發布新版本
    2. dev 分支是不穩定的,在dev上幹活
    3. 在往下面創建一些本身的分支
  4. Bug分支
    場景:當工做進行到一半,沒辦法提交,忽然接到一個要在兩個小時解決一個bug的通知
    1. 使用 stash功能將當前工做現場保存起來測試

      git stash
    2. 卻換到須要修復Bug的分支,如(master),新建一個臨時分支
    3. 而後修改Bug,提交到臨時分支上
    4. 確認Bug分支沒問題的話,能夠卻換回master分支,而後合併Bug分支
    5. 最後刪除Bug分支
    6. 找回剛剛保存起來的工做場景,命令:網站

      git stash list
      #顯示     stash@{0}: WIP on dev: 6224937 add merge
      而後恢復以前的工做場景,兩種方法:
      1. git stash apply stash@{0} 恢復後stash內容並不刪除
      2. git stash pop stash@{0} 恢復的同時將stash刪除了
  5. Feature分支
    1. 就是針對要開發的功能新建一個功能分支,開發完成後,完成合並後將該功能分支刪除
  6. 本地與遠程
    1. 當從遠程庫克隆的時候,Git自動將本地的master分支和遠程的master分支對應起來,遠程倉庫的默認名稱是origin
    2. 查看遠程庫的信息用 git remote -v
    3. 推送分支
      經測試,無論你提交時在哪一個分支,若是執行 git push origin master 時 會將本地的master分支推送到遠程的master分支,若是執行 git push origin dev 時 ,會將本地發dev分支推送到遠程的dev分支,可是若是在dev分支上 執行 git pull origin master 時,會吧master分支上的內容拉下來而且與當前的分支合併
    4. 若是git pull 提示提示「no tracking information」,則說明本地分支和遠程分支的連接關係沒有建立,用 git branch --set-upstream branch-name origin/branch-name。
    5. 多人協做的工做模式:
      1. 首先嚐試 git push origin branch-name 推送本身的修改
      2. 若是推送失敗,則由於遠程分支比你的本地更新,須要先用git pull 視圖合併
      3. 若是合併有衝突則解決衝突,並在本地提交
      4. 沒有衝突或者解決掉衝突後,使用 git push origin branch-name 推送
    6. 遠程分支管理
      1. 推送本地分支 dev 到 遠程分支 dev 並創建關聯關係
        1. 遠程已經有dev 而且已經關聯本地分支dev 使用 git push
        2. 遠程已經有dev 可是未關聯本地dev 使用 git push -u origin/dev
        3. 遠程沒有dev分支 使用 git push origin dev:dev
      2. 刪除遠程分支 (遠程分支刪除後本地分支還在)
        執行下面兩條命令
        1. git branch -r -d origin/branch-name #刪除對分支的追蹤
        2. git push origin :branch-name #刪除遠程分支

標籤管理

在發佈版本的時候,能夠在版本庫中打一個標籤,這樣就惟一肯定了打標籤時刻的版本。在須要的時候可取某個標籤的版本。標籤至關因而版本庫的一個快照,能夠自定義標籤名字,便於查找操作系統

  1. 管理標籤
    1. 建立標籤
      git tag tag_name
      上面的命令默認是打在最新提交的commit上的,若是有時候忘記打標籤的話,能夠找到歷史提交的commit id 而後打上標籤便可
      git tag tag_name commit_id指針

      能夠建立帶有說明的標籤,用 -a 指定標籤名,-m 指定說明文字
      git tag -a -m "blablabla..."

      還能夠經過 -s 用私鑰 簽名一個標籤:
      git tag -s -m "blablabla..."
      簽名採用PGP簽名,所以,必須首先安裝gpg(GnuPG),若是沒有找到gpg,或者沒有gpg密鑰對,就會報錯
    2. 查看標籤
      1. 用git show tag_name 查看標籤的說明
      2. git tag 查看全部標籤
    3. 刪除標籤
      git tag -d tag_name
    4. 遠程標籤
      建立的標籤默認只存儲在本地,不會自動推送到遠程
      1. 推送某個標籤到遠程
        git push origin tag_name
      2. 一次性推送所有還沒有推送到遠程的本地標籤
        git push origin --tags
      3. 若是標籤已經推送到遠程,要將遠程標籤刪除
        1. 先將本地標籤刪除 #這個其實能夠不作
          git tag -d tag_name
        2. 從遠程刪除
          git push origin :refs/tags/tag_name

忽略特殊文件

有些文件放在Git工做目錄中,可是又不能提交它們,不如數據庫密碼等配置文件,可是每次git status的時候都會顯示好多 Untracked files ... , 這能夠經過在Git 工做目錄中建立一個 .gitignore 文件,而後把要忽略的文件名填進去,Git就會自動忽略這些文件

.gitignore 參考 : 見GitHub的示例
忽略文件的原則:

  1. 忽略操做系統自動生成的文件,好比縮略圖等;
  2. 忽略編譯生成的中間文件、可執行文件等,也就是若是一個文件是經過另外一個文件自動生成的,那自動生成的文件就不必放進版本庫,好比Java編譯產生的.class文件;
  3. 忽略你本身的帶有敏感信息的配置文件,好比存放口令的配置文件。

配置別名

咱們有時候在面對很是長的命令會頭疼,這時候能夠給這些命令配置一個別名,這樣就可使用別名來進行相關操做了

命令:git config --global alias.別名 原名   # 注意,當原名是一個單詞的時候不須要加引號,若是超過了一個單詞,原名就須要用單引號包括

例:
git config --global alias.st status
執行過以後,下次再須要執行 git status 時就能夠直接輸入 git st 便可

示例:

git config --global alias.unstage 'reset HEAD'
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

注意:

  1. 配置Git的時候,加上--global是針對當前用戶起做用的,若是不加,那隻針對當前的倉庫起做用。
  2. 每一個倉庫的Git配置文件都放在.git/config文件中,當前用戶的Git配置文件放在用戶主目錄下的一個隱藏文件.gitconfig中
  3. 配置別名也能夠直接修改這個文件,若是改錯了,能夠刪掉文件從新經過命令配置。

本文參考: 廖雪峯的官方網站
如需轉載請註明出處:http://www.cnblogs.com/zhuchenglin/p/8820186.html

相關文章
相關標籤/搜索