簡體   English   中英

Git:不要在Windows上更新某些文件

[英]Git: don't update certain files on Windows

我們使用的git倉庫有20,000多個文件。

我的小組維護該存儲庫中大約100個左右的配置和源文件的本地版本。 原始內容是一種基礎,多個小組可以根據自己的需要進行修改和調整(不允許更改某些核心內容,但是各個小組之間的前端和某些自定義DB內容有所不同)

因此,我們通常希望更新到最新版本,但不要讓git update覆蓋我們保留本地修改的文件。

我們使用的機器是基於Windows的。 當前,存儲庫被克隆到Windows服務器,然后被檢出/克隆到開發機器(也是Windows)。 開發人員根據需要進行更改,然后重新提交給我們的本地倉庫。 本地倉庫每天都會針對主倉庫進行更新。 我們從不退回主人。

因此,我們希望所有未由我們小組更改的文件都進行更新,但是任何(曾經)更改的文件都不會更新。

有沒有一種方法可以使這種情況自動發生,因此Windows Server只是每天自動更新,而忽略了我們對其進行修改的文件。 而且,如果我們要向此“不更新”列表中添加新文件,只需單擊鼠標右鍵(甚至是平面文件列表即可)。 我看着git-ignore,但這似乎是為了提交,而不是為了更新。

更好的方法是自動下載香草文件,但將其自動重命名。 例如settings.conf是一個我們通常希望保持更改的文件,但是如果它們修改了該文件中條目的處理方式或添加了其他選項,那么最好將其下載為settings.conf.vanilla或其他內容,只需對我們的.vanilla文件進行比較,看看我們要保留什么。 盡管此功能並非絕對必要,而且似乎不太可能。

如果無法在Windows機器上完成此操作(用於Windows的軟件不支持此類功能),請列出一些Linux選項(如果有)。 如果需要,我們確實可以選擇使用Linux服務器來托管本地git repo。

謝謝。

聽起來您正在使用正在積極開發的第三方代碼庫,並且您需要應用自己的定制。

我認為您正在尋找的答案是rebase 您不需要編寫任何外部邏輯來實現此目的,除了一項工作需要定期提取第三方更改並在這些更改基礎上重新進行修改之外。

這也比不理會修改過的文件更正確,因為這樣您就不會意外忽略第三方對這些文件所做的更改(您有時可能會遇到沖突,這可能會令人沮喪,但比默默地錯過了重要的更改)。

假設您的本地存儲庫確實只是一個分支,請在自己的分支上維護您的更改,並且每次更新遠程存儲庫時,只需在這些更改之上重新構建您的本地分支即可:

git pull origin master
git checkout custom_branch
git rebase master

編輯

你這樣做之后,你會用你對你所做的所有更改最終custom_branch坐在上面master 然后,您可以繼續在自己的分支上進行自定義,並且第三方代碼的開發可以獨立地繼續。

下次您要進行其他更改時,將重復該過程:

在對第三方代碼進行更改之前,請確保您位於master分支上:

git checkout master

引入更改:

git pull origin master

轉到您的自定義分支:

git checkout custom_branch

將您的更改移至第三方更改之上:

git rebase master

然后,這會將您自己的所有更改再次置於 master 之上 master本身不會改變。

請記住,您的存儲庫的結構只是來自形成一棵樹的整套“哈希”。 您的分支就像附加在特定哈希上的“張貼”便箋一樣,並且隨着分支的增長可以移動到另一個哈希中。

rebase就像砍了分公司,並重新連接到其他地方。 在這種情況下,您說的是“切斷我們的更改並將其重新連接到主干頂部”。

如果您可以安裝GitX之類的可視工具,那么在重新設置基准時,將真正有助於查看分支標簽如何移動。 命令行是使用它的理想選擇,但是我發現GitX之類的東西對於了解您的倉庫結構非常有價值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM