Git命令使用

Git命令使用

  • 前言

    • 在使用Git命令之前都使用可視化工具SourceTree操作git,現(xiàn)在需要Git Android源碼了,就需要掌握Git命令使用。 沒有辦法學(xué)習(xí)吧,也隨便把逼格提高下。
  • Git安裝

    • 安裝

      brew cask install git
      
    • 配置:每次Git提交時都會引用這兩條信息,說明是誰提交了更新,所以會隨更新內(nèi)容一起被永久納入歷史記錄

      • 配置用戶名
      $ git config --global user.name 用戶名
      
      • 配置用戶郵箱
      $ git config --global user.email 郵箱
      

      配置好通過命令

      $ git config --list
      

      查看配置信息,當(dāng)你想針對特定項目使用不同的用戶名稱與郵件地址時,可以在那個項目目錄下運行沒有 --global 選項的命令來配置。

  • 初始化

    • 本地新建倉庫

      • 初始化的 Git 倉庫中所有的必須文件
      $ git init
      
    • 從服務(wù)器端拉取,指定文件目錄下執(zhí)行

    $ git clone 項目地址
    $ git clone https://github.com/libgit2/libgit2
    

    或者克隆遠(yuǎn)程倉庫且自定義本地倉庫的名字

    $ git clone 項目地址 自定義本地倉庫名字
    $ git clone https://github.com/libgit2/libgit2 mylibgit
    
  • 忽略文件,項目一般的忽略文件都在.gitignore中,如果沒有自己可以新建。

    $ cat .gitignore
    *.[oa]
    *~
    

打開.gitignore文件,第一行告訴 Git 忽略所有以 .o 或 .a 結(jié)尾的文件。第二行告訴 Git 忽略所有以波浪符(~)結(jié)尾的文件
- 文件 .gitignore 的格式規(guī)范如下:
- 所有空行或者以#開頭的行都會被Git忽略。
- 可以使用標(biāo)準(zhǔn)的glob模式匹配。
- 匹配模式可以以(/)開頭防止遞歸。
- 匹配模式可以以(/)結(jié)尾指定目錄。
- 要忽略指定模式以外的文件或目錄,可以在模式前加上驚嘆號(!)取反。

所謂的 glob 模式是指 shell 所使用的簡化了的正則表達(dá)式。 星號()匹配零個或多個任意字符;[abc] 匹配任何一個列在方括號中的字符(這個例子要么匹配一個 a,要么匹配一個 b,要么匹配一個 c);問號(?)只匹配一個任意字符;如果在方括號中使用短劃線分隔兩個字符,表示所有在這兩個字符范圍內(nèi)的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的數(shù)字)。 使用兩個星號() 表示匹配任意中間目錄,比如a/**/z 可以匹配 a/z, a/b/z 或 a/b/c/z等。
GitHub 有一個十分詳細(xì)的針對數(shù)十種項目及語言的 .gitignore 文件列表,你可以在 https://github.com/github/gitignore找到它.

  • 狀態(tài),查看當(dāng)前分支的狀態(tài)情況,并簡單顯示當(dāng)前分支的變化情況

    $ git stauts
    

    先了解下分支有哪些狀態(tài)。

    Git倉庫、工作目錄以及暫存區(qū)域
    ,具體詳細(xì)資料我就不說了,直接鏈接到這里
    所以你每次work上操作了,要執(zhí)行add,commit,最后同步服務(wù)器pull

  • 差異對比

    $ git diff
    

    若要看已經(jīng)暫存起來的文件和上次提交時的快照之間的差異,可以用

    $ git diff --cached
    

表示查看已經(jīng) add 進(jìn)暫存區(qū)但是尚未 commit 的內(nèi)容同最新一次 commit 時的內(nèi)容的差異。

  • 分支提交

    $ git commit
    

    然后就會跳轉(zhuǎn)編輯頁面,你需要輸入你commit的內(nèi)容 還有另外一種簡寫commit內(nèi)容

    $ git commit -m "提交內(nèi)容簡述"
    
    • 跳過使用暫存區(qū)域:add和commit兩步一起執(zhí)行
    $ git commit -a
    

    -a后面也可以添加其他操作參數(shù),如

    $ git commit -a -m "提交內(nèi)容簡述"
    
  • 移除文件(待補充)

    $ git rm 
    
  • 移動文件

    $ git mv
    
  • 查看提交歷史

    $ git log
    

    我們常用 -p 選項展開顯示每次提交的內(nèi)容差異,用 -2 則僅顯示最近的兩次更新:

    $ git log -p -2
    
  • 撤消操作

  • 遠(yuǎn)程倉庫的使用

    • 查看當(dāng)前的遠(yuǎn)程庫
    $ git remote
    
    • 從遠(yuǎn)程倉庫抓取數(shù)據(jù)
    $ git fetch [remote-name]
    

    同步遠(yuǎn)程倉庫數(shù)據(jù)

    $ git fetch origin
    

    會抓取從你上次克隆以來別人上傳到此遠(yuǎn)程倉庫中的所有更新(或是上次 fetch 以來別人提交的更新)。有一點很重要,需要記住,fetch 命令只是將遠(yuǎn)端的數(shù)據(jù)拉到本地倉庫,并不自動合并到當(dāng)前工作分支,只有當(dāng)你確實準(zhǔn)備好了,才能手工合并。

    • 推送數(shù)據(jù)到遠(yuǎn)程倉庫
    git push [remote-name] [loca-branch]:[remote-branch]
    

例:git push origin master:master
````
如果要把本地的 master 分支推送到 origin 服務(wù)器上(再次說明下,克隆操作會自動使用默認(rèn)的 master 和 origin 名字),可以運行下面的命令

````
$ git push origin master
````
- 查看遠(yuǎn)程倉庫信息
````
$ git remote show [remote-name]
````
例如
````    
$ git remote show origin
````
  • 打標(biāo)簽

    $ git tag
    
  • 分支的新建與合并

    • 創(chuàng)建分支
    $ git branch iss53
    
    • 切換分支
    $ git checkout iss53
    
    • 要新建并切換到該分支,運行 git checkout 并加上 -b 參數(shù):
    $ git checkout -b iss53
    Switched to a new branch 'iss53'
    
    • 合并:用 git merge 命令來進(jìn)行合并:
    $ git checkout master
    $ git merge hotfix
    

    切換到master分支,master分支合并hotfix分支。

  • 分支的衍合:把一個分支中的修改整合到另一個分支的辦法有兩種:merge 和 rebase(譯注:rebase 的翻譯暫定為“衍合”,大家知道就可以了。)。有了 rebase 命令,就可以把在一個分支里提交的改變移到另一個分支里重放一遍。

    $ git checkout experiment
    $ git rebase master
    First, rewinding head to replay your work on top of it...
    Applying: added staged command
    
  • 數(shù)據(jù)緩存

  • 全局配置忽略文件

$git config --global core.excludesfile ~/.gitignore
  • git fetch

git fetch && git checkout -b develop origin/develop
拉取并切換到遠(yuǎn)端分支develop

//git拉取遠(yuǎn)程分支到本地分支或者創(chuàng)建本地新分支
git fetch origin branchname:branchname

- git add -A 添加所有修改,刪除文件

- 查看遠(yuǎn)程分支

git branch -a

- 拉取遠(yuǎn)端分支到本地

git fetch origin remoteBranchName(遠(yuǎn)程分支名):localBranchName(本地分支名)

- 緩存修改數(shù)據(jù)

git stash save “標(biāo)簽名”

- 參考書[ProGit](http://iissnan.com/progit/html/zh/ch1_3.html)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,247評論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,520評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,362評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,805評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,541評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,896評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,887評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,062評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,608評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,356評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,555評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,077評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,769評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,175評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,489評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,289評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,516評論 2 379

推薦閱讀更多精彩內(nèi)容