Git 使用的一些命令以及Git commit 注釋格式


1、Git 快速教程及命令

流程: 取代碼 → 每次工作前更新代碼到最新版本 → 修改代碼 → 提交代碼到服務器

1. 取代碼及修改全局設置

a. 設置用戶名與郵箱

git config --global user.name "My Name"
git config --global user.email "my@email.com"

b. 從已有的git庫中提取代碼

git clone git@server:app .git myrepo

2. 每次更改代碼的操作

a. 更新本地代碼到最新版本(需要merge才能合到本地代碼中)

git fetch

b. 合並更新后的代碼到本地

git merge

c. 更新代碼方式的另一種方法(git pull是git fetch和git merge命令的一個組合)

git pull

d. 修改代碼后,查看已修改的內容

git diff --cached

e. 將新增加文件加入到git中

git add file1 file2 file3

f. 從Git中刪除文件

git rm file1
git rm -r dir1

g. 提交修改

git commit -m 'this is memo'

如果想省掉提交之前的 git add 命令,可以直接用

git commit -a -m 'this is memo'

commit和commit -a的區別, commit -a相當於:

  • 第一步:自動地add所有改動的代碼,使得所有的開發代碼都列於index file中
  • 第二步:自動地刪除那些在index file中但不在工作樹中的文件
  • 第三步:執行commit命令來提交

h. 提交所有修改到遠程服務器,這樣,其它團隊成員才能更新到這些修改

git push

3. 附注

遇到過的一些錯誤:

Git – fatal: Unable to create ‘/path/my_project/.git/index.lock’: File exists.

fatal: Unable to create ‘/path/my_proj/.git/index.lock’: File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

可以試着刪除 index.lock

rm -f ./.git/index.lock


2、Git commit 注釋格式

Git 本身並沒有硬性限制注釋的格式,不過,對於多人參與的項目來說, 好的注釋風格更加有利於團隊合作。 即使是自己用,也應當堅持實用好的注釋風格, 一來是對自己的工作歷史負責,二來得以養成好的注釋習慣。 雖然這里標題說的是 Git,其他源代碼控制系統也可以參考的。

可以先看看一些著名開源項目源代碼管理系統當中的提交注釋, 其中也有用 SVN 和 Bazaar 的, Apahe 的源碼看不到 logview,可能是使用了 CVS 文件格式的原因:

結合其他參考文章,我總結 Git 的 推薦 注釋風格如下:

  1. 第一行為對改動的簡要總結,建議長度不超過 50,用語采用命令式而非過去式。

    Vim 很貼心,在默認配置下,注釋的第一行文字顏色是黃色, 超過 50 列之后就變成白色了。

  2. 第一行結尾不要英文的句號 . ,中文的就也不要  吧。

    為啥?我給 rst2wp 提交的時候,對方也提出了這個要求 [1] [2] , 后來查了查,大概原因是,第一行被認為是一個“標題”,也會作為郵件標題, 而標題是不需要標點的。 上面那些開源項目也都遵守了這一規則。 不過也有 例外的 。

  3. 第二行為空行。

    如果配置了自動發送郵件,那么第一行就用來做郵件標題, 第三行開始的內容是郵件正文, 第二行是分隔線,用於區分兩者。

  4. 第三行開始,是對改動的詳細介紹,可以是多行內容,建議每行長度不超過 72。

    可以包括原因、做法、效果等很多內容,一切你認為與當前改動相關的。 為何是 72 長度呢?因為 git log 輸出的時候能顯示得比較好看, 前面 4 個空格作為縮進,后面留 4 個空格機動(英文按單詞排版)。 Vim 的 gq 命令排版很方便。

    一些項目還對這個部分的內容有特殊要求,比如加一些特定標簽什么的。

  5. 建議全部英文,首字母大寫。如果一定要用中文,請盡量使用 UTF-8 編碼。

  6. 大項目中,可以用 module/submodule: 前綴作為第一行的開頭, 前綴首字母不必大寫。

    前綴的冒號后面跟一個空格比較好看。 為了控制字符串長度,子模塊名稱可適當縮寫,但應保持統一。

我以前喜歡在注釋第一行加上 New: Add: Fix: 這樣的前綴, 看來也是沒有必要了。

Tips: 提交之前,用 git diff --check 可以檢查有無空白字符錯誤, 比如行尾留有空白什么的。

BTW,在使用 Git 或者其他 SCM 時,還應當避免下面這些做法:

  • 把 SCM 當做備份工具。

    SCM 是項目/代碼管理工具,備份功能只是“福利”。 隨意將未完成測試或臨時的工作結果進行提交, 不僅破壞日志的“純潔性”,還不利於日后的瀏覽、整理、匯總等工作。 在開源項目中這么做的話,沒人會接受這種提交。 如果確實需要備份當前工作異地繼續的話,可以采用這樣的折衷方法:

    $ git commit                # 在本地進行提交
    $ git format-patch -n1      # 導出 Patch
                                # 這個 Patch 就是你的備份
    $ git am Path_To_Patch_File # 如果換了工作地點,導入 Patch
    $ git reset --mixed [hash]  # 撤銷提交,保留更改,繼續工作
  • 一個改動不一次提交完成。

    “提交”的概念是具有獨立的功能、修正等作用。 小可以小到只修改一行,大可以到改動很多文件, 但划分的標准不變,一個提交就是解決一個問題的。

    對格式的修正,不應該和其他功能修補一起提交, 這種情況應該考慮使用 git add --edit ,git add -p 也可以用用,更復雜和強大一些。

  • 注釋不清晰。

    比如只有“修正 BUG”、“改錯”、“升級”等,沒有其他內容,等於沒說。

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM