1. 程式人生 > >git初識和常用命令

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(軟體釋出時建立標籤,是被推薦的