版本的回退及跳轉(zhuǎn)
創(chuàng)建一個(gè)倉(cāng)庫(kù)? git init
在倉(cāng)庫(kù)下創(chuàng)建一個(gè)文件并且進(jìn)行編輯 vim test.txt
把文件添加到緩沖區(qū)中 git add 文件名? ? git add . 把所有的文件添加到緩沖區(qū)中
然后把文件進(jìn)行提交 git commit -m "注釋"? 比如:git commit -m "first commit"
上面是準(zhǔn)備工作:
下面開始練習(xí)版本回退及跳轉(zhuǎn)
進(jìn)行三次文件的更改并進(jìn)行提交 vim test.txt? git add git commit
查看版本: git log? ? 或者? git log --pretty=oneline顯示一行
返回上一個(gè)版本:git reset --hard HEAD^
返回指定的版本:git reset --hard commit_id
查看歷史記錄:git reflog
這樣就完成了版本的回退及跳轉(zhuǎn)
撤銷修改
git checkout -- 文件
把readme.txt文件在工作區(qū)的修改全部撤銷,這里有兩種情況
一種是readme.txt自修改后還沒(méi)有被放到暫存區(qū)疤祭,現(xiàn)在,撤銷修改就回到和版本庫(kù)一模一樣的狀態(tài)逮光;
一種是readme.txt已經(jīng)添加到暫存區(qū)后盖呼,又作了修改瓣颅,現(xiàn)在惜辑,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)唬涧。
總之,就是讓這個(gè)文件回到最近一次git commit或git add時(shí)的狀態(tài)
刪除文件
創(chuàng)建一個(gè)文件 vim test.txt
rm 文件名
如果創(chuàng)建了一個(gè)文件盛撑,并且add到了緩沖區(qū)碎节,這時(shí)候rm了,可以通過(guò)git checkout -- 文件名(git checkout -- test.txt)
如果git rm 文件名就會(huì)徹底從緩存區(qū)進(jìn)行刪除了抵卫,那就不能通過(guò)git checkout -- 文件名來(lái)進(jìn)行恢復(fù)了狮荔。
創(chuàng)建遠(yuǎn)程連接
在本地先實(shí)例一個(gè)倉(cāng)庫(kù) git init
然后遠(yuǎn)程連接 git remote add origin git@github.com:Lucidastar/LxlTest.git就可以進(jìn)行連接了,當(dāng)然確定你已經(jīng)配置好了私鑰和公鑰 然后可以通過(guò)git remote -v 查看一下連接的狀態(tài)
創(chuàng)建分支和合并
創(chuàng)建并切換到這個(gè)分支上? git checkout -b 分支名? git checkout -b feture
創(chuàng)建一個(gè)分支:git branch 分支名? git branch feture
切換到一個(gè)分支:git checkout 分支名? git checkout feture
查看分支:git branch
我們?cè)诜种е袑?duì)文件進(jìn)行了修改然后add并且commit? 然后再切換到主分支上
進(jìn)行合并:git merge 分支名? ? git merge feture
git merge命令用于合并指定分支到當(dāng)前分支
刪除分支:git branch -d 分支名? git branch -d feture
(注意:當(dāng)使用checkout 創(chuàng)建分支并且切換分支時(shí)陌僵,如果遠(yuǎn)程有這個(gè)分支轴合,會(huì)跟蹤遠(yuǎn)程的分支)
如:Branch dev set up to track remote branch dev from origin.
分支dev設(shè)置跟蹤遠(yuǎn)程分支dev的來(lái)源。
解決沖突
創(chuàng)建一個(gè)分支:git checkout -b feture
在分支中修改文件vim 文件名碗短,然后進(jìn)行add并且commit
在主分支上修改文件vim文件名 ,然后進(jìn)行add并且commit
在主分支進(jìn)行合并分支题涨,git merge 分支名? git merge feture
這時(shí)候會(huì)出現(xiàn)沖突偎谁,然后通過(guò)vim進(jìn)行修改沖突总滩,然后再進(jìn)行add,然后commit
然后合并分支git merge feture,然后刪除分支 git merge -d feture
用帶參數(shù)的git log也可以看到分支的合并情況
git log --graph --pretty=oneline --abbrev-commit
分支管理策略
通常巡雨,合并分支時(shí)闰渔,如果可能,Git會(huì)用Fast forward模式铐望,但這種模式下冈涧,刪除分支后,會(huì)丟掉分支信息正蛙。
如果要強(qiáng)制禁用Fast forward模式督弓,Git就會(huì)在merge時(shí)生成一個(gè)新的commit,這樣乒验,從分支歷史上就可以看出分支信息愚隧。
下面進(jìn)行練習(xí):
查看本地分支列表
git branch -a
檢出遠(yuǎn)程的分支
git branch -b dev origin/dev
刪除遠(yuǎn)程分支
git push origin --delete
git push origin :
刪除本地分支
git branch -d branchName
git branch -D branchName //強(qiáng)制刪除分支
查看遠(yuǎn)程連接地址
git remote -v
查看遠(yuǎn)程的所有分支列表
git branch -a
刪除遠(yuǎn)程連接
git remote rm origin