Git命令使用

Git命令使用

  • 前言

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

    • 安装

      • 官方安装方法
      • brew命令
      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命令使用_第1张图片
    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)

你可能感兴趣的:(Git命令使用)