工作之后,公司使用 SourceTree 來管理代碼试疙,然后我也不明白 SVN唱捣、Git、SourceTree 有啥聯(lián)系概说,后來知道了 SourceTree 是 Git 的圖形界面碧注,用它來管理代碼真的非常方便。然后看了廖雪峰的 Git 教程糖赔,知道了 Git 的誕生和與 SVN 之間的區(qū)別萍丐,也知道 SoureTree 上的一些操作用命令如何去實(shí)現(xiàn),然后總結(jié)歸納了一下文章放典。具體參考廖雪峰的git教程逝变。
常用命令
-
創(chuàng)建 git 倉庫:
git init
-
添加文件到Git倉庫,分兩步:
git add <file>
git commit -m <message>
-
查看工作區(qū)狀態(tài)
git status
-
如果工作區(qū)有文件改動奋构,可以查看改動內(nèi)容
git diff <file>
-
查看提交歷史
git log
git log --pretty=oneline
-
返回到上一個提交
git reset --hard HEAD^
-
查看命令歷史壳影,以便確定要回到未來的版本
git reflog
-
恢復(fù)到某一個提交
git reset --hard <commitId>
-
撤銷修改,把工作區(qū)恢復(fù)到最近一次 git commit 或者 git add 時到狀態(tài)
git checkout -- <file>
-
用命令
git reset HEAD
可以把暫存區(qū)的修改撤銷掉(unstage)弥臼,重新放回工作區(qū)git reset HEAD <file>
-
刪除一個文件
git rm <file>
-
貯藏工作區(qū)的代碼
git stash
-
查看貯藏列表
git stash list
-
使用貯藏區(qū)的代碼
一是用
git stash apply
恢復(fù)宴咧,但是恢復(fù)后,stash內(nèi)容并不刪除径缅,你需要用git stash drop
來刪除掺栅;另一種方式是用
git stash pop
,恢復(fù)的同時把stash內(nèi)容也刪了纳猪。 -
如果你多次stash柿冲,可以恢復(fù)到指定的stash
git stash apply stash@{0}
-
遴選某一次提交
git cherry-pick <commit>
遠(yuǎn)程倉庫
-
要關(guān)聯(lián)一個遠(yuǎn)程庫,使用命令
git remote add origin git@server-name:path/repo-name.git
兆旬;關(guān)聯(lián)后,使用命令
git push -u origin master
第一次推送master分支的所有內(nèi)容怎栽;此后丽猬,每次本地提交后宿饱,只要有必要,就可以使用命令
git push origin master
推送最新修改脚祟。 -
要克隆一個倉庫谬以,首先必須知道倉庫的地址,然后使用
git clone
命令克隆由桌。Git支持多種協(xié)議为黎,包括
https
,但通過ssh
支持的原生git
協(xié)議速度最快行您。
分支管理
-
Git鼓勵大量使用分支:
查看分支:
git branch
創(chuàng)建分支:
git branch <name>
切換分支:
git checkout <name>
或者git switch <name>
創(chuàng)建+切換分支:
git checkout -b <name>
或者git switch -c <name>
合并某分支到當(dāng)前分支:
git merge <name>
刪除分支:
git branch -d <name>
(新版本 git 才能夠使用 switch)
-
當(dāng)Git無法自動合并分支時铭乾,就必須首先解決沖突。解決沖突后娃循,再提交炕檩,合并完成。
解決沖突就是把Git合并失敗的文件手動編輯為我們希望的內(nèi)容捌斧,再提交笛质。
用
git log --graph
命令可以看到分支合并圖。合并分支時捞蚂,加上
--no-ff
參數(shù)就可以用普通模式合并妇押,合并后的歷史有分支,能看出來曾經(jīng)做過合并姓迅,而fast forward
合并就看不出來曾經(jīng)做過合并敲霍。
多人協(xié)作
查看遠(yuǎn)程庫信息,使用
git remote -v
队贱;本地新建的分支如果不推送到遠(yuǎn)程色冀,對其他人就是不可見的;
從本地推送分支柱嫌,使用
git push origin branch-name
锋恬,如果推送失敗,先用git pull
抓取遠(yuǎn)程的新提交编丘;在本地創(chuàng)建和遠(yuǎn)程分支對應(yīng)的分支与学,使用
git checkout -b branch-name origin/branch-name
,本地和遠(yuǎn)程分支的名稱最好一致嘉抓;建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián)索守,使用
git branch --set-upstream branch-name origin/branch-name
;從遠(yuǎn)程抓取分支抑片,使用
git pull
卵佛,如果有沖突,要先處理沖突。rebase操作可以把本地未push的分叉提交歷史整理成直線截汪;
rebase的目的是使得我們在查看歷史提交的變化時更容易疾牲,因?yàn)榉植娴奶峤恍枰綄Ρ取?/p>