我在GitHub上有私人回购。大多数是由config.php配置的。这个配置被排除在外是.gitignore,它可以正常运行,直到带有Egit的Eclipse被用作IDE。
Eclipse + Egit有一个不那么精彩的功能,即在提交时随机尝试包含被忽略的文件(并默认选中)。通常这可以被捕获和取消选中,但是当推送大的更改时很难找到,因为需要阅读并考虑很多文件(本月的第3个星期五:处理日志文件中的所有通知错误。通常由noob人)
所以在git中,我们有一个推送提交,其中包含很多修复,合法文件和一个config.php,如果推送到服务器会破坏数据库连接字符串/文件位置/ ftp凭证/ etc,用户本地测试配置。再次修改文件将不起作用,它仍然会更改服务器上的文件。我们所做的不应该导致更改或删除被推送到此文件中的服务器。
上一步是删除提交,然后在提交机器上删除:
git reset SOFT HEAD^
然后重新应用各个文件中的更改(不包括config.php),但最后一轮修复......好了提交包括142个文件!没有人有时间。
是否有通过github或git删除对config.php的更改或排除不会从目标服务器,用户计算机或存储库中删除或更改文件的方法? /强>
同样,该文件已被提交,推送(并且通过冲突在合并过程中被捕获)。我们不希望再次在上游,下游修改或删除此文件。大约每3个月就有一个新人或急速发生这种情况,所以我们计划经常使用这个程序。
(我以前在这里阅读的所有问题都不是专门针对这种情况,或建议重新执行142个文件中的每一个)
答案 0 :(得分:1)
答案 1 :(得分:1)
通过反转La-comadreja的进程从一个好的提交中“删除”一个坏文件(config.php)的过程。这保留了原始存储库,良好的更改,消除错误,并需要1个新分支。存储库:Repo1;分支:坏分支;我们将把想要的更改复制到Good-branch。
1: on Repo1: git checkout bad-branch
2: git log: and find the commit hash to revert to (#88888ABCDEF)
3: git branch Good-branch 88888ABCDEF (or HEAD~1 if one commit) to restart the changes with a clean slate in Good-branch
4: clone repository to Clone1
5: on Clone1: git checkout bad-branch
6: In OS, on Clone1, DELETE bad or unwanted file(s) (config.php, etc)
7: In OS, file copy remaining good files from Clone1/bad-branch, over top of Repo1/Good-branch (IE: copy all files in root directory and paste with over-write)
8: add and commit Repo1/Good-branch (will have all changes minus bad files)
9: delete Repo1/bad-branch just in case.
10: Clone1 can be deleted
11: restart the merge on Good-branch
任务时间:克隆存储库并复制文件的时间。我这是2分钟