2008-11-26 149 views
2

我的公司最近開始使用Git進行源代碼版本控制,並且由於編碼人員的無能 - 這就是我和我的老闆:-P--我們有一個很好的意大利文件覆蓋在這裏那裏。
有沒有辦法將某些文件標記爲「不可觸摸的」,所以如果從另一個分支更新分支時要麼不覆蓋文件要麼根本不做更新?
在此先感謝。使用Git防止文件覆蓋

回答

3

你可以完全按照鉤子的要求來做,但我不知道這是否能解決你真正的問題。

如果它正在進行中的文件變得非常簡單,那很容易:不要使用未提交的更改進行拉/合併/重新綁定。在引入任何其他代碼之前始終進行提交。

1

一般來說,當使用checkout從分支移動到分支時,Git會盡量避免覆蓋已更改的文件。也就是說,如果一個文件沒有被改變,並且Git需要改變它,文件將會改變(之前的文件內容仍然存在於前一個分支中)。如果文件已被更改,Git確實而不是需要更改它,則文件內容將被保留。如果文件已被更改,Git想要更改它,則會通知您本地更改與分支更改衝突,Git將拒絕切換分支。

爲了理解您的文件被意外覆蓋的原因,我們可能需要有關您所做的更多信息。

0

聽起來像你想要的是阻止git跟蹤'不可觸摸'的文件。這是通過使用git rm command完成的。

git rm <file> 

如果這是您想要的,請使用--dry-run開關預覽將會發生的情況。如果您確定要刪除文件,則可能需要使用--cached開關,以便不刪除本地文件。

當然,您必須手動將文件添加到未來的分支機構,這可能不是一個好主意。

1

需要採取非常具體的措施才能讓Git丟棄信息,即使如此也不會覆蓋信息。所以情況可能不是你想象的那樣。

將Git倉庫視爲您的源代碼的交易數據庫。根據你的操作系統和設置,它可能是一個隱藏的數據庫,所以你看到的只是工作目錄。

事情是:Git在您的本地文件系統中使用該工作目錄作爲數據庫上的瀏覽器。那'觀點'可以改變,並且所有交易(提交)的記錄是仍然在回購中,不變的

因此,您看到的工作目錄將根據您所調用的「視圖」(結帳,通常是分支)而改變。即使是在你的文本編輯器中打開的文件副本也可以改變,這在我第一次注意到它的時候確實讓我感覺到了。

可以扔掉以前的工作,例如:
1. git reset HEAD~2它扔掉,你最後兩次提交或
2. checkout -f它扔掉你的工作目錄中未提交的更改(如無法挽回他們沒有('視圖')
但您不能無意中覆蓋信息,但至少不會收到警告消息。在大多數情況下,信息仍在回購庫中,直到它被垃圾收集爲止,通常超過30天。

正如Greg所說,我們需要更多信息才能確定。

3

您可以添加一個名爲.gitignore的文件。任何與該文件中的正則表達式匹配的文件名將被git忽略。

*.log 
*~ 
conf/* 

修改味:

所以,我平時喜歡的東西開始。