4

我正在使用 github 在本地机器上创建我的代码的最新版本的副本,我不想发出推送请求我只想发出拉取请求并修改本地机器中的一些文件并尝试说github 忽略一些文件并更新其他文件。

我使用以下命令忽略名为“config.inc.php”的文件:

git rm /home/escogit/www/inc/config.inc.php

然后我对远程 github 存储库中的其他文件进行了更改,当我尝试使用命令“git pull”获取新更改时,我收到以下错误:

远程:计数对象:9,完成。
远程:压缩对象:100% (1/1),完成。
远程:总共 5 个(增量 4),重复使用 5 个(增量 4)
拆包对象:100% (5/5),完成。
来自 github.com:Visooal/Colegios
   e724ba3..a624059 主 -> 原点/主
更新 e724ba3..a624059
错误:您对以下文件的本地更改将被合并覆盖:
www/inc/config.inc.php
请在合并之前提交您的更改或存储它们。
中止

注意:即使我使用命令 git commit -m ".config.inc.php ignored" 提交,我也会收到该错误

4

3 回答 3

1

首先,git rm不忽略文件。它在本地和从索引中删除文件。如果您在删除文件之前提交了该文件,那么它将始终在您的树中,即使它不在当前索引中。另一个人很容易意外地重新添加它。您应该在之后为该文件设置一个 .gitignore 条目git rm。人们仍然可以手动绕过 .gitignore,但该文件将不再显示在git status任何 UI 工具中。

你需要按照它说的去做。git commit -a -m "My Commit Comment"在你做之前git pull

只是为了给出更清晰的画面,假设您已经git rm编辑了该文件,请运行这些命令。

echo 'config.inc.php' > .gitignore
git add .gitignore
git commit -a -m "Removed uneeded file"
git pull
// Fix any merge issues
git commit -a -m "Merge"
git push
于 2012-04-10T23:58:02.093 回答
0

您可以忽略文件,然后忽略 .gitignore 下的更改。

所以它会是这样的:将您的文件添加到.gitignore

echo '/home/escogit/www/inc/config.inc.php' >> .gitignore

然后忽略gitignore的变化:

git update-index --assume-unchanged .gitignore

它已经完成了!

警告: .gitignore 中的所有本地更改都将被忽略以撤消此操作,并使用所需的功能再次重新撤消它使用: git update-index --no-assume-unchanged .gitignore

于 2014-09-30T16:15:44.420 回答
0

Git 不允许您使用未提交的更改进行拉取。要让 git 忽略文件,通常你会创建一个.gitignore文件,但你不能在这里,因为那将是一个改变;但您可以将文件名添加到repo/.git/info/exclude. 此文件使用与 .gitignore 相同的语法,但不会被 git 索引提交或查看。因此,在您的示例中,您将添加该行

www/inc/config.inc.php

escogit/.git/info/exclude.

如果您在遥控器上更改这些被忽略的文件之一,然后拉取该更改,您可能仍然会遇到问题。所以最好的办法是提交本地更改。反正他们不会被推,所以没关系。为此运行

git commit -a -m "a message explaining commit"

然后你可以拉,git会自动为你合并更改。如果你需要让本地恢复到一个干净的状态,你可以这样做git checkout .

于 2012-04-11T00:08:36.060 回答