GIT和推送被忽略的文件

4

使用git需要遵循哪些精确的步骤?我将提供我的步骤(但是,有些不太顺畅):

- cloned a repository: (works fine)
- added settings files to .gitignore to prevent overwriting the originial 
    settingfiles on the remote (= test environment)
- made changes to my local repository and committed it locally (works fine)
- pushed it from local to remote (did not work properly)

当推送到远程时,远程上的设置文件被删除,这导致我的测试环境出现问题。我只希望在推送时忽略设置文件而不是删除它们。
我做错了什么或者遗漏了什么?有什么想法吗?
3个回答

3
据我了解,你克隆的git仓库中已经跟踪了settingsfile设置文件。这意味着,即使你将其添加到.gitignore中,它仍将被跟踪。
为了从历史记录中删除该文件并确保在未来忽略它,你应该:
- 将其添加到.gitignore中(如你已经做的那样) - 运行git filter-branch --index-filter 'git rm --cached --ignore-unmatch settingsfile' HEAD命令
请注意,你需要为文件存在的每个分支运行上述命令。
然后你需要运行git push -f origin master命令(如果master是分支名称,origin是远程名称)。
你可以参考此指南获取更多信息this guide
另外,正如Rafid K. Abdullah所说,你没有删除任何内容(如果你按照帖子中描述的工作流程进行操作)。你只是添加了一些修改,而这些修改可以轻松恢复。毕竟,这就是git的用途 :)

2

我理解你所说的设置文件是你的设置而不是.git文件夹。如果我理解正确,那么将它们添加到.gitignore中并不总是有效,因为.gitignore只是在使用'git commit -a'、'git diff'等命令时不会检查这些文件,但如果你已经将它们存在本地仓库中,它们仍会被推送到远程服务器。

话虽如此,我不认为你在远程服务器上丢失了设置文件,因为你所做的只是添加更多提交,所以你必须在历史记录中找到设置文件。

无论如何,不幸的是,与SVN不同,如果你只学会几个GIT的步骤,你就会犯错误。在开始时,我犯了很多错误,然后承认我必须读一本关于它的书。但首先,我想要理解其概念,因为这有时会引起麻烦(例如,“origin master”和“origin/master”之间的区别等),所以我发现这个非常有用的页面,我建议你阅读它:

http://www.eecs.harvard.edu/~cduan/technical/git/

我还发现了这本非常有趣的书:

http://progit.org/book/

您不必全部阅读,只需阅读基础知识和最重要的分支部分即可。
希望这有所帮助。

0

不要将设置文件添加到.gitignore文件中,而是使用git stash保存您对设置文件的更改,然后像往常一样进行推送和拉取。完成后,使用git stash apply恢复您的设置文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接