Git命令使用
-
前言
- 在使用Git命令之前都使用可視化工具SourceTree操作git端逼,現(xiàn)在需要Git Android源碼了朗兵,就需要掌握Git命令使用。 沒有辦法學習吧顶滩,也隨便把逼格提高下余掖。
-
Git安裝
-
安裝
- 官方安裝方法
- brew命令
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)脆炎。
所以你每次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)