以下是學習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
- 在上述例子中, “--”之上的兩行表示有兩個分支dev1和master,且dev分支上最後一次送出的日志是“d2”,master分支上最後一次送出的日志是”m2”。 “--”之下的幾行表示了分支演化的曆史,其中 dev1表示發生在dev分支上的最後一次送出,dev^表示發生在dev分支上的倒數第二次送出。dev1~2表示發生在dev分支上的倒數第三次送出。
-
合并分支 - git-merge
git-merge的用法為:git-merge “some memo” 合并的目标分支 合并的來源分支。如:
如果合并有沖突,git會由提示,目前,git-merge已經很少用了,用git-pull來替代了。
用法為:git-pull 合并的目标分支 合并的來源分支。 如git-pull . dev1
-
從遠端擷取一個git庫git-clone
通過git-clone擷取的遠端git庫,隻包含了遠端git庫的目前工作分支。如果想擷取其它分支資訊,需要使用”git-branch–r” 來檢視, 如果需要将遠端的其它分支代碼也擷取過來,可以使用指令” git checkout -b本地分支名遠端分支名”,其中,遠端分支名為git-branch –r所列出的分支名, 一般是諸如“origin/分支名”的樣子。如果本地分支名已經存在,則不需要“-b”參數。
-
從遠端擷取一個git分支 –git-pull
git-pull username@ipaddr: 遠端repository名遠端分支名:本地分支名。這條指令将從遠端git庫的遠端分支名擷取到本地git庫的一個本地分支中。其中,如果不寫本地分支名,則預設pull到本地目前分支。需要注意的是,git-pull也可以用來合并分支。 和git-merge的作用相同。是以,如果你的本地分支已經有内容,則git-pull會合并這些檔案,如果有沖突會報警。
-
将本地分支内容送出到遠端分支 –git-push
git-push和git-pull正好想反,是将本地某個分支的内容送出到遠端某個分支上。git-push username@ipaddr: 遠端repository名 本地分支名:遠端分支名。這條指令将本地git庫的一個本地分支push到遠端git庫的遠端分支名中。
-
庫的逆轉與恢複 –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]