本文總結了最近使用Git時候遇到的兩個問題:
1. 當將不必要跟蹤的文件加入到倉庫後如何處理?
2. 提交了多個功能相同的commit後如何處理?
總結經驗
- 在創建倉庫的一開始,就要設置號.gitignore文件,用於過濾掉不需要跟蹤的文件和文件夾
- 謹慎提交commit,確保每個commit中所有的改動都是跟同一個任務相關的。
我是怎麼解決上述兩個問題的
1. 移除對文件/文件夾的跟蹤,但不刪除
- 使用命令
git rm --cached ignore_target_file
刪除對某個文件的跟蹤 - 新建.gitignore文件,使用下列規則添加要忽略的文件或者文件
- 所有空行或者以註釋符號 # 開頭的行都會被 Git 忽略。
- 可以使用標準的 glob 模式匹配。
- 匹配模式最後跟反斜槓(/)說明要忽略的是目錄
- 舉例,我的.gitignore文件內容如下
# 忽略.gitignore文件
.gitignore
# 忽略.idea/文件夾
.idea/
# 忽略target/文件夾
target/
執行移除,新建.gitignore文件之後,再次git status就可以看到,這些討厭的多餘文件已經不被跟蹤了。什麼樣的文件需要被忽略?編譯生成的文件夾,如target目錄;機器自動生成的,我們不會手動修改的隱藏文件,如.idea目錄;中間文件,例如java項目中的.class文件。
2. 合併多個相似的commit
- git rebase -i HEAD~4
- 將除了第一行(最老的那個commit)之外的行首的pick全部換成squash
- :wq保存並推出
- 修改最新的commit message即可