基於Coding程式碼託管的Git基本使用指導

fxm547發表於2018-01-23

首發於fxm5547的部落格

適合:開發和測試人員

參考

必讀:coding.net/help/doc/gi… Git常用命令速查表 廖雪峰的Git教程 git教程中文版v2

安裝Git客戶端

安裝Git 安裝圖形化工具Sourcetree

命令列示例

新增遠端倉庫

對當前工程開始用 Git 管理,只需到所在的目錄,執行: $ git init

新增遠端倉庫: $ git remote add origin https://git.coding.net/fxm5547/gitest.git

接下來用 git remote 命令來檢視當前新增的遠端倉庫: $ git remote -v

或克隆遠端倉庫

  • 沒有submodule時:$ git clone https://git.coding.net/fxm5547/gitest.git
  • 有submodule時:$ git clone --recursive https://git.coding.net/fxm5547/gitest.git && cd gitest && git submodule foreach git checkout master

新增submodule

$ git submodule add https://git.coding.net/fxm5547/submodule-name.git submodule-dir 這樣在submodule-dir目錄下就是submodule-name的程式碼,根目錄會增加一個.gitmodules的配置檔案。

永久儲存使用者名稱和密碼

$ git config credential.helper store

分支

新建分支: $ git branch develop

切換到develop分支: $ git checkout develop

分支推送到遠端倉庫 git push [倉庫名] [分支名]: $ git push origin develop

更新程式碼

  • 沒有submodule時:
    • $ git pull
    • 100%更新程式碼成功(忽略一切本地更改):git fetch --all && git reset --hard origin/master && git checkout master
  • 有submodule時:
    • $ git pull && git submodule foreach git pull
    • 100%更新程式碼成功(忽略一切本地更改):git fetch --all && git reset --hard origin/master && git checkout master && git submodule foreach git fetch --all && git submodule foreach git reset --hard origin/master && git submodule foreach git checkout master

提交程式碼

檢視當前工作目錄的檔案狀態: $ git status

將修改/新增的檔案放入暫存區: $ git add login.code

提交至本地倉庫: $ git commit login.code -m "完成登入功能"

推送到遠端倉庫git push [遠端倉庫名] [分支名]: $ git push origin develop

$ touch login.code & echo 'login'>login.code
$ git add login.code
$ git commit login.code -m "完成登入功能"
複製程式碼

合併分支

目前用不到,一律通過Coding控制檯新建MergeRequest合併到Master

本地倉庫更新到最新,每次合併前都這麼做git pull [遠端倉庫名] [分支名]: $ git pull origin develop

將指定分支合併到當前工作分支git merge [分支名] : $ git merge develop

$ touch reg.code & echo 'register'>reg.code
$ git add reg.code
$ git commit reg.code -m "完成註冊功能"
$ git checkout master
$ git pull 
$ git merge develop
複製程式碼

merge時出現衝突,手動解決之後add和commit即可

Merge Request

參考 在Coding控制檯操作,專案負責人授權或直接合並即可。

git reset

還原到commit ID 指定的版本: git reset --hard HEAD~3

git revert

還原到提交前的版本

釋出管理

  • 釋出新版流程:
    • 在Coding控制檯刪除舊的 release branch,並從當前的 master 建立新的 release branch;
    • 伺服器更新程式碼:
$ git fetch --all && git reset --hard origin/release && git checkout release && git submodule foreach git fetch --all && git submodule foreach git reset --hard origin/release && git submodule foreach git checkout release
複製程式碼
  • 在Coding控制檯基於當前release分支新建tag。

  • Bugfix 流程: bugfix 指的是修復已經發布的程式(release branch)中的缺陷。

    • 在本地release branch 從 master cherrypick 修復該缺陷的一個或多個 commit;
$ git checkout release
$ git pull
$ git cherry-pick 2163f0331bb2d5491cf84fe4d5a0d638ed92afb1
$ git push origin release
複製程式碼

cherry-pick的commit-hash可通過 git log 或在控制檯檢視

  • 伺服器更新程式碼:
$ git fetch --all && git reset --hard origin/release && git checkout release && git submodule foreach git fetch --all && git submodule foreach git reset --hard origin/release && git submodule foreach git checkout release
複製程式碼
  • 在Coding控制檯基於當前release分支新建tag。

JetBrain IDE中使用Git

使用內建的控制檯

圖片

使用圖形化外掛

切換/新建分支

圖片
常用的操作
圖片

使用快捷鍵

開始編碼前Update Project工程,將所有分支更新到最新:

圖片

注意事項

  • Git對於空目錄預設不進行版本控制,請通過新增.gitkeep空檔案使其被track
  • 通過.gitignore新增不需要版本控制的檔案
  • 執行以下命令解決大檔案傳輸問題git config --global http.postBuffer 1048576000

相關文章