阿里菜鸟知识储备之二——git工具学习
具體的可以參見這篇博客:
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
1,什么是git
git是目前最先進(jìn)的分布式版本控制系統(tǒng),不同于svn的集中式版本控制
2,版本庫創(chuàng)建
mkdir ?gitlearn
cd gitlearn
git init (創(chuàng)建一個(gè)git版本庫,你可以簡單理解成一個(gè)目錄,這個(gè)目錄里面的所有文件都可以被Git管理起來,每個(gè)文件的修改、刪除,Git都能跟蹤,以便任何時(shí)刻都可以追蹤歷史,或者在將來某個(gè)時(shí)刻可以“還原”。)
3,將文件添加到版本庫
git add readme.txt
git commit ?-m "wrote a readme file"
4,查看git狀態(tài)
git status
git diff readme.txt 查看前后的修改部分
5,版本回退
git log查看提交的歷史,重點(diǎn)關(guān)注的是commit id(或者git reflog)
git reset --head commit_id進(jìn)行版本回退
6,git的工作區(qū)和暫存區(qū)
git add命令實(shí)際上就是把要提交的所有修改放到暫存區(qū)(Stage),然后,執(zhí)行g(shù)it commit就可以一次性把暫存區(qū)的所有修改提交到分支
7,git撤回錯(cuò)誤
場(chǎng)景1:當(dāng)你改亂了工作區(qū)某個(gè)文件的內(nèi)容,想直接丟棄工作區(qū)的修改時(shí),用命令git checkout -- file。
場(chǎng)景2:當(dāng)你不但改亂了工作區(qū)某個(gè)文件的內(nèi)容,還添加到了暫存區(qū)時(shí),想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場(chǎng)景1,第二步按場(chǎng)景1操作。
場(chǎng)景3:已經(jīng)提交了不合適的修改到版本庫時(shí),想要撤銷本次提交,參考版本回退一節(jié),不過前提是沒有推送到遠(yuǎn)程庫。
8.git刪除文件
?命令git rm; git commit用于刪除一個(gè)文件。如果一個(gè)文件已經(jīng)被提交到版本庫,那么你永遠(yuǎn)不用擔(dān)心誤刪,但是要小心,你只能恢復(fù)文件(git checkout -- file)到最新版本,你會(huì)丟失最近一次提交后你修改的內(nèi)容。
9,git遠(yuǎn)程管理
要關(guān)聯(lián)一個(gè)遠(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推送最新修改;
分布式版本系統(tǒng)的最大好處之一是在本地工作完全不需要考慮遠(yuǎn)程庫的存在,也就是有沒有聯(lián)網(wǎng)都可以正常工作,而SVN在沒有聯(lián)網(wǎng)的時(shí)候是拒絕干活的!當(dāng)有網(wǎng)絡(luò)的時(shí)候,再把本地提交推送一下就完成了同步,真是太方便了!
10,先有遠(yuǎn)程庫,創(chuàng)建本地庫的時(shí)候
以上講的是先有本地庫,據(jù)此創(chuàng)建遠(yuǎn)程庫,如果先有遠(yuǎn)程庫,據(jù)此建立本地庫,使用git clone命令
要克隆一個(gè)倉庫,首先必須知道倉庫的地址,然后使用git clone命令克隆。
Git支持多種協(xié)議,包括https,但通過ssh支持的原生git協(xié)議速度最快。
11,git分支合并與創(chuàng)建
Git鼓勵(lì)大量使用分支:
查看分支:git branch
創(chuàng)建分支:git branch?name
切換分支:git checkout?name
創(chuàng)建+切換分支:git checkout -b?name
合并某分支到當(dāng)前分支:git merge?name
git merge --no-ff -m "merged bug fix 101" issue-101 :可以查看合并歷史刪除分支:git branch -d?name
強(qiáng)制刪除的時(shí)候,使用git branch -D?name
12,分支沖突
當(dāng)Git無法自動(dòng)合并分支時(shí),就必須首先解決沖突。解決沖突后,再提交,合并完成。
用git log --graph命令可以看到分支合并圖。
13,bug修復(fù)
修復(fù)bug時(shí),我們會(huì)通過創(chuàng)建新的bug分支進(jìn)行修復(fù),然后合并,最后刪除;
當(dāng)手頭工作沒有完成時(shí),先把工作現(xiàn)場(chǎng)git stash一下,然后去修復(fù)bug,修復(fù)后,再git stash pop,回到工作現(xiàn)場(chǎng)。
14,feature分支
開發(fā)一個(gè)新feature,最好新建一個(gè)分支;
如果要丟棄一個(gè)沒有被合并過的分支,可以通過git branch -D name強(qiáng)行刪除。
15,多人協(xié)作
多人協(xié)作的工作模式通常是這樣:
首先,可以試圖用git push origin branch-name推送自己的修改;
如果推送失敗,則因?yàn)檫h(yuǎn)程分支比你的本地更新,需要先用git pull試圖合并;
如果合并有沖突,則解決沖突,并在本地提交;
沒有沖突或者解決掉沖突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,則說明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒有創(chuàng)建,用命令git branch --set-upstream branch-name origin/branch-name。
這就是多人協(xié)作的工作模式,一旦熟悉了,就非常簡單。
小結(jié)
-
查看遠(yuǎn)程庫信息,使用git remote -v;
-
本地新建的分支如果不推送到遠(yuǎn)程,對(duì)其他人就是不可見的;
-
從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠(yuǎn)程的新提交;
-
在本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(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,如果有沖突,要先處理沖突。
轉(zhuǎn)載于:https://www.cnblogs.com/bobodeboke/p/3873398.html
總結(jié)
以上是生活随笔為你收集整理的阿里菜鸟知识储备之二——git工具学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: joa-framework 工作流高速开
- 下一篇: UVM基础之------uvm_port