Git命令删除提交到本地仓库的文件,不影响本地和远程-已解决

it2026-03-17  3

问题:

有时候误操作了大文件,推送到本地仓库却无法提交到远程仓库(报错)

方法1,删除本地仓库中的大文件

查看仓库里有哪些文件夹 

dir

  

删除python文件夹(这里的文件夹名如果有空格命令行需要用"\ "来拼接例如:python python要换成python\ python)

git rm -r --cached python/*

或者

或者根据提示执行命令,如下查看大文件是哪个,直接删除这个大文件

  

从commit的提交历史中删除指定文件

git filter-branch --tree-filter 'rm -f 文件名' HEAD git filter-branch --tree-filter 'rm -f "python/python_reptile/imgchuli/python视觉网络models.zip"' HEAD

  

删除成功会返回Ref 'refs/heads/master' was rewritten提示,如果返回unchanged则表示没有任何更改。

再次提交

方法2:重新拉取本地仓库

从云端重新克隆一个git仓库,把修改好的本地文件放入新的git本地仓库,旧的删除

其他命令:

查看本地+远程所有分支的全部提交

git log --graph --all

查看修改内容

git status

查看提交记录

git log

撤销未提交的修改(未git add .)

# 可以看到改的内容 git diff <strong>git checkout src/com/jay/example/testforgit/MainActivity.java</strong>

撤销本地add

Git中HEAD代表当前版本,上一个版本就是HEAD^,再上一个版本就是HEAD^^依次类推HEAD~2   2个版本 # 已经add了的话,那么checkout是没任何作用的,我们要先取消添加才可以撤回提交 # 使用reset默认的--fixed参数,假装回退到当前版本,撤销add git reset HEAD # 后面什么都不跟的话 就是上一次add 里面的全部撤销了 git reset HEAD python/ git reset HEAD src/com/jay/example/testforgit/MainActivity.java # reset 有三个参数 --fixed # 默认,不删除工作空间改动代码,撤销commit,撤销add --soft # 不删除工作空间改动代码,撤销commit,不撤销add --hard # 删除工作空间改动代码,撤销commit,不撤销add # 也撤销指定文件的add git reset HEAD fileName.txt git checkout src/com/jay/example/testforgit/MainActivity.java

撤销本地commit

git reset HEAD^ git reset HEAD~ git reset HEAD~2 # 回退2个版本 # 注意在windows的终端使用该命令时,由于^为windows的默认换行符 # windows下 git reset "HEAD^" git reset HEAD^^

 回退remote版本

git revert:撤销某个版本的提交 git log git reset --hard HEAD 或者 git reset --hard ad2080c # 撤销<commit-hash>这个版本的操作 git revert [-n] <commit-hash> # 默认需要立刻commit,可以添加-n或--no-commit参数推迟commit # 接下来直接commit、push即可,会在log中追加新的commit记录 # 连续多个revert git revert -n <commit-hash_start>..<commit-hash_end> # 会撤销( commit-hash_start, commit-hash_end ] 的提交 若要撤销执行完的revert操作,只需对这个revert操作也执行一次revert即可 git reset + git push -f # 回退到<commit-hash>这个版本 git reset <commit-hash> # 强制推送 git push -f # 注意,此种回退相当于彻底回退到之前的版本,晚于该版本的提交log也会被清除,且此次回退无记录

 

回退后再回新的版本

# 查看输入过的指令找到版本号 git reflog # 键入 git reset --hard ad2080c

 

最新回复(0)