git操作常见问题汇总

平常工作中常用的git操作命令。

git添加空目录

在空目录下建.gitignore
内容:

1
2
3
4
# 忽略所有文件
*
# 除了这个文件
!.gitignore

git忽略已经被提交的文件

直接rm 然后 git add .本地磁盘也会被删除。我们要的是删除版本库的文件,并忽略。使用如下方法处理:

忽略文件夹 git rm -r --cached cache/* 然后在 .gitignore忽略删除的文件。注意git rm --cached 删除的是追踪状态

git 忽略已经提交的文件的修改

git update-index --assume-unchanged .env
重置之前添加的忽略
git update-index --no-assume-unchanged .env

同步github fork原作者分支的修改

假设当前在fork hexo-theme-amazeuiclone fork后的分支的终端上:

1
2
3
git remote add remote-hexo https://github.com/huixisheng/hexo-theme-amazeui.git
git fetch remote-hexo
git merge remote-hexo/master

参考

同步远程删除的分支

执行git push origin :test-branch, 远程test-branch已经删除了,但本地还在,git branch -a还可以看到

1
2
error: unable to delete ‘test-branch’: remote ref does not exist
error: failed to push some refs to ‘git@github.com:huixisheng/huixisheng.github.com.git’

1
git remote update --prune

git 恢复单个文件的历史版本

首先查看该文件的历史版本信息:git log Default@2x.png
记录下需要恢复的commit版本号:如 9aa51d89799716aa68cff3f30c26f8815408e926
恢复该文件:git reset 9aa51d89799716aa68cff3f30c26f8815408e926 Default@2x.png
还需要执行git checkout Default@2x.png
提交git:git commit -m “回滚Default@2x.png的历史版本”

git 如何还原某个文件一文提到更加简单的方法

直接用 git-checkout 即可。理解起来稍微有点奇怪就是了。
$ git checkout ${commit} /path/to/file

撤销git add的文件的修改

git reset HEAD README.md

通过git status可以查看相关的操作

参考

结论:

  1. git reset是会修改版本历史的,丢弃掉一些版本历史。
  2. git revert是根据那个commit逆向生成一个新的commit,版本历史是不会被破坏的。
  3. git checkout用于切换分支