git命令行操作

1、克隆遠程倉庫 git clone [倉庫地址] ,但是這樣只能克隆master分支的代碼,如果我想克隆遠程倉庫中某一分支的代碼怎麼辦呢?git clone -b [對應的遠程分支名稱] [倉庫地址] 。

  如克隆aspnetcore的3.0分支:git clone -b 3.0 //github.com/dotnet/aspnetcore.git

2、本地切換分支,這裡分幾種場景:

  1)要切換的分支存在,直接使用 git checkout [要切換的分支]

  2)要切換的分支不存在,git checkout -b [要切換的分支],如本地倉庫切換一個新的開發分支,該分支是為了開發數據統計功能,則可以這樣切換:git checkout -b feature/data-statistics 【分支命名規範:需求特性開發可以使用feature/..;平時bug修復可以使用bugfix/..;線上緊急bug修復可以使用hotfix/..】

  3)上述切換方式為本地創建分支,該分支沒有對應遠程分支,若需要對應遠程分支,則需要設置 git branch –set-upstream-to=origin/data-statistics data-statistics 。若想在創建分支的時候就對應怎麼辦呢?可以使用git checkout -b data-statistics origin/data-statistics 。【註:前提是遠程倉庫有origin/data-statistics分支】

  4)本地分支指定其他遠程分支,則可使用 git remote add local_branch //github.com/dotnet/aspnetcore.git  

3、比如在本地分支data-statistics上開發結束,需要提交代碼合併,分如下步驟:

  1)本地代碼暫存 git commit -am 「數據統計開發 [ci skip]」 【註:① a表示暫存所有追蹤並修改的文件,m表示添加提交信息,這裡需要注意當你新增一個文件時直接使用該命令無法暫存,必須使用git add .或者git add [添加的文件]進行添加然後再git commit -m ② 提交信息中出現的[ci skip]是為了跳過當提交到遠程倉庫的ci/cd過程,若無特殊要求可以忽略】

  2)本地暫存好之後,可以使用git push命令推送至遠程倉庫,若遠程倉庫沒有該倉庫會自動進行創建。【這個步驟是為了確保代碼安全,或者共享】

  3)代碼合併過程

    a. 遠程倉庫上提交merge request進行合併【一般情況下,master、staging、test、develop分支都是應該受保護的,也就是本地倉庫不能直接push到遠程倉庫,只能採用遠程倉庫merge request的方式進行代碼合併。】

    b. 本地合併,如要將data-statistics上的代碼合併到本地test分支,首先保證data-statistics上的代碼已經commit,然後使用git checkout test,【註:這個時候需要注意不是立即合併,而是需要拉取遠程倉庫Src_Test的最新代碼至本地git pull origin test -r,保證本地test代碼是最新的】,再使用git merge data-statistics命令進行代碼合併。若合併過程中出現衝突,需要在vs或其他你認為方便的工具上解決衝突,再次commit,然後push

    c. 不管是哪種方式,都應該本地解決衝突後再提交,避免線上解決衝突

4、查詢修改了哪些文件

  git status 【註:在commit代碼時最好先使用該命令檢查下修改了哪些文件】

5、查詢當前分支的日誌記錄

  git log [–oneline] [–graph] [-10] 顯示最新的10條提交記錄

6、本地版本回退到某個指定版本

  1)查詢修改記錄,獲取提交記錄的版本id

  2)根據版本id使用 git reset –hard accb136f

  3)若想回退遠程倉庫的版本,則需要強制回退 git reset –hard accb136f –force

7、查看本地有哪些分支,可以使用git branch,若想查看所有則可使用git branch -a

  【註:有時候你會發現,明明在git上刪除了遠程分支,但是在git branch -a的時候仍可以看到,這個時候你可以使用git remote prune origin來進行修剪】

8、git merge和git rebase可以用來合併代碼,但它們使用的場景不同,尤其注意git rebase的使用 

Tags: