git經常使用操做以及常見衝突的解決方法

git 操做(經常使用命令)

注意:遠程倉庫的默認名稱是origin

  • git remote add <name> <url>(本地關聯遠程倉庫)
  • git remote(查看遠程倉庫的信息 git remote -v 顯示更詳細的信息)
  • git clone <url>(克隆遠程倉庫)
  • git push -u origin master
    • 將本地master分支上的內容推送到遠程,第一次時須要使用 -u ,即推送內容並關聯分支
    • 之後直接用 git push
  • git pull
    • git push命令和git pull命令只有在master分支上有效,在其餘分支上須要聲明遠程倉庫的名稱以及對應的分支名
    • 拉取遠程master分支上的內容。


  • git branch(查看當前分支)
  • git checkout -b <分支名>(在當前分支建立新的分支而且切換到對應分支,沒有 -b 表示有分支,直接切換到對應分支)
  • git merge <分支名>(合併指定分支到當前分支下。通常先切換到目標分支,而後在目標分支下去合併須要被合併的分支)
  • git branch -D <分支名>(在某個分支上刪除指定的分支)


  • git init(變成git能夠管理的倉庫)
  • git status(查看當前分支的內容是否被修改)
  • git diff 文件名 (查看對應文件被修改的部分,爲確保萬一,該命令在add以前執行)
  • git add 文件名(修改文件後添加到暫存區,後面是「.」時,所有)
  • git commit (把暫存區的全部內容提交到當前分支)
  • git log 查看日誌
  • git reset --hard <具體的版本命令>(版本命令能夠簡寫,不須要寫全,通常寫前幾個能區分開來就好)
    1. git reset --hard HEAD^(回退到上一個版本)
    2. git reset --hard HEAD^^(回退到上上一個版本)
    3. git reset --hard HEAD~n(回退到第n個版本)

遵照:

  1. 在哪一個分支,就拉取哪一個分支的代碼 git pull origin <具體的分支名>
  2. 在哪一個分支,就推送哪一個分支到遠程 git push origin <具體的分支名>
    • 開發一個功能以前,先切換到master分支,而後在master分支上建立新的功能分支。
    • 每一個功能分支對應ui和interface。
    • 每開發完一個功能,就將其推送到遠程。遠程和本地開發創建一一對應的關係。
  3. 若是在哪一個分支上執行推送命令失敗,哪麼咱們就先執行拉取命令而後再執行推送命令。
    • 緣由:咱們在本地C分支推送內容以前始終要保持本地C分支和遠程對應的C分支上的代碼都是同樣的。
  4. 在A分支上須要合併B分支上的代碼,就須要先切換到A分支上,而後在A分支上再合併B分支上的代碼
  5. 執行git commit 命令時,開發內容描述要用簡單、直接的英文描述。

解決衝突

注意:在公司項目的開發過程當中,通常會對應三種不一樣的環境。開發環境、測試環境和生產環境。

  1. 咱們在開發環境寫代碼,開發環境和遠程的分支都對應同一個測試分支(staging),名字隨意。
  2. 遠程的staging分支對應測試環境。咱們每開發一個功能,都要合併到本地的staging分支,而後將其推送到遠程。
  3. 遠程的staging分支對咱們解決衝突起着重要的做用
    • 緣由:咱們在本地每完成一個功能就合併到staging,因此staging上永遠都是最新且已經解決完衝突的代碼。
  4. 可能有的公司並無staging這樣一個測試分支對應的測試環境,直接是master分支對應的一個測試環境。
    • 咱們不可能直接在master分支上直接開發功能,因此咱們須要一個像staging分支同樣將各個功能整合的分支。
    • 哪麼咱們就在開發環境建立一個供本身參考,方便咱們解決衝突的測試分支————own_test,名字隨意。
  5. 每作一個功能,將功能對應的分支合併到own_test,而後推送到遠程。

最多見產生衝突的緣由

  • 多我的修改了同一文件的同一塊區域。

開始解決衝突

注意:對於一個普通的開發者來講,咱們不該該直接將咱們的功能分支合併到master分支上。這種事情仍是讓大佬審覈後去作。

遠程pr合併時衝突的解決方法

  1. 本地開發環境切換到master分支,而後使用 git pull 拉取遠程最新master分支上的代碼(被多我的修改)。
  2. 而後本地切換到與遠程對應提pr產生衝突的分支D(準備解決衝突)。
  3. 切換到本地D分支後,使用 git merge master 命令合併master分支上的代碼(衝突產生)。
  4. 與遠程 staging或者own_test 分支上的代碼做比較,解決本地D分支產生衝突的部分(真正解決衝突)。
  5. 本地D分支commit後,使用 git push origin D 命令將D分支推送到遠程(遠程提pr對應的D分支衝突解決)。

本地功能合併到staging分支的衝突解決方法

  1. 對比產生衝突的部分
  2. 分析產生衝突的部分,無非下面幾種狀況
    • 只增長了不一樣的內容
    • 既有增長的內容也有修改的內容
    • 就多了幾行空行
  3. 若是是多了幾行空行,哪麼按照本身寫代碼的規範處理便可。
  4. 若是是隻增長了不一樣的內容,將它們整合,調試到該功能完善。
  5. 若是既有增長的內容也有被修改的內容,哪麼就須要慎重刪減,通過屢次調試,完善功能。

建議

  1. 一個功能對應一組功能分支(ui和interface)。
  2. 開發以前執行 pull 命令拉取最新代碼,而後再開發功能。
  3. 執行 commit 命令時的功能描述用英文。
相關文章
相關標籤/搜索