Git - 防止特定提交被推送

时间:2017-08-03 12:19:54

标签: git atlassian-sourcetree

我在源代码树中使用git。

我对分支的本地副本中的某些文件进行了3-4次更改。我将始终在本地需要这些更改,但我希望永远不会意外地将其推送到远程。我当然可以保留这些更改,但是如果意外丢弃或清理等,我可能会失去更改。

有什么方法可以标记一些永不被推送的文件。

或者,有更好的方法来达到我的目的。

其中一些是文件更改&我添加到本地存储库的一些新文件

3 个答案:

答案 0 :(得分:2)

我很抱歉,但有人必须说实话。你不能做你想做的事。

你根本无法阻止提交被推送,除非它在另一个,而不是推送分支。但在这种情况下,你当然不会在同一个地方同时拥有 The Files 和你的dev分支。

您不想要的答案

对于新文件,正如其他人所说,你可以忽略它们。

对于已经跟踪的文件,您可以告诉git忽略git update-index --assume-unchanged <file>的本地修改,但这不会阻止git在结帐时丢弃更改。

你能做什么

我认为唯一的选择是更改应用程序加载这些文件的方式(我假设它们类似于配置文件)。

例如,有一个可配置的 local 文件夹,其中可以找到其他属性文件。此文件夹将位于存储库之外,可能位于另一个存储库中或使用其他服务进行备份

答案 1 :(得分:0)

如果你想提交更改,我建议你在一个单独的分支上这样做,你在每次提交后重新登录到master。然后你可以在签出本地唯一的分支时工作,然后在提交之前检查主人,然后推送主人,检查本地唯一的分支并在主人身上做一个rebase。

如果您不需要提交更改: 您可以尝试使用.git / info / exclude文件,该文件与.gitignore类似,但只能在您的计算机上本地运行,并且不会提交。

来自Gitdoc - Ignoring files

Explicit repository excludes

If you don't want to create a .gitignore file to share with others, you can create rules that are not committed with the repository. You can use this technique for locally-generated files that you don't expect other users to generate, such as files created by your editor.

Use your favorite text editor to open the file called .git/info/exclude within the root of your Git repository. Any rule you add here will not be checked in, and will only ignore files for your local repository.

In Terminal, navigate to the location of your Git repository.
Using your favorite text editor, open the file .git/info/exclude.

答案 2 :(得分:-1)

新文件有一个相对简单的答案,但是你以某种方式修改过的文件有点困难。

对于新文件,您应该只能使用.gitignore。如果您不想将.gitignore添加到项目的.gitignore,那么您可以使用git向用户添加配置并忽略特定文件。假设您要忽略foo/目录中的所有文件。你可以通过以下方式做到:

git config --global --add core.excludesfile $HOME/.gitignore
echo "/foo" >> $HOME/.gitignore

对于已编辑的文件,您可能需要创建一个新文件,并修改您的初创公司以正确查找这些新文件。