1

我最近从 Perforce 迁移到 Github(VS2017 的内置支持),用于一些单独的项目。Perforce 中有一个名为“make writable”的功能,它允许您在本地写入文件,然后仅通过显式检出然后提交来将其提交到服务器。

这被广泛用于任何只需要很少推送但仍需要写入的二进制文件(.exe 等)。

不幸的是,从我对 Github 的有限经验来看,似乎所有文件都设置为可写并且总是标记为“已更改”,甚至是 exes。是否有我可以进行或设置的设置允许 Github 仅将文件标记为显式更改,这样我就不会意外推送不完整、损坏或调试的 .exe?

4

1 回答 1

2

更新的答案:所以,我忘记了,如果文件在任何时候被 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 中。然后,如果/当您真的想提交它们时,请执行 agit add -f <file>然后正常提交。

编辑:请注意,这是每个人都必须做的事情,以避免意外提交。一种解决方法是提交你的 .gitignore ,这样每个人都有相同的行为。

于 2018-06-22T16:37:40.763 回答