自定義Git ~ 忽略特殊檔案.gitignore、配置別名、搭建Git伺服器(十八)
在 安裝 Git 一節中,我們已經配置了使用者名稱 user.name 和 Email 地址 user.email,實際上,Git還有很多可配置項。比如,讓 Git 顯示顏色,會讓 輸出的命令 看起來更醒目,如下:
這樣,Git 會適當地顯示不同的顏色,比如 git status 命令,如下:
檔名 就會標上顏色。
我們在後面還會介紹如何更好地配置Git,以便讓你的工作更高效。
1、忽略特殊檔案.gitignore
有些時候,你必須把某些檔案放到Git工作目錄中,但又不能提交它們,比如儲存了資料庫密碼的配置檔案啦,等等,每次 git status
好在 Git 考慮到了大家的感受,這個問題解決起來也很簡單,在 Git 工作區目錄下建立一個特殊的 .gitignore 檔案,如下:
然後把要 忽略的檔名 填寫 進去,Git就會自動忽略這些檔案,假設要忽略 log.txt 檔案,那麼就填 log.txt 檔名進去,如下:
不需要從頭寫 .gitignore 檔案,GitHub已經為我們準備了各種配置檔案,只需要組合一下就可以使用了。所有配置檔案可以直接線上瀏覽:https://github.com/github/gitignore
忽略檔案的原則是:
- 忽略:作業系統自動生成的檔案,比如 縮圖 等;
- 忽略:編譯生成的中間檔案、可執行檔案等,也就是如果一個檔案是通過另一個檔案自動生成的,那自動生成的檔案就沒必要放進版本庫,比如Java編譯產生的 .class 檔案;
- 忽略:你自己的帶有敏感資訊的配置檔案,比如存放口令的配置檔案。
說白了1,2點:自動生成的檔案直接忽略。
舉個例子:
假設你在 Windows 下進行 Python 開發,Windows 會自動在有圖片的目錄下生成隱藏的縮圖檔案,如果有自定義目錄,目錄下就會有 Desktop.ini 檔案,因此你需要忽略Windows自動生成的垃圾檔案,如下:
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
然後,繼續忽略 Python 編譯產生的 .pyc 、 .pyo 、 dist 等檔案或目錄,如下:
# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
加上你自己定義的檔案,最終得到一個完整的 .gitignore 檔案,內容如下:
# Windows:
Thumbs.db
ehthumbs.db
Desktop.in# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build# My configurations:
db.ini
deploy_key_rsa
最後一步就是把 .gitignore 也提交到Git ,就完成了!當然檢驗 .gitignore的標準是 git status 命令是不是說working directory clean,如下:
用 Windows 的童鞋注意了,如果你在資源管理器裡新建一個 .gitignore 檔案,它會非常弱智地提示你必須輸入檔名,但是在文字編輯器裡“儲存”或者“另存為”就可以把檔案儲存為 .gitignore 了。
有些時候,你想新增一個檔案到 Git ,但發現新增不了,原因是這個檔案被 .gitignore 忽略了,如下:
如果你確實想新增該檔案,可以用 - f 強制新增到 Git ,如下:
或者你發現,可能是 .gitignore 寫得有問題,需要找出來到底哪個規則寫錯了,可以用 git check-ignore 命令檢查,如下:
小結
- 忽略某些檔案時,需要編寫 .gitignore 即:建立 .gitignore ( $ touch .gitignore );
- .gitignore 檔案本身要放到版本庫裡,並且可以對 .gitignore 做版本管理!
2、配置別名
有沒有經常敲錯命令?比如 git status ?status 這個單詞真心不好記。
如果敲 git st 就表示 git status 那就簡單多了,當然這種偷懶的辦法我們是極力贊成的。(簡化命令)
我們只需要敲一行命令,告訴 Git ,以後 st 就表示 status ,如下:
好了,現在敲 git st 看看效果,圖上。
當然還有別的命令可以簡寫,很多人都用 co 表示 checkout , ci 表示 commit , br 表示 branch ,如下:
如上圖所示:以後提交 git commit 就可以簡寫成 git ci 的形式了;git commit → git ci ;
-- global 引數是全域性引數,也就是這些命令在這臺電腦的所有 Git 倉庫下都有用。
在 撤銷修改 一節中,我們知道,命令 git reset HEAD <file> 可以把暫存區的修改撤銷掉(unstage),重新放回工作區。既然是一個unstage 操作,就可以配置一個 unstage 別名,如下:
當你輸入命令,如下:
$ git unstage log.txt
上面的情況,實際上 Git 執行的是,如下:
$ git reset HEAD log.txt
現在輸入命令→要顯示最後一次提交資訊,如下:(未簡化命令)
配置一個 git last ,讓其顯示最後一次提交資訊,如下:
這樣,用 git last 就能顯示最近一次的提交,如下:(已簡化命令)
甚至還有人把 lg 配置成這種多樣的形式,如下:
由上圖可知:git lg 的效果 ;
配置檔案
配置 Git 的時候,加上 --global 是針對當前使用者(rose)起作用的,如果不加,那隻針對當前的倉庫(myApp)起作用。
配置檔案放哪了?每個倉庫的Git配置檔案都放在 .git/config 檔案中,如下:
別名就在 [alias] 後面,要刪除別名,直接把對應的行刪掉即可。
而當前使用者的 Git 配置檔案放在 使用者主目錄 下的一個隱藏檔案 .gitconfig 中,如下:
配置別名也可以直接修改這個檔案,如果改錯了,可以刪掉檔案重新通過命令配置。
小結
給 Git 配置好別名,就可以輸入命令時簡化,我們鼓勵操作。(簡化命令)
3、搭建 Git 伺服器
轉自:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000