checkout
-
git checkout branchName
切換分支 -
git checkout -b newBranch
創(chuàng)建并切換分支
等同于
git branch newBranch
git checkout newBranch
checkout的作用機(jī)制是改變.git/HEAD文件夾ref的指向只壳。打開文件可以看到HEAD的內(nèi)容直接就是版本號了俏拱。切換到某個版本之后你做的所有事情都不會被保存,除非你重新切到最新的master吼句。
-
git checkout <commit> <file>
checkout某個版本出來锅必,如果在當(dāng)前做了變更,就不會變化惕艳「阋可以不加file,那就不是只變這個文件了远搪。
當(dāng)單獨(dú)checkout出某個文件的舊版本之后劣纲,他的狀態(tài)會變成modified,這個時候可以重新提交他來進(jìn)行一次類似于revert to version的操作谁鳍。同樣癞季,使用git checkout HEAD file
可以讓它回到最新狀態(tài)。
WARNING: checkout到某個版本會導(dǎo)致當(dāng)前已經(jīng)commit的文件完全消失倘潜,然后完全地退到那個版本绷柒,沒有任何挽救的機(jī)會。
質(zhì)疑上述:用git checkout master
就可以跑到最新
git revert
git revert <commit>
直接丟棄某個提交窍荧,然后重新commit辉巡。
想回退最新的一個commit,直接執(zhí)行git revert HEAD
HEAD代表著最新的版本蕊退。
git reset
-
git reset file
讓stage區(qū)的文件回滾到和head一樣的版本郊楣,working space的文件不會動到憔恳,也就是說這是一個undo add【辉椋可以不加file钥组,那就回滾整個stage里的文件。 -
git reset --hard
相當(dāng)于svn的revert今瀑。把工作區(qū)和暫存區(qū)全部回到head版本程梦。
以下的操作最好不要做,反正svn里面也沒有橘荠。 -
git reset <commit>
把暫存區(qū)的文件reset到某個commit -
git reset <commit> --hard
同理屿附,把工作區(qū)也給覆蓋了
不要reset已經(jīng)已交過的commit
git clean
清除untracked文件。
-
git clean -n
查看什么會被clean -
git clean -f
-f代表著force哥童,也就是執(zhí)行clean操作挺份。被.ignore標(biāo)記的文件不會被clean。 -
git clean -f <path>
單純地clean某個文件夾 -
git clean -df
移除untracked文件夾和文件 -
git clean -xf
暫時搞不明白贮懈,說是會同時刪除git平時會igonre的文件