0.git pull先更新文件; git status 查看文件的增刪改狀態
1.git clone 在線庫存地址; git clone -b dev(遠程分支) 連接
2.git add 要提交的文件或者文件夾 或者git add .(表示提交全部修改過的文件,添加到暫存區)
注:git add 只將新建的或者已更改的文件添加到索引區。(不會添加刪除的文件)
3.git commit -m '備註';提交到暫存區 -m(默認爲master分支)
3.git push ;正式提交
4.git log 查看提交的日誌 或者git log --pretty=oneline 更加清楚明瞭的查看
ps:關聯遠程庫後,使用命令git push -u origin master第一次推送master分支的全部內容;
此後,每次本地提交後,只要有必要,就可使用命令git push origin master推送最新修改;
複製代碼
Git是跟蹤修改的,每次修改,若是不用git add到暫存區,那就不會加入到commit中。
用git diff HEAD -- qq.html命令能夠查看工做區和版本庫裏面最新版本的區別html
1. git diff 提交文件以前可用此命令查看文件被修改了哪些
2. git log 上傳文件後 可查看提交的歷史信息
git log --pretty=oneline --abbrev-commit 找到歷史提交的commit id
git log --graph 查看到分支合併圖。或者git log --graph --pretty=oneline --abbrev-commit
3. git reset --hard HEAD^ 回退到上一個版本
--hard
4. git reset --hard 09BH(歷史版本16進制的前四位便可,git自動找) 回到指定版本
若是關閉了git窗口 可以使用git reflog命令查看之間提交的版本
5.cat op.html 或者git show 查看文件內容
5. git checkout -- qq.html 或者 git restore op.html 把qq.html文件在工做區的修改所有撤銷,這裏有兩種狀況:
(1)一種是 qq.html自修改後尚未被放到暫存區,如今,撤銷修改就回到和版本庫如出一轍的狀態;
(2)一種是 qq.htmlt已經添加到暫存區後,又做了修改,如今,撤銷修改就回到添加到暫存區後的狀態。
6. git diff HEAD -- qq.html 查看工做區和版本庫裏面最新版本的區別
7. git reset HEAD <file> 能夠把暫存區的修改撤銷掉),從新放回工做區
8.git reflog 查看命令歷史,以便肯定要回到將來的哪一個版本。
9. git rm qq.html 刪除文件
10.git remote 查看遠程庫的信息 或用git remote -v顯示更詳細的信息
11.git push origin dev(分支名稱) 推送對應分支
可是,並非必定要把本地分支往遠程推送,那麼,哪些分支須要推送,哪些不須要呢?
master分支是主分支,所以要時刻與遠程同步;
dev分支是開發分支,團隊全部成員都須要在上面工做,因此也須要與遠程同步;
bug分支只用於在本地修復bug,就不必推到遠程了,除非老闆要看看你每週到底修復了幾個bug;
feature分支是否推到遠程,取決於你是否和你的小夥伴合做在上面開發。
12. git tag v1.0(版本號) 爲項目打版本號(標籤)
git push origin --tags 推送所有還沒有推送到遠程的本地標籤
git tag -d v0.9 刪除標籤 先從本地刪除 而後git push origin :refs/tags/v0.(刪除一個遠程標籤)
命令git tag <tagname>用於新建一個標籤,默認爲HEAD,也能夠指定一個commit id;
命令git tag -a <tagname> -m "blablabla..."能夠指定標籤信息;
命令git tag能夠查看全部標籤
複製代碼
1. git checkout -b dev 建立dev分支,而後切換到dev分支 或者 git switch -b dev
-b參數表示建立並切換
至關於這兩條命令:
git branch dev
git checkout dev
2. git branch 查看當前分支; 查看已有的本地及遠程分支: git branch -a
3. git merge dev 將子分支合併到主分支master,合併後,查看主分支,和子分支內容同樣
Fast-forward信息,Git告訴咱們,此次合併是「快進模式」,也就是直接把master指向dev的當前提交,因此合併速度很是快。
總結:
Git鼓勵大量使用分支:
查看分支:git branch
建立分支:git branch <name>
切換分支:git checkout <name>或者git switch <name>
建立+切換分支:git checkout -b <name>或者git switch -c <name>
合併某分支到當前分支:git merge <name>
刪除本地分支:git branch -d <name>; 刪除遠程分支:git push origin --delete dev
複製代碼
2.處理常見合併分支衝突 git
Git告訴咱們,qe.html文件存在衝突,必須手動解決衝突後再提交。git status也能夠告訴咱們衝突的文件;
(1)git log --graph --pretty=oneline --abbrev-commit 看到分支的合併狀況
(2)把Git合併失敗的文件手動編輯爲咱們但願的內容,再提交。
(3)刪除feature1分支bash
一般,合併分支時,若是可能,Git會用Fast forward模式,但這種模式下,刪除分支後,會丟掉分支信息。
若是要強制禁用Fast forward模式,Git就會在merge時生成一個新的commit,這樣,從分支歷史上就能夠看出分支信息。
下面展現一下--no-ff方式的git merge:app
1.建立並切換分支
git switch -c dev
2. 修改文件並提交一個新的commit
git add qe.html
git commit -m 'change qe.html'
3.切換回master主分支
git switch master
4. 準備合併dev分支,請注意--no-ff參數,表示禁用Fast forward:
$ git merge --no-ff -m "merge with no-ff" dev 這種合併方法會在master分支上新建一個提交節點,從而完成合並
5. 由於本次合併要建立一個新的commit,因此加上-m參數,把commit描述 寫進去。
合併後,咱們用git log看看分支歷史:
$ git log --graph --pretty=oneline --abbrev-commit
複製代碼
分支策略 在實際開發中,咱們應該按照幾個基本原則進行分支管理:ui
首先,master分支應該是很是穩定的,也就是僅用來發布新版本,平時不能在上面幹活;編碼
那在哪幹活呢?幹活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,好比1.0版本發佈時,再把dev分支合併到master上,在master分支發佈1.0版本;spa
你和你的小夥伴們每一個人都在dev分支上幹活,每一個人都有本身的分支,時不時地往dev分支上合併就能夠了。rest
合併分支時,加上--no-ff參數就能夠用普通模式合併,合併後的歷史有分支,能看出來曾經作過合併,而fast forward合併就看不出來曾經作過合併。日誌
1.git stash 先把你當前分支的內容存貯起來,等之後恢復現場後繼續工做;
2.git switch master 切換到主分支,準備建立一個bug分支(issue-101);
3.git switch -c issue-101 建立一個bug分支(issue-101);
4. git add qe.html
git commit -m "fix bug 101" 修改bug並提交
5.修復完成後,切換到master分支,並完成合並,最後刪除issue-101分支:
git switch master;
git merge --no-ff -m "merged bug fix 101" issue-101
git branch -d issue-101
6.bug已修復,如今,是時候接着回到dev分支幹活
git switch dev
git stash list 查看以前存貯的內容:
stash@{0}: WIP on dev: f52c633 add merge
7. 如今須要恢復一下存貯的內容,恢復有2種方法:
(1)用git stash apply恢復,可是恢復後,stash內容並不刪除,你須要用git stash drop來刪除
(2)用git stash pop,恢復的同時把stash內容也刪了
再用git stash list查看,就看不到任何stash內容了
你能夠屢次stash,恢復的時候,先用git stash list查看,而後恢復指定的stash,用命令:
git stash apply stash@{0}
8. 在master分支上修復了bug後,咱們要想想,dev分支是早期從master分支分出來的,因此,這個bug其實在當前dev分支上也存在。
那怎麼在dev分支上修復一樣的bug?重複操做一次,提交不就好了?
一樣的bug,要在dev上修復,咱們只須要把4c805e2 fix bug 101這個提交所作的修改「複製」到dev分支。
注意:咱們只想複製4c805e2 fix bug 101這個提交所作的修改,並非把整個master分支merge過來。
爲了方便操做,Git專門提供了一個cherry-pick命令,讓咱們能複製一個特定的提交到當前分支:
git branch
* dev
master
$ git cherry-pick 4c805e2
[master 1d4b803] fix bug 101
1 file changed, 1 insertion(+), 1 deletion(-)
複製代碼
Git自動給dev分支作了一次提交,注意此次提交的commit是1d4b803,它並不一樣於master的4c805e2,由於這兩個commit只是改動相同,但確實是兩個不一樣的commit。用git cherry-pick,咱們就不須要在dev分支上手動再把修bug的過程重複一遍。code
總結: 修復bug時,咱們會經過建立新的bug分支進行修復,而後合併,最後刪除;
當手頭工做沒有完成時,先把工做現場git stash一下,而後去修復bug,修復後,再git stash pop,回到工做現場;
在master分支上修復的bug,想要合併到當前dev分支,能夠用git cherry-pick 命令,把bug提交的修改「複製」到當前分支,避免重複勞動。
添加一個新功能時,咱們爲了避免打亂主分支master,因此在咱們當前分支上(dev)新建分支
1. git switch -c feature-1 新建分支寫功能
2.git add <file>
3.git commit -m 'feature-1'
4.切回dev,準備合併
git switch dev
合併時若是該功能不適用,須要刪除,怎麼操做?
以下:
git branch -d feature-1
報錯:error: The branch 'feature-1' is not fully merged.
If you are sure you want to delete it, run 'git branch -D feature-vulcan'.
銷燬失敗。Git友情提醒,feature-1分支尚未被合併,若是刪除,將丟失掉修改,若是要強行刪除,須要使用大寫的-D參數。。
如今咱們強行刪除:
git branch -D feature-1 便可成功
複製代碼