checkout
-
git checkout branchName
切换分支 -
git checkout -b newBranch
创建并切换分支
等同于
git branch newBranch
git checkout newBranch
checkout的作用机制是改变.git/HEAD文件夹ref的指向。打开文件可以看到HEAD的内容直接就是版本号了。切换到某个版本之后你做的所有事情都不会被保存,除非你重新切到最新的master。
-
git checkout <commit> <file>
checkout某个版本出来,如果在当前做了变更,就不会变化。可以不加file,那就不是只变这个文件了。
当单独checkout出某个文件的旧版本之后,他的状态会变成modified,这个时候可以重新提交他来进行一次类似于revert to version的操作。同样,使用git checkout HEAD file
可以让它回到最新状态。
WARNING: checkout到某个版本会导致当前已经commit的文件完全消失,然后完全地退到那个版本,没有任何挽救的机会。
质疑上述:用git checkout master
就可以跑到最新
git revert
git revert <commit>
直接丢弃某个提交,然后重新commit。
想回退最新的一个commit,直接执行git revert HEAD
HEAD代表着最新的版本。
git reset
-
git reset file
让stage区的文件回滚到和head一样的版本,working space的文件不会动到,也就是说这是一个undo add。可以不加file,那就回滚整个stage里的文件。 -
git reset --hard
相当于svn的revert。把工作区和暂存区全部回到head版本。
以下的操作最好不要做,反正svn里面也没有。 -
git reset <commit>
把暂存区的文件reset到某个commit -
git reset <commit> --hard
同理,把工作区也给覆盖了
不要reset已经已交过的commit
git clean
清除untracked文件。
-
git clean -n
查看什么会被clean -
git clean -f
-f代表着force,也就是执行clean操作。被.ignore标记的文件不会被clean。 -
git clean -f <path>
单纯地clean某个文件夹 -
git clean -df
移除untracked文件夹和文件 -
git clean -xf
暂时搞不明白,说是会同时删除git平时会igonre的文件