我最近从Perforce转到某些项目的Github(VS2017的内置支持)。 Perforce中有一个名为“使可写”的功能,该功能使您可以在本地写入文件,然后仅通过显式签出然后提交来将其提交到服务器。
此方法广泛用于几乎不需要推送但仍需要写入的任何二进制文件(.exe等)。
不幸的是,根据我在Github上的有限经验,似乎所有文件都被设置为可写的,并且即使是exe也总是被标记为“已更改”。我是否可以进行设置,或者设置为允许Github仅将文件标记为显式更改,这样我就不会意外地推送不完整,损坏或调试的.exe?
答案 0 :(得分:1)
更新后的答案:所以,我忘记了,如果文件在任何时候都被Git跟踪,那么它会变得有些丑陋。有很多解决方法,但这并不是一个简单的命令。
如果您想执行.gitignore路由,则可以。但是还有一个附加步骤(请参阅下面的第一步)。每次提交.exe文件后,您都必须运行git rm --cached <filename>
。这将删除文件周围的元数据,告诉Git对其进行跟踪。完成此操作后,它将不再显示在Visual Studio插件的“更改”列表中(如果在命令行中,则不会显示在git status
中)。然后,要添加文件,请执行下面提到的操作,即执行git add -f <filename>
。
如果相反,执行此操作的另一种方法是运行git update-index --assume-unchanged <filename>
。这告诉Git忽略对文件的更改。当您要提交它时,首先运行git update-index --no-assume-unchange <filename>
并执行常规的git add
git commit
工作流程,然后在提交后再次运行git update-index --assume-unchanged <filename>
位。实在太混乱了,我会在VS中编写一个自定义工具来执行此操作,而不是依赖Visual Studio中的内置SCM工具。
原始答案:最好的方法(IMO,其他人会有他们自己的意见)是将文件添加到您的.gitignore中。然后,如果/当您确实要提交它们时,请执行git add -f <file>
,然后照常提交。
编辑:请注意,这是每个人都必须做的,以避免意外提交。一种解决方法是也提交您的.gitignore,以便每个人都具有相同的行为。