天天看點

Git常用指令

  以下是學習git時常用的指令,大緻總結了以下,用git做版本控制所用的指令挺多的,但常用的也在大腦承受的範圍之中,把自己總結的東西給大家分享一下。

  1.建立Git庫:git的初始化用cd切換到要換的目錄用“git-init”初始化(-代表空格)

  2.git-add向Git庫中添加檔案,在調用了git-add才可以做commit操作

  3.git-rm删除庫中的檔案

  4.git-ls-files來檢視目前的git庫中有那些檔案

  5.git-status檢視版本庫狀态(建議每次commit前要通過該指令确認庫狀态。以免誤操作.)

  最常見的誤操作:修改了一個檔案, 沒有調用git-add通知git庫該檔案已經發生了變化就直接調用commit操作,進而導緻該檔案并沒有真正的送出。如果這時如果開發者以為已經送出了該檔案,就繼續修改甚至删除這個檔案,那麼修改的内容就沒有通過版本管理起來。如果每次在送出前,使用git-status檢視一下,就可以發現這種錯誤。是以,如果調用了git-status指令,一定要格外注意那些提示為   “Changed but not updated:”的檔案。這些檔案都是與上次commit相比發生了變化,但是卻沒有通過git-add辨別的檔案。

  向版本庫送出變化git-commit.直接調用git-commit會提示填寫注釋。 

    1.可以通過git-commit   -m"注釋",必須得有注釋,不然不能送出.

    2.git-commit還有一個–a的參數,可以将那些沒有通過git-add辨別的變化一并強行送出,但是不建議使用這種方式。

    3.每一次送出,git就會為全局代碼建立一個唯一的commit辨別代碼,使用者可以通過git-revert指令恢複到任意一次送出時的代碼。

    4.可以 用git-diff來檢視具體那些檔案發生了變化

    5.在送出後還可以通過git-log,指令來檢視送出記錄

  分支管理git-branch:當第一次執行git-init時,系統就會建立一個名為”master”的分支。而其它分支則通過手工建立。

    1.建立一個屬于自己的個人工作分支,以避免對主分支 master 造成太多的幹擾,也友善與他人交流協作。

    2.當進行高風險的工作時,建立一個試驗性的分支,扔掉一個爛攤子總比收拾一個爛攤子好得多。

    3.git-branch  檢視已存在的分支

    4.git-branch  分支名:建立分支

      git-branch   分支名稱

      git-checkout -b分支名

  使用第一種方法,雖然建立了分支,但是不會将目前工作分支切換到新建立的分支上,是以,還需要指令”git-checkout 分支名” 來切換, 而第二種方法不但建立了分支,還将目前工作分支切換到了該分支上。

  1.删除分支git-branch -D

    git-branch –D 分支名可以删除分支,但是需要小心,删除後,發生在該分支的所有變化都無法恢複。

  2.切換分支git-checkout 分支名

    如果分支已經存在, 可以通過 git-checkout 分支名 來切換工作分支到該分支名

  3.檢視曆史分支 git-show-branch

 

1 * [dev1] d2
 2 
 3 ! [master] m2
 4 
 5 --
 6 
 7 * [dev1] d2
 8 
 9 * [dev1^] d1
10 
11 * [dev1~2] d1
12 
13 *+ [master] m2      
    1. 在上述例子中, “--”之上的兩行表示有兩個分支dev1和master,且dev分支上最後一次送出的日志是“d2”,master分支上最後一次送出的日志是”m2”。     “--”之下的幾行表示了分支演化的曆史,其中 dev1表示發生在dev分支上的最後一次送出,dev^表示發生在dev分支上的倒數第二次送出。dev1~2表示發生在dev分支上的倒數第三次送出。
    2. 合并分支  - git-merge

      git-merge的用法為:git-merge “some memo”  合并的目标分支 合并的來源分支。如:

      如果合并有沖突,git會由提示,目前,git-merge已經很少用了,用git-pull來替代了。

      用法為:git-pull 合并的目标分支 合并的來源分支。 如git-pull . dev1

  1. 從遠端擷取一個git庫git-clone

    通過git-clone擷取的遠端git庫,隻包含了遠端git庫的目前工作分支。如果想擷取其它分支資訊,需要使用”git-branch–r” 來檢視, 如果需要将遠端的其它分支代碼也擷取過來,可以使用指令” git checkout -b本地分支名遠端分支名”,其中,遠端分支名為git-branch –r所列出的分支名, 一般是諸如“origin/分支名”的樣子。如果本地分支名已經存在,則不需要“-b”參數。

  2. 從遠端擷取一個git分支 –git-pull

    git-pull username@ipaddr: 遠端repository名遠端分支名:本地分支名。這條指令将從遠端git庫的遠端分支名擷取到本地git庫的一個本地分支中。其中,如果不寫本地分支名,則預設pull到本地目前分支。需要注意的是,git-pull也可以用來合并分支。 和git-merge的作用相同。是以,如果你的本地分支已經有内容,則git-pull會合并這些檔案,如果有沖突會報警。

  3. 将本地分支内容送出到遠端分支 –git-push

    git-push和git-pull正好想反,是将本地某個分支的内容送出到遠端某個分支上。git-push username@ipaddr: 遠端repository名 本地分支名:遠端分支名。這條指令将本地git庫的一個本地分支push到遠端git庫的遠端分支名中。

  4. 庫的逆轉與恢複 –git-reset

    庫的逆轉與恢複除了用來進行一些廢棄的研發代碼的重置外,還有一個重要的作用。比如我們從遠端clone了一個代碼庫,在本地開發後,準備送出回遠端。但是本地代碼庫在開發時,有功能性的commit,也有出于備份目的的commit等等。總之,commit的日志中有大量無用log,我們并不想把這些                            log在送出回遠端時也送出到庫中。 是以,就要用到git-reset。Git-reset的概念比較複雜。它的指令形式:git-reset [--mixed    | --soft | --hard] [<commit-ish>]

    指令的選項:

    --mixed

    這個是預設的選項。 如git-reset [--mixed] dev1^(dev1^的定義可以參見2.6.5)。它的作用僅是重置分支狀态到dev1^, 但是卻不改變任何工作檔案的内容。即,從dev1^到dev1的所有檔案變化都保留了,但是dev1^到dev1之間的所有commit日志都被清除了,而且,發生變化的檔案内容也沒有通過git-add辨別,如果您要重新commit,還需要對變化的檔案做一次git-add。這樣,commit後,就得到了一份非常幹淨的送出記錄。                          

    --soft

    相當于做了git-reset –mixed,後,又對變化的檔案做了git-add。如果用了該選項,就可以直接commit了。

    --hard

    這個指令就會導緻所有資訊的回退, 包括檔案内容。 一般隻有在重置廢棄代碼時,才用它。執行後,檔案内容也無法恢複回來了。

作者:青玉伏案

出處:http://www.cnblogs.com/ludashi/

本文版權歸作者和共部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

如果文中有什麼錯誤,歡迎指出。以免更多的人被誤導。

收履歷:某網際網路公司,招聘iOS/Android靠譜工程師,入職後,可内部聯系樓主,有小禮品贈送,有意者可郵箱投遞履歷:[email protected]

繼續閱讀