Git命令使用

Git命令使用

  • 前言

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

    • 安裝

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

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

      配置好通過命令

      $ git config --list
      

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

  • 初始化

    • 本地新建倉庫

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

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

    或者克隆遠程倉庫且自定義本地倉庫的名字

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

    $ cat .gitignore
    *.[oa]
    *~
    

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

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

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

    $ git stauts
    

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

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

  • 差異對比

    $ git diff
    

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

    $ git diff --cached
    

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

  • 分支提交

    $ git commit
    

    然后就會跳轉編輯頁面入蛆,你需要輸入你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
    
  • 撤消操作

  • 遠程倉庫的使用

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

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

    $ git fetch origin
    

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

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

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

````
$ git push origin master
````
- 查看遠程倉庫信息
````
$ git remote show [remote-name]
````
例如
````    
$ git remote show origin
````
  • 打標簽

    $ 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 命令來進行合并:
    $ 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
拉取并切換到遠端分支develop

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

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

- 查看遠程分支

git branch -a

- 拉取遠端分支到本地

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

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

git stash save “標簽名”

- 參考書[ProGit](http://iissnan.com/progit/html/zh/ch1_3.html)
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末渠退,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子脐彩,更是在濱河造成了極大的恐慌碎乃,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惠奸,死亡現(xiàn)場離奇詭異荠锭,居然都是意外死亡,警方通過查閱死者的電腦和手機晨川,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門证九,熙熙樓的掌柜王于貴愁眉苦臉地迎上來删豺,“玉大人,你說我怎么就攤上這事愧怜⊙揭常” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵拥坛,是天一觀的道長蓬蝶。 經(jīng)常有香客問我,道長猜惋,這世上最難降的妖魔是什么丸氛? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮著摔,結果婚禮上缓窜,老公的妹妹穿的比我還像新娘。我一直安慰自己谍咆,他們只是感情好禾锤,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著摹察,像睡著了一般恩掷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上供嚎,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天黄娘,我揣著相機與錄音,去河邊找鬼克滴。 笑死寸宏,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的偿曙。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼羔巢,長吁一口氣:“原來是場噩夢啊……” “哼望忆!你這毒婦竟也來了?” 一聲冷哼從身側響起竿秆,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤启摄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后幽钢,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歉备,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年匪燕,在試婚紗的時候發(fā)現(xiàn)自己被綠了蕾羊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喧笔。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖龟再,靈堂內(nèi)的尸體忽然破棺而出书闸,到底是詐尸還是另有隱情,我是刑警寧澤利凑,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布浆劲,位于F島的核電站,受9級特大地震影響哀澈,放射性物質(zhì)發(fā)生泄漏牌借。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一割按、第九天 我趴在偏房一處隱蔽的房頂上張望膨报。 院中可真熱鬧,春花似錦哲虾、人聲如沸丙躏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晒旅。三九已至,卻和暖如春汪诉,著一層夾襖步出監(jiān)牢的瞬間废恋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工扒寄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鱼鼓,地道東北人。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓该编,卻偏偏與公主長得像迄本,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子课竣,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

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