Git命令使用

Git命令使用

  • 前言

    • 在使用Git命令之前都使用可视化工具SourceTree操作git,现在需要Git Android源码了,就需要掌握Git命令使用。 没有办法学习吧,也随便把逼格提高下。
  • Git安装

    • 安装

      brew cask install git
      
    • 配置:每次Git提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录

      • 配置用户名
      $ git config --global user.name 用户名
      
      • 配置用户邮箱
      $ git config --global user.email 邮箱
      

      配置好通过命令

      $ git config --list
      

      查看配置信息,当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global 选项的命令来配置。

  • 初始化

    • 本地新建仓库

      • 初始化的 Git 仓库中所有的必须文件
      $ git init
      
    • 从服务器端拉取,指定文件目录下执行

    $ 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 的格式规范如下:
- 所有空行或者以#开头的行都会被Git忽略。
- 可以使用标准的glob模式匹配。
- 匹配模式可以以(/)开头防止递归。
- 匹配模式可以以(/)结尾指定目录。
- 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。 星号()匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。 使用两个星号() 表示匹配任意中间目录,比如a/**/z 可以匹配 a/z, a/b/z 或 a/b/c/z等。
GitHub 有一个十分详细的针对数十种项目及语言的 .gitignore 文件列表,你可以在 https://github.com/github/gitignore找到它.

  • 状态,查看当前分支的状态情况,并简单显示当前分支的变化情况

    $ git stauts
    

    先了解下分支有哪些状态。

    Git仓库、工作目录以及暂存区域
    ,具体详细资料我就不说了,直接链接到这里
    所以你每次work上操作了,要执行add,commit,最后同步服务器pull

  • 差异对比

    $ git diff
    

    若要看已经暂存起来的文件和上次提交时的快照之间的差异,可以用

    $ git diff --cached
    

表示查看已经 add 进暂存区但是尚未 commit 的内容同最新一次 commit 时的内容的差异。

  • 分支提交

    $ git commit
    

    然后就会跳转编辑页面,你需要输入你commit的内容 还有另外一种简写commit内容

    $ git commit -m "提交内容简述"
    
    • 跳过使用暂存区域:add和commit两步一起执行
    $ git commit -a
    

    -a后面也可以添加其他操作参数,如

    $ git commit -a -m "提交内容简述"
    
  • 移除文件(待补充)

    $ git rm 
    
  • 移动文件

    $ git mv
    
  • 查看提交历史

    $ git log
    

    我们常用 -p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新:

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

  • 远程仓库的使用

    • 查看当前的远程库
    $ git remote
    
    • 从远程仓库抓取数据
    $ git fetch [remote-name]
    

    同步远程仓库数据

    $ git fetch origin
    

    会抓取从你上次克隆以来别人上传到此远程仓库中的所有更新(或是上次 fetch 以来别人提交的更新)。有一点很重要,需要记住,fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。

    • 推送数据到远程仓库
    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
    
  • 分支的新建与合并

    • 创建分支
    $ git branch iss53
    
    • 切换分支
    $ git checkout iss53
    
    • 要新建并切换到该分支,运行 git checkout 并加上 -b 参数:
    $ 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
    
  • 数据缓存

  • 全局配置忽略文件

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

git fetch && git checkout -b develop origin/develop
拉取并切换到远端分支develop

//git拉取远程分支到本地分支或者创建本地新分支
git fetch origin branchname:branchname

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

- 查看远程分支

git branch -a

- 拉取远端分支到本地

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

- 缓存修改数据

git stash save “标签名”

- 参考书[ProGit](http://iissnan.com/progit/html/zh/ch1_3.html)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容