git初識和常用命令
1、git為分散式版本控制系統.
2、git的特點
1)版本模式:原始碼版本庫副本間是對等的實體,使用者的機器出了儲存他 們的工作副本外,還擁有本地版本庫的歷史資訊。
2)併發模式:在合併模式下,使用者可以隨意編輯或更改檔案,但可能隨時會被通知存在衝突(兩個或多個使用者同時編輯同一檔案),於是版本控制工具或使用者需要合併更改以解決這種衝突。因此, 幾乎所有的分散式版本控制軟體採用合併方式解決併發衝突。
3)歷史模式:快照OR改變集
4)更改範圍:檔案Or目錄
5)網路協議:多個版本同步時的網路協議
6)原子性:提交、合併、不改變
7)部分clone:只拷版本庫子目錄
3、git常用命令
1)分支的管理
git branch
命令不僅僅能建立和刪除分支,如果不加任何引數,它會給出當前所有分支的清單:
$ git branch
iss53
* master
testing
注意看 master
分支前的 *
字元:它表示當前所在的分支。也就是說,如果現在提交更新,master
分支將隨著開發進度前移。若要檢視各個分支最後一個提交物件的資訊,執行 git branch -v
:
$ git branch -v iss53 93b412c fix javascript issue * master 7a98805 Merge branch 'iss53' testing 782fd34 add scott to the author list in the readmes
要從該清單中篩選出你已經(或尚未)與當前分支合併的分支,可以用 --merged
和 --no-merged
選項(Git 1.5.6 以上版本)。比如用 git branch --merged
檢視哪些分支已被併入當前分支(譯註:也就是說哪些分支是當前分支的直接上游。):
$ git branch --merged
iss53
* master
之前我們已經合併了 iss53
,所以在這裡會看到它。一般來說,列表中沒有 *
的分支通常都可以用 git branch -d
來刪掉。原因很簡單,既然已經把它們所包含的工作整合到了其他分支,刪掉也不會損失什麼。
另外可以用 git branch --no-merged
$ git branch --no-merged
testing
它會顯示還未合併進來的分支。由於這些分支中還包含著尚未合併進來的工作成果,所以簡單地用 git branch -d
刪除該分支會提示錯誤,因為那樣做會丟失資料:
$ git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.
不過,如果確實想要刪除該分支上的改動,可以用大寫的刪除選項 -D
強制執行,就像上面提示資訊中給出的那樣。
2)checkout命令用於從歷史提交(或者暫存區域)中拷貝檔案到工作目錄,也可用於切換分支。
3)實踐中必須理解的命令git diff (檢視分支不同)
git branch(管理分支)
git checkout(heckout命令用於從歷史提交(或者暫存區域)中拷貝檔案到工作目錄,也可用於切換分支)
git commit(暫存區域的檔案建立一個新的提交,並把此時的節點設為父節點。然後把當前分支指向新的提交節點)
git merge (分支合併,合併前,索引必須和當前提交相同。如果另一個分支是當前提交的祖父節點,那麼合併命令將什麼也不做)
git remote(沒有克隆現有倉庫,並欲將你的倉庫連線到某個遠端伺服器)
git fetch(建立並更新
所有遠端分支的本地遠端分支
)
git pull(更新你的本地倉庫至最新改動)
git push(推送到遠端倉庫,否則不為他人所見)
git reset (
本地倉庫的回退(撤銷本地的commit): git reset:
reset命令有3種方式:
git reset --mixed:此為預設方式,不帶任何引數的git reset,即時這種方式,它回退到某個版本,只保留原始碼,回退commit和index資訊git
reset --soft HEAD^:回退到某個版本,只回退了commit的資訊,不會恢復到index file一級。如果還要提交,直接commit即可
git reset --hard:徹底回退到某個版本,本地的原始碼也會變為上一個版本的內容
)
git revert(
git revert 是撤銷某次操作,此次操作之前的commit都會被保留
git reset 是撤銷某次提交,但是此次之後的修改都會被退回到暫存區
)
git reflog(記錄分支的變化或者是HEAD引用的變化)
git log (檢視修改資訊)
git tag(軟體釋出時建立標籤,是被推薦的)