我提交了一些我不应该提交的文件.然后我在.gitignore中添加了这些文件,我这样做了:
git rm -r --cached somefile
Run Code Online (Sandbox Code Playgroud)
我再次承诺
git status 说明:
# On branch experiment
nothing to commit, working directory clean
我这样做git ls-files并且没有列出这些文件.
但是当我这样做时git push origin somebranch,这些文件仍然被推送(它们太大而不能推送到github所以它失败了).
为什么是这样?我该怎么办?
这些文件仍在您的git历史记录中.根据问题,git历史就是例如:
$ git log --oneline
aaaaaaa Update .gitignore and remove big files
bbbbbbb accidentally add big files to repo
ccccccc update foo
ddddddd update bar
Run Code Online (Sandbox Code Playgroud)
由于推送提交内容,推送失败bbbbbbb,因此文件不在项目历史记录中当前已检出的版本中并不重要.
通过检查特定文件/路径的历史记录也可以确认以上内容:
$ git log --all --format=%H -- big.file
aaaaaaa Update .gitignore and remove big files
bbbbbbb accidentally add big files to repo
Run Code Online (Sandbox Code Playgroud)
如果big.file足够大以防止推送到github - 您需要提交列表为空
有许多方法可以防止尝试推big.file送到远程,但根据问题中的信息,最简单的方法是:
$ git reset --hard ccccccc
Run Code Online (Sandbox Code Playgroud)
这将删除提交aaaaaaa,bbbbbbb因此不会尝试推big.file送到远程.
.gitignore文件会影响将文件添加到存储库,它们不会影响索引中已有的文件.这就是添加文件.gitignore对"问题"没有影响的原因.
| 归档时间: |
|
| 查看次数: |
10238 次 |
| 最近记录: |