git相关命令-下
放弃工作区的修改
git checkout <file-name>
放弃所有修改:
git checkout .
回到某一个commit的状态,并重新增添一个commit
git revert <commit-id>
回到某个commit的状态,并删除后面的commit
和revert的区别:reset命令会抹去某个commit id之后的所有commit(这个命令用过几次,挺好用的)
git reset <commit-id> #默认就是-mixed参数。git reset –mixed HEAD^ #回退至上个版本,它将重置HEAD到另外一个commit,并且重置暂存区以便和HEAD相匹配,但是也到此为止。工作区不会被更改。git reset –soft HEAD~3 #回退至三个版本之前,只回退了commit的信息,暂存区和工作区与回退之前保持一致。如果还要提交,直接commit即可 git reset –hard <commit-id> #彻底回退到指定commit-id的状态,暂存区和工作区也会变为指定commit-id版本的内容
查看某段代码是谁写的(查看之后自己知道就好~~~)
git blame <file-name>
列出所有远程仓库
git remote
存储当前的修改,但不用提交commit(就是将修改先暂存起来,不会影响切换分支等操作)
git stash
保存当前状态,包括新建并没有假如到git的文件(当时不知道有这个命令,踩过一个坑,自己分支stash之后,直接切换到其他分支,然后执行了 git add . && git commit -am'xxx',结果把新建的文件提交到其他分支了)
git stash -u
展示所有stashes
git stash list
回到某个stash的状态
git stash apply <[email protected]{n}>
回到最后一个stash的状态,并删除这个stash
git stash pop
删除所有的stash
git stash clear
强制删除untracked的文件
可以用来删除新建的文件。如果不指定文件文件名,则清空所有工作的untracked文件。clean
命令,注意两点:
-
clean后,删除的文件无法找回
-
不会影响tracked的文件的改动,只会删除untracked的文件
git clean <file-name> -f
强制删除untracked的目录
可以用来删除新建的目录,注意:这个命令也可以用来删除untracked的文件。详情见上一条
git clean <directory-name> -df
新建并切换到新分支上,同时这个分支没有任何commit
相当于保存修改,但是重写commit历史
git checkout --orphan <branch-name>
展示任意分支某一文件的内容
git show <branch-name>:<file-name>
clone下来指定的单一分支
git clone -b <branch-name> --single-branch https://github.com/user/repo.git
忽略文件的权限变化(之前用linux系统,有一次没弄好,然后重新设置了文件权限,然后提示我所有文件被改动~)
git config core.fileMode false
在commit log中查找相关内容
通过grep查找,given-text:所需要查找的字段
git log --all --grep='<given-text>'