我正在使用github在本地计算机上创建我的代码的最新版本的副本,我不想做推送请求我只想做拉取请求并修改我的一些文件本地机器并尝试对github说忽略一些文件并更新其他文件。
我使用以下命令忽略名为" config.inc.php"的文件:
git rm /home/escogit/www/inc/config.inc.php
然后我对远程github存储库中的其他文件进行了更改,当我尝试使用命令" git pull"我收到以下错误:
remote: Counting objects: 9, done. remote: Compressing objects: 100% (1/1), done. remote: Total 5 (delta 4), reused 5 (delta 4) Unpacking objects: 100% (5/5), done. From github.com:Visooal/Colegios e724ba3..a624059 master -> origin/master Updating e724ba3..a624059 error: Your local changes to the following files would be overwritten by merge: www/inc/config.inc.php Please, commit your changes or stash them before you can merge. Aborting
注意:即使我提交命令git commit -m" .config.inc.php也忽略"我得到了那个错误
答案 0 :(得分:1)
首先,git rm
不会忽略文件。它从本地和索引中删除文件。如果您在删除文件之前提交了文件,它将始终位于您的树中,即使它不在当前索引中。另一个人可以轻易地重新添加它。您应该在git rm
之后为该文件设置.gitignore条目。人们仍然可以手动绕过.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
答案 1 :(得分: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 .
答案 2 :(得分: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