天天看點

[筆記分享] [Git] progit學習筆記之基礎

初始化一個空git:

git init
           

從已有倉庫clone一個:

git clone git://10.85.21.71/vm/test.git kris_test   //指定clone到本地kris_test目錄
           

檢視檔案狀态:

git status
           

Note: 當隻修改檔案權限時,git隻關注執行bit,其他bit改變之後git status不會受影響。

跟蹤或者添加檔案:

git add test    //隻添加test檔案
git add .       //添加已修改檔案和新檔案
git add –A  //添加所有檔案,包括被删除的檔案
git add –u  //添加已修改和被删除檔案
           

添加忽略檔案: //自己生成檔案等

建立.gitignore, 往此檔案添加内容即可,可以是相對路徑,可是比對格式,格式規範如下:
           

1. 空行和#開頭的行被git忽略。

2. glob模式比對(正規表達式簡化版本),有*,[abc],?,[0-9]。

3. 以/結尾的表明要忽略整個目錄。

4. 忽略指定模式以外的檔案或目錄,可以在模式前加上!取反。

Note: 想要忽略檔案,此檔案必須不能在git倉庫中。

檢視檔案差異:

git diff    //檢視已修改檔案的差異, 比較已修改和暫存區檔案
git diff –cached //檢視暫存區和git目錄的差異,也可以用git diff –staged
git diff test.file  //檢視某個檔案的差異
           

送出檔案: //git add/rm之後才會被送出

git commit 
git commit –a       //相當于git add + git commit
           

删除檔案:

git rm file //git rm沒有 git rm . 
git rm –f file  //删除之前修改并且已放到暫存區域需要加-f
git rm –cached file //隻删除git倉庫檔案,本地儲存,例如日志檔案。
git rm  dir/\*.log  //遞歸删除dir下的*.log檔案,\是git自己的文法,表示要遞歸,
有\則隻删除目前目錄。
           

檢視送出曆史:

git log 
git log –p -2   //-p顯示每次送出内容差異,-2顯示最近兩次更新。
git log –stat   //僅顯示簡要的增該行數統計
git log –pretty=oneline //隻在一行顯示commit資訊,pretty後面可以跟online,format, short, full等。
git log –pretty=format:”%h - %an:%s”    //送出簡短哈希串,作者,送出說明。
git log –since=2.weeks   //顯示最近兩周送出
git log –author=Kris    //隻顯示作者Kris的送出
git log file    //隻顯示某個檔案或者目錄的送出資訊
           

修改最後一次送出:

Note: 在操作次指令前先運作git add/rm将檔案加到暫存區域才有意義。

取消已修改的檔案:

git checkout file   //file會被還原成未修改狀态
           

取消已暫存的檔案:

git reset –hard     //本地目錄,暫存區域都會被reset
git reset –soft     //最後一筆改動會到暫存區, 本地和暫存區域原有部分不變化
git reset –mixed    //預設模式,暫存區域會被改變,本地目錄不做變化
git reset –hard HEAD^   //上一次送出,也可以寫成HEAD~1。
git reset –hard HEAD^^  //上上一次送出,可以寫成HEAD~2.
           

檢視遠端倉庫:

git remote –v
           

添加遠端倉庫:

git remote add qcs_mirror git://10.85.21.71/x6_vm/non_hlos.git      //将遠端non_hlos git倉庫添加到本地,名字為qcs_mirror, 後面操作qcs_mirror就等同于操作遠端non_hlos git。
           

從遠端倉庫抓資料:

git fetch qcs_mirror    //會将遠端倉庫資料抓到本地,但是并不做merge
           

抓取資料并合并:

git pull        //相當于git fetch + git merge, 抓取的是目前分支對應遠端倉庫資料并和本地的代碼合并。
           

推送資料到遠端倉庫:

git push origin master  //本地master分支的code推送到遠端origin倉庫中。Git clone時預設使用master作為遠端倉庫對應本地的名字。
           

檢視遠端倉庫資訊:

git remote show origin 
           

重命名遠端倉庫名字:

git remote rename qcs_mirror qth_mirror //将遠端倉庫對應本地的名字從qcs_mirror改成qth_mirror。
           

删除遠端倉庫:

git remote rm qcs_mirror    //隻是删除遠端倉庫和本地的連接配接,并不是真删除了遠端倉庫的東西了。
           

列出所有标簽:

git tag 
           

列出某部分标簽:

git tag –l ‘v1.0.*’
           

建立标簽:

git tag v1.0    //标簽名字是v1.0
git tag –a v1.1 –m “version 1.1”    //其實是多加了一個commit,一般沒必要用這個。
           

檢視标簽:

git show v1.0       //标簽是就commit打的,是以看到的commit是基于當時打tag的時間點。
           

後期添加标簽:

git add –a v1.1 commit_id   //在送出時忘記打标簽,也可以後期基于某個commit id補上。
           

推送标簽:

git push origin v1.1    //推送v1.1這個标簽到origin 倉庫
git push origin –tags   //推送所有本地新增标簽到origin倉庫
           

删除标簽:

git tag –d v1.1     //删除本地标簽
git push origin :refs/tags/v1.1     //删除遠端倉庫标簽