文章

使用git

使用git

今天使用Git的时候发生了不开心的事情,差点把改好的代码丢掉,所以还是要学习一下怎么使用Git

先总结一下Git的几个功能

  • 远程代码存储
  • 代码回退,版本控制
  • 代码比较(本身带的功能比较弱,必要时可以借助其他工具)
  • 通过分支来控制代码质量(这要求我们频繁提交,防止分支与master相差太远,容易出现冲突)

    阮一峰的博客地址:www.ruanyifeng.com/blog/2014/06/git_remote.html

  • 代码提交流程:git add –> git commit –> git push
  • 代码下载流程:git pull
  • 新项目创建过程:git init
  • git clone:修改别人的代码
  • git remote:管理(远程)主机名
  • git fetch <远程主机名>:从版本库取得灯芯
  • git pull <远程主机名> <远程分支名>:<本地分支名>:从版本库取得更新,并与本地指定分支合并
  • git push <远程主机名> <本地分支名>:<远程分支名>:

    一些重要的点

  • git rm命令的使用细节
  • git show命令的使用细节

    来自git帮助(20170205)

    库控制

    init:初始化一个空库
    clone:从远程仓库拉取下所有数据放入.git文件夹,然后从中读取最新版本的文件的拷贝
    自定义仓库的名字:git clone https://github.com/libgit2/libgit2 mylibgit
    gti clone自动设置本地master分支跟踪克隆的远程仓库的master分支
    remote:
    git remote -v
    git remote add pb https://github.com/paulboone/ticgit
    git remote show origin
    fetch:从另外一个仓库下载对象或者引用
    push:更新远程引用和相关的对象
    pull:如果你有一个分支设置为跟踪一个远程分支,可以使用git pull自动抓取然后合并远程分支到当前分支
    git pull会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支

    内容控制

    status
    查看简短信息:git status -s
    diff:显示尚未暂存的改动,而不是自上次提交以来所做的所有改动
    查看尚未暂存的文件更新了哪些部分:git diff
    查看已暂存的将要添加到下次提交里的内容:git diff --staged
    git difftool命令使用Araxis,emerge,vimdiff来查看改动
    add
    commit
    git config --global core.editor设置默认编辑工具
    git commit -a -m "xxx"
    git commit --amend
    rm:
    rm
    git rm
    git rm -f
    git rm --cache
    mv:
    git mv=mv + git rm + git add
    log:
    git log -p -2
    git log --since=2.weeks
    git log --stat:显示简短信息
    git log --pretty=online
    git log --pertty=format:"%h - %an, %ar : %s"
    git log --pertty=format:"%h %s" --graph

    分支

    git branch
    git branch -v查看每一个分支的最后一次提交
    git branch -d:切换到一个新的分支,删除原有分支
    git branch --merged/ --no-merged:
    git checkout
    git checkout -b:创建并切换到一个新的分支
    git merge:合并一个分支

    分支开发工作流

  • 长期分支
  • 特征分支

    远程分支

  • 远程跟踪分支
  • 跟踪分支

    变基

    git checkout experiment
    git rebase master
    git checkout master
    git merget experiment

    .gitignore

  • 所有空行或者以#开头的行都会被忽略
  • 可以使用标准的glob模式匹配
  • 匹配模式可以使用/开头防止递归
  • 匹配模式可以使用/结尾指定目录
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号取反

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

本文由作者按照 CC BY 4.0 进行授权

热门标签