git diff
git diff [filename]
可以查看文件的修改狀態。可以看成diff是和最近的commit或者add相比較,這一點和 git checkout
如出一轍。
git log
git log -p [filename]
可以查看文件的歷史版本修改記錄,git log --pretty=oneline
將版本記錄每一條展示在一行方便觀看。
git reset –hard
git reset --hard
更換版本的時候,commit只保存了暫存區的數據,也就是已經add過得文件可以通過版本切換找回,不過如果只是修改了但是沒有add的文件就沒辦法了,另外新建了一個文件在任何一個版本都能找到,換句話說,如果你想將一個文件的改變加入版本中,必須 add&commit
這個文件。
git checkout -b branch
git checkout -b dev
新建一個分支,如果在同一目錄上創建分支,那麼在一個分支上對一個文件進行修改,在其他分支上也能看到,除非add&commit了,(commit之前,兩個分支的修改都是同步的,包括add到暫存區)如果在dev上進行修改,但是在master上進行 add&commit
,那麼這次修改算master的,dev上沒有記錄也沒有修改。
git reset HEAD filename
git reset HEAD filename
可以將暫存區的文件清除,不小心add了可以返回,而且僅僅是將暫存區的清除,如果add後又改變了該文件,reset後不會用暫存區的文件將未暫存的覆蓋。
git stash
git stash
可以將正在進行的工作狀態進行保存,如果寫到一半,要處理其他事物,可以將當前修改的文件保存起來,現在工作區就是前一個commit時的狀態,這次的修改都被保存起來隱藏了。git stash list
可以看到當前所有保存的工作狀態,使用 git stash apply
可以恢復工作狀態,恢復指定的使用 git stash apply stash@{0}
,不過之前add的文件會被清出暫存區,展示在modify but no stage中,恢復完後可以使用 git stash drop
刪除這個工作狀態。
git remote add origin [email protected]:username/xxxx.git
git remote add origin [email protected]:username/xxxx.git
添加一個遠程庫,並命名爲origin,光添加一個地址還不行,需要將自己的公鑰上傳到該github賬號中,這樣才能進行後續的pull,push等操作
git push &git pull
git push <遠程主機名> <本地分支名>:<遠程分支名> | git pull <遠程主機名> <遠程分支名>:<本地分支名> 通過給本地分支與遠程分支建立追蹤關係:$ git branch --set-upstream master origin/next
,下次push或pull是可以忽略不寫分支,只需git pull/push
git設置別名
你可以給常用的命令設置簡易別名,這樣做能節約時間成本,列如:git config --global alias.co checkout
,設置以後你就可以這樣使用 git co filename == git checkout filename
。
查看某次提交的文件修改
git show 可以查看某次提交的相關修改。
git忽略文件
.gitignore文件只對從未追蹤過得文件起效果,即從未add或者commit的文件,如果想對已經追蹤過得文件進行忽略,使用git rm –cached filename,然後commit即可