Git .gitignore 設定 與 注意事項 - 以 Zim 操作為範例

Git 設定 .gitignore, 設定完成就都直接生效, 在測試時都很正常, 但是實際使用 卻沒有生效, 有點軌異.

環境

  • Git 所管理的專案名稱、位置: /home/user/doc

下述範例是以 Zim 為主, Zim 是一套桌面的 Wiki 編輯器, 裡面寫的內容都會存成 txt 檔, .zim 的目錄下會存 "*.cache" 和 "zim 本身自己的設定值".

Zim 在剛開始建立完成後, 就使用下述步驟:

  1. cd /home/user/doc
  2. git init
  3. git commit -a
  4. git push #一開始沒有設定 .gitignore, 所以會將 .zim/* 都 commit 進去

於每次開啟 Zim 後, 都會出現

modified:   .zim/history.cache
modified:   .zim/index.cache

造成 git commit -a 的麻煩 (因為多台電腦要同步時, index.cache / history.cache 都會出現需要 merge 的狀況), 所以想設定 .gitignore 來把它拿掉. (方便 git commit -a)

設定 .gitignore 位置、方法

設定 Git ignore 的方式都一樣, 有下面幾個地方可以設定, 依自己喜好 / 需求來設定即可.(設定位置)

  • vim ~/.gitignore # 對所有 Git 的專案生效 (自己的 home 目錄下)
  • vim doc/.gitignore # doc 是專案名稱, 用這個的好處是, 將 .gitignore commit 進去, 此 .gitignore 可以隨著專案到處走. (Git 管理的 Project 目錄下)
  • vim doc/.git/info/exclude # 只有單獨於此處 .git 生效 (Project 的 .git/info/exclude 檔案)
  • 這幾個地方都可以設定, 可以使用 * 等符號. 詳可見: gitignore(5) Manual Page

於 .zim 的狀況, 可以設定下述: (設定方法)

  • 所有 . 開頭的目錄 / 檔案都不 commit

    .*

  • .zim 目錄內 的 所有 *.cache 都不 commit

    .zim/*.cache

  • 只有 .zim/history.cache, .zim/index.cache 不 commit

    .zim/history.cache
    .zim/index.cache

.gitignore 無法生效 的 問題修復

在測試狀況都是正常, 但是在 Zim 實際使用就有問題, 每次都出現 modified 的解法.

解法
  1. 因為第一次 commit 已經將 .zim/*.cache commit 進去了, 所以每次它都會去檢查, 造成都出現 modified 的狀況.
  2. git rm -f .zim/history.cache
  3. git rm -f .zim/index.cache
  4. git commit # 即可
  5. 再將 .gitignore 設定好, 就可以避免掉這些狀況囉~ 🙂

範例 -我的 Zim 設定方式

  1. cd /home/user/doc
  2. vim .gitignore

    .zim/*.cache

  3. git add .gitignore
  4. git commit
  5. git push

關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 My_Note-App-Setting。將永久鏈結加入書籤。

Git .gitignore 設定 與 注意事項 - 以 Zim 操作為範例 有 9 則回應

  1. 孟德 說道:

    我用 zim 也用 git , 但是沒有用 git 管理 Zim , 反而是用 dropbox 同步 zim 部份。

  2. Tsung 說道:

    嗯, 我是用 Ubuntu One 來管理, 但是每打一下, 他就會自動 sync, 系統就會卡一下...
    就是因為這樣子, 所以就變 Git + Ubuntu One 來管理.

  3. 笑哈哈 說道:

    我現在使用 zim/pyzim 0.44 + dropbox
    我發現幾個問題,
    1. 當兩台電腦同時存取一page時,會產生 conflict file
    其檔名格式為 " filename (xxx's conflicted copy 2010-02-15).txt"
    而這個檔,會讓我的Zim Index出問題,和conflict file 相同目錄下的page消失,
    重建index也沒用,不曉得有沒有知道解法。
    2. Zim 目前在search 功能上,是不是不支持中文呀,因為我用中文去search ,都沒反應。

  4. Tsung 說道:

    1. 我不把 index file commit 進去, 至於放進 dropbox 這個, 我就沒試過了. (不過 同時兩台存取同一個 page 會出這個問題, 我覺得應該是正常的吧, 不該這樣子做呀.. XD)
    2. 支援中文, 我的可以正常 Search.

  5. 笑哈哈 說道:

    板大可以正常Search 中文?!
    請問,你也是用 Zim 0.44嗎?
    他是pyzim 最近的release 版本。
    (pyzim 是zim 的branch現在主要只有maintain pyzim,而且打算代替原本用pearl寫的zim.)
    我用search page 功能打中文search 都完全沒反應.....
    因為我工作會用到XP及linux,所以,常常兩台電腦同時打開Zim查資料或編寫,
    ,所以時常發生conflict file, 不過我認為一般使用下也會遇到,
    例如,公司網路不穩,
    編寫完Zim後沒有傳到Dropbox server上,
    而回到家後,又對Dropbox 上的Zim作修改,也上傳到Dropbox了
    等隔天到公司,網路好了,
    公司的電腦就上傳了昨天舊的修改到Dropbox,
    如此一來,conflict就發生 了。

  6. Tsung 說道:

    我用的是 0.28 (Ubuntu linux 的 Zim)
    然後, 我是統一用 Git 管理, 沒用 dropbox, 所以這個我沒遇到哩~ 🙁

  7. ilower 說道:

    被git下某个文件ignore无效的问题困扰了好久,终于在这儿看到原因和解决办法,谢谢分享

  8. Bill Z 說道:

    开始用zim,感觉不错 

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料