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

问题:

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

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

查看仓库里有哪些文件夹 

dir

  

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

git rm -r --cached python/*

或者

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

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

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

git filter-branch --tree-filter 'rm -f 文件名' HEAD


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

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

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

再次提交

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

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

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

其他命令:

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

git log --graph --all

查看修改内容

git status

查看提交记录

git log

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

# 可以看到改的内容
git diff

git checkout src/com/jay/example/testforgit/MainActivity.java

撤销本地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


# 撤销这个版本的操作
git revert [-n] 
# 默认需要立刻commit,可以添加-n或--no-commit参数推迟commit
# 接下来直接commit、push即可,会在log中追加新的commit记录

# 连续多个revert
git revert -n ..
	# 会撤销( commit-hash_start, commit-hash_end ] 的提交


若要撤销执行完的revert操作,只需对这个revert操作也执行一次revert即可
git reset + git push -f

# 回退到这个版本
git reset 
# 强制推送
git push -f
# 注意,此种回退相当于彻底回退到之前的版本,晚于该版本的提交log也会被清除,且此次回退无记录

 

回退后再回新的版本

# 查看输入过的指令找到版本号
git reflog 

# 键入 
git reset --hard ad2080c

 

你可能感兴趣的:(Java,git,文件过大,提交,仓库)