2017-01-11 43 views
-1

我們使用了svn多年,並且最近已切換到Git。我們曾經在svn中使用更改列表來實現特定目的。它們與全球忽略類似,但不完全相同。全局忽略告訴svn不要添加適合該模式的文件,但是如果文件已經添加到版本控制中,忽略不會執行任何操作。這在Git中是一樣的。 Git忽略文件告訴Git忽略與給定模式匹配的文件,但如果它們還沒有被添加到版本控制中,則只有Git - 修改列表(svn)Equivalent

在svn中更改列表允許我們指定已添加到版本控制中的文件。一旦文件被添加到更改列表中,svn會在提交時忽略這些文件。這樣做的基本優勢在於,您可以自由編輯某些文件,而不必擔心無意中提交您不想進入主代碼庫的更改。一個很好的示例場景是,您想要處理特定客戶的配置,並將客戶特定的引用添加到應該不存在於核心代碼庫中的項目文件中。

Git有一個不同的stashes的概念。我們可以將deltas存儲在本地倉庫中。這些可以自由應用,推動或彈出,從而解決問題的一部分。但是,當我們做一個提交時(通過一些gui tool - tortoise git,gitkraken,VS),這些文件仍然會顯示在Git想要提交的文件列表中。我不希望他們出現,因爲我很可能犯了一個錯誤,並且意外地犯下了錯誤。

有沒有辦法在Git中實現類似功能的更改列表?

注:我真的不想通過命令行來做到這一點。我使用了Visual Studio,Git Kraken和Tortoise Git的組合。我喜歡Gui系統。我不想在命令提示符下運行命令,它會自動提交我的更改,同時避免指定的文件。

+0

您對更改列表的使用實際上不是標準的SVN功能iirc。特殊更改列表(類似於ignore-on-commit?)是TortoiseSVN的一項功能,並且它不適用於所有SVN客戶端(我記得一些SVN客戶端的確遵循相同的約定) –

+0

@Melbourne開發人員,請標記答案這有助於你解決問題。它會幫助其他有類似問題的人。 –

回答

0

在回答文章認爲@Marina - MSFT張貼導致我的回答: https://www.visualstudio.com/en-us/docs/git/tutorial/ignore-files

這將停止跟蹤已承諾在Git中的文件:已提交的文件的跟蹤

git update-index --assume-unchanged <file> 

簡歷Git中:

git update-index --no-assume-unchanged <file> 

我不想不得不在命令行中運行的東西,所以我做它停止一個批處理文件跟蹤我想忽略的所有文件。當我需要時,我只需雙擊它。 Git不再關注這些文件。它的工作原理與svn中的更改列表完全相同。

1

在vs中,如果您想忽略已經添加到版本控制中的文件,您需要使用命令git rm --cached filename幫助您實現目標,以便它可以被真正忽略(可以參考ignore files in vs)。所以像步驟:

  1. 添加文件名中的.gitignore
  2. 在命令行中使用git rm --cached filename
  3. 編輯的文件,這樣的變化不能被跟蹤

命令git update-index --assume-unchanged filename是支持性地忽略文件。切換到其他分支時,首先需要git update-index --no-assume-unchanged filename。這意味着它只能在短時間內運行,並且該文件實際上是由git控制的版本。如果它滿足您的需求,您可以使用它。

但是,如果您不需要對文件進行版本控制,則需要第一種方法。

+0

這看起來不太對勁,所以我對你發佈的文章做了一些挖掘。它建議這樣做:git update-index --assume-unchanged 。你爲什麼不用這個命令呢?這對我來說很有用。 –

+0

我更新了我的回答中的差異以供參考。 –