前天與朋友的工程師群組中,一起討論的一個問題,再做版控的時候需要Git 忽略本地存放庫、但遠端要維持版控

原因是想做到Web.config檔案可以區隔本地環境和正式部屬環境,這是很常在工作中遇到的。

我也經常發生在開發的環境中運行起來很正常,完美!

但只要一上到正式Server上面就整個掉漆,不是某個功能出不來就是會跑出exception(沒錯正如這個網站的精神!生活中到處都充滿exception)

這時候就要開始排除環境的因素,看是什麼差異性所導致的,如果能在版控上將開發環境與正式環境中的Web.config做好版本控制,可以事半功倍,不直接編寫 #if DEBUG 有效的分離成兩個檔案避免邏輯引發的問題。

Git 版控中忽略文件

再Git版控中如果要忽略某些檔案的話,以往的經驗是在需要版控專案的文件夾中添加.gitignore文件,在裡面列出想要排除的檔案
後,建立git存放庫就可以忽略不想要版控的東西了。

按造這個邏輯我給出的建議是那第一次版控的時候不要忽略Web.config,讓他推到Github或其他遠端後,之後再到.gitignore添加要忽略的條件後,重新下 Git Command Line讓它刷新.gitignore文件,之後就可以將本地和遠端分開了吧。

我的這想法是如此的單純,但也埋下了天真的錯誤!


先來示範一下這個過程

Git 忽略文件

在專案文件夾下面增加.gitignore文件,並且在裡面添加忽略config的規則

之後進Git CMD 下這兩個指令 刷新.gitignore文件

git rm -r --cached .
git add .

就會忽略掉.gitignore文件設定規則的文件了

正當覺得打完收工的時候

挖靠不對阿!!

這樣不納入版控推送後,遠端的Web.config也會消失掉

後來開始找有沒有開發團隊有更好的版控方式

https://github.com/wujunchuan/wujunchuan.github.io/issues/18

參考了這邊文章的建議

在共同開發的時候設立一個example文件加以區分

複製原本的Web.config將其重新命名為Web.config.example

之後遠端的版控都依靠這個檔案

就能做到本地端版控時Web.config不會進到本地的存放庫,推送到遠端時又能保有Web.config檔案
以上是目前覺得較好的解決方式,倘若各位前輩有更好的方式也請不吝賜教非常感謝??

Visited 39 times, 1 visit(s) today

Leave A Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *