Git使用備忘

一、Git的配置


        /etc/gitconfig 文件:系統中對所有用戶都普遍適用的配置。若使用 git config 時用 --system 選項,讀寫的就是這個文件。

 

        ~/.gitconfig 文件:用戶目錄下的配置文件只適用於該用戶。若使用 git config 時用 --global 選項,讀寫的就是這個文件。

 

        當前項目的 Git 目錄中的配置文件(也就是工作目錄中的 .git/config 文件):這裏的配置僅僅針對當前項目有效。每一個級別的配置都會覆蓋上層的相同配置,所.git/config 裏的配置會覆蓋 /etc/gitconfig 中的同名變量。

 

        1、設置用戶信息

    $ git config --globaluser.name  “fatedier”

    $ git config --global user.email [email protected]

    $ git config --global core.editor vim

 

        2、設置差異分析工具

    $ git config --global merge.tool vimdiff

 

        3、如何獲取幫助文檔

    $ git help<verb>

    $ git <verb> --help

    $ man git-<verb>

 

        例如man git-config

 

二、Git基礎操作


1、取得Git倉庫(從現有倉庫克隆)


        $ git clone https://github.com/schacon/fatest.git

 

        這個命令會在當前目錄下創建一個fatest的目錄,其中的.git目錄保存所有的版本記錄。fatest下是項目的所有文件。

 

        如果要自定義目錄名稱,可以在末尾指定,例如:


        $ git clone https://github.com/schacon/fatest.gitfatestnew


        現在創建的目錄就是fatestnew而不是fatest了,其他的都一樣。

 

2、檢查當前項目文件狀態


        $ git status

 

        可以看到有哪些文件是沒有加入到版本中的,哪些是修改了還沒提交的等等。

 

3、將新文件加入到版本中


        $ git add test.cpp

 

        注:git add命令對於不同狀態的文件有不同的效果,可以用它開始跟蹤新文件,或者把已跟蹤的文件放到暫存區,還能用於合併時把有衝突的文件標記爲已解決狀態等。

 

        注意修改過後的文件處於未暫存狀態,提交的時候處於未暫存狀態的文件將不會提交,需要使用git add命令更改爲暫存狀態,之後再提交就會提交到倉庫中了。

 

4、忽略某些文件


        對於不需要加入到版本中,並且使用git status時不再提示的文件。

        在.gitignore文件中進行配置

        例如*.exe

        那麼所有的以.exe結尾的文件都會被忽略,而不再提醒。

 

        例子:

        # 此爲註釋– 將被 Git 忽略

        # 忽略所有 .a 結尾的文件

        *.a

        # 但 lib.a 除外

        !lib.a

        # 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO

        /TODO

        # 忽略 build/ 目錄下的所有文件

        build/

        # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt

        doc/*.txt

        # ignore all .txt files in the doc/ directory

        doc/**/*.txt

 

5、查看已暫存和未暫存的更新文件差異


        未暫存:

        $ git diff

        已暫存:

        $ git diff --staged

 

6、提交更新


        $ git commit

        之後進入vim編輯提交說明,保存即可。

 

        $ git commit --m “comment”

        使用-m命令可以直接在一行命令中寫說明。

 

        $ git commit -a

        使用-a命令,會把未暫存和已暫存的文件一起提交,不然只會提交已暫存的文件。

 

7、刪除文件和取消跟蹤


        可以先本地使用rm命令刪掉,這時候放在未暫存區域,之後用“git rm文件名”刪掉。

 

        也可以直接使用“git rm 文件名”刪掉。

 

        另外一種情況是,我們想把文件從 Git 倉庫中刪除(亦即從暫存區域移除),但仍然希望保留在當前工作目錄中。換句話說,僅是從跟蹤清單中刪除。比如一些大型日誌文件或者一堆 .a 編譯文件,不小心納入倉庫後,要移除跟蹤但不刪除文件,以便稍後在 .gitignore 文件中補上,用 --cached 選項即可:

 

        $ git rm --cached readme.txt

 

8、移動文件


        例如要把test.cpp改爲tt.cpp

        $ git mv test.cpp tt.cpp

 

        就相當於是

    $ mv README.txt README

        $ git rm README.txt

        $ git add README

 

9、查看提交歷史


        $ git log

 

10、撤銷操作


        (1)覆蓋上一次的提交

        $ git commit --amend

        會將上次提交和這次提交合並起來,算作一次提交。

 

        (2)取消已暫存文件

        $ git reset HEAD <file>

        這個時候文件狀態就從已暫存變爲未暫存

 

        (3)取消對文件的修改(還沒有放到暫存區)

        $ git checkout -- <file>

 

11、運程倉庫的使用


        (1)查看當前的遠程庫

        $ git remote

        會列出每個遠程庫的簡短的名字,默認使用origin表示原始倉庫

 

        $ git remote -v

        會額外列出遠程庫對應的克隆地址

 

        (2)添加遠程倉庫

        $ git remote add [shortname] [url]

 

        (3)從遠程倉庫抓取數據

        $ git fetch [remote-name]

        抓取數據,但並不合併到當前分支

 

        $ git pull

        自動抓取數據,並自動合併到當前分支

$ git branch -r

查看所有遠程分支


        $ git checkout -b test origin/test

        獲取遠程分支到本地新的分支上,並切換到新分支

 

        (4)推送數據到遠程倉庫

        $ git push [remote-name] [branch-name]

        推送操作會默認使用origin和master名字

 

        (5)查看遠程倉庫信息

        $ git remote show [remote-name]

        除了對應的克隆地址外,它還給出了許多額外的信息。它友善地告訴你如果是在 master 分支,就可以用 git pull 命令抓取數據合併到本地。另外還列出了所有處於跟蹤狀態中的遠端分支。

 

        (6)遠程倉庫的刪除

        $ git remote rm [remote-name]

 

12、標籤的使用


        (1)顯示已有的標籤

        $ git tag

 

        (2)新建標籤

        $ git tag v1.0

        新建一個簡單的標籤

 

        $ git tag -a v1.0 -m ‘my version 1.0’

        -m指定了對應標籤的說明

 

        (3)後期加註標籤

        $ git log --pretty=oneline --abbrev-commit

        先顯示提交歷史

        $ git tag -a v1.1 9fceb02

        補加標籤

 

        (4)推送標籤

        $ git push origin [tagname]

 

        13、設置命令別名

        $ git config --global alias.co checkout

 

三、Git分支


1、新建分支


        $ git branch testing

        會在當前commit對象上新建一個分支指針

 

        注:HEAD這個特別的指針是指向正在工作中的本地分支的指針


2、切換分支


        $ git checkout testing

        切換到testing分支上

 

3、分支的合併


        在master分支上,執行:

        $ git merge testing

        將tesing分支合併回master

 

4、使用合併工具(可以自己設置,例如設置成vimdiff)


        $ git mergetool

 

5、分支的管理


        $ git branch --merged

        查看哪些分支已經被併入當前分支,通常這些都可以刪除了。

 

        $ git branch -d testing

        刪除一個分支

 

        $ git branch -D testing

        如果該分支尚沒有合併,可以使用-D選項強制刪除。

 

6、推送本地分支


        $ git push origin testing

 

7、分支的衍合


        例如現在有兩個分支,一個master,一個testing

        $ git checkout testing

        $ git rebase master

        $ git checkout master

        $ git merge testing

        通常在貢獻自己的代碼之前先衍合,再提交,會讓歷史提交記錄更清晰。


四、Git調試


1、文件標註


        $ git blame -L 12,22 test.cpp

        查看test.cpp文件對每一行進行修改的最近一次提交。

 

2、查看文件的歷史提交


        $ git log --pretty=oneline test.cpp

        查看test.cpp文件的歷史提交記錄

 

3、查看文件的歷史版本


        $ git show [commit] [file]

        例如:$ git show 7da7c23 test.cpp

        查看7da7c23這次提交的test.cpp文件。


4、查看歷史提交的詳細文件變化

        $ git log -p -2
       通過這條命令可以看到最近兩次提交的文件變化情況,刪除的部分會以“-”開頭,新增的部分會以“+”開頭,方便查看。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章