前天與朋友的工程師群組中,一起討論的一個問題,再做版控的時候需要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檔案
以上是目前覺得較好的解決方式,倘若各位前輩有更好的方式也請不吝賜教非常感謝??