我有一個git問題,答案應該在這裏的某處stackoverflow,但我找不到它。Git忽略本地文件並始終合併它們
想象一個團隊從事一些有sass或其他建設文件的項目。多個開發人員構建這些文件,並且我們希望構建的文件能夠進行版本化,以防非開發人員想要克隆和檢出項目而無需首先構建。
但是,在項目中包含builded文件會一直創建合併衝突。
我們可以忽略本地更改,只讓主要開發人員檢查他的版本中的時間。
忽略可以用一個用戶自定義的.gitignore文件或進行:
$ git update-index --assume-unchanged path-to-file.css
但這種拉動時產生了一個問題。
$ git pull
remote: Counting objects: 30, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 16 (delta 11), reused 16 (delta 11)
Unpacking objects: 100% (16/16), done.
From github.com:User/MyProject
4e1s389..a231344 development -> origin/master
Updating 63sdf04..a231344
error: Your local changes to 'path-to-file.css' would be overwritten by merge.
Aborting.
Please, commit your changes or stash them before you can merge.
一種解決方法將被檢查出文件中的所有時間,例如用別名:
git config --global alias.cobuilded 'checkout path-to-file.css'
再經過一些工作和建設:
git cobuilded
git commit -am "work done"
git pull
git push
但要有對於這個問題是一種更簡單的解決方案嗎?
git ignore-this-file-and-always-merge-theirs-from-origin path-to-file.css
我已經找到this問題和可能的解決方案總是合併他們的。但在我的情況下,合併前的拉已經失敗...
如何將策略更改爲在主分支上完全不提交css文件?您仍然可以通過讓您的首席開發人員,自動構建服務器工具或post-commit-hook在單獨的分支上編譯scss-> css來保持克隆包括css在內的完全工作的repo的理想。這個單獨的分支將永遠不會合並回主,但會不斷將您的主分支合併到它,sass運行它,然後由此產生的CSS承諾。 –
聽起來不錯。當一些最終用戶或測試人員需要一個完整的工作副本時,他們可以克隆該回購,而不是主人!是否有可能通過某種類型的push-hook來完成這個服務器端? – Tieme