继续git相关的东西,网上很多讲解的,但是还是喜欢这个图:(爱屋及乌,当然内容也很好,文章链接:http://me.iblogc.com/2015/01/16/Git命令使用指南/

Git是软件开发人员在开发中常用的一种工具,是开发之利器。

Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。

工作流图示

命令

配置

  • git config --global user.name 'Your Name' 设置git提交显示的名字

  • git config --global user.email your_email@example.com 设置git提交显示的邮箱

  • git config --global alias.unstage "reset HEAD" 替换命令 git reset HEAD命令改为 git unstage

  • ssh-keygen -t rsa -C your_email@example.com 生成SSH Key

  • git config --global core.editor emacs 设置文件编辑器

  • git config --global merge.tool vimdiff 设置差异分析工具

  • git config --list 查看配置信息

简洁版

初始化仓库
git init

添加远程仓库
git remote add <自定义名字> <远程仓库url>

给某个仓库名再添加一个远程仓库url
git remote set-url --add <自定义名字> <远程仓库url>

更新项目
git pull

合并分支到当前分支
git merge <分支名>

创建标签
git tag <标签名字> <提交id前10位字符> 可通过git log获取

获取log
git log

切换分支
git checkout <分支名>

创建分支并切换过去
git checkout -b <分支名>

删除分支
git branch -D <分支名>

推送
git push origin <分支名/标签名>

强制推送更新
git push -f origin <分支名/标签名>

推送所有分支
git push origin --all

推送所有标签
git push origin --tags

撤消本地改动(新文件和提交到缓存区的改动,不受影响)
git checkout -- <目录><文件名>

撤消本地所有提交与改动
假如你想要丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它
git fetch origin
git reset --hard origin/master

其它命令

  • gitk 获取当前分支图形个界面

    • 参数<分支名>: 获取某分支图形界面
    • 参数=--all: 获取所有分支图形个界面
    • cat <目录><文件名> 查看文件内容

详细版

初始

  • git init 初始化仓库

  • ls 显示目录下文件及文件夹(不包含隐藏文件即名字前带点的)

    • 参数-a显示目录下所有文件及文件夹
  • git clone <url> 克隆项目

提交

  • git add <目录><文件名> 添加文件到版本库,可以多个文件一起添加,中间用空格隔开

  • git add * 或 git add . 添加所有文件到版本库

  • git status 查看项目当前状态,详细信息

    • 参数-s: 显示简洁版

    绿色表示已经提交的缓存区,红色表示在工作区未提交到缓存区的
    A新增 M修改 D删除 U冲突 R重命名?
    push会把绿色部分提交,红色部分不提交
    已有记录文件做过改动和新文件,需要git add

  • git diff 查看整个项目里的文件改动情况(工作区和缓存区比较)

    • 参数<目录><文件名>: 查看单个文件改动情况(工作区和缓存区比较)
      -参数<标签名>: 查看自当前标签发布之后项目的改动情况
    • 参数--cached: 查看整个项目里的文件改动情况(缓存区和本地仓库比较)
    • 参数 HEAD: 查看整个项目里的文件改动情况(工作区和本地仓库比较)
    • 参数--stat: 显示摘要,而非完整diff
  • git commit: 提交到缓存

    • 参数-m: 后面空格接提交信息
    • 参数-a: 为所有已有记录文件执行git add(新添加文件还是需要手动git add
  • git reset HEAD 取消缓存已缓存的内容

    • 参数<目录><文件名>: 单个文件取消缓存已缓存内容
  • git rm <目录><文件名>: 将文件从缓存区和硬盘上移除

    • 参数--cached: 删除缓存中的文件,保留硬盘上的文件
  • git mv 不推荐用

  • git log 显示当前分支提交记录

    • 参数--author=<authorname>: 只寻找某个特定作者的提交
    • 参数--oneline: 显示简洁版
      • 参数--oneline -<数字N>: 显示简洁版,显示最近N次提交的记录
    • 参数--graph: 显示拓扑图(查看历史中什么时候出现了分支、合并)
    • 参数--grep=<关键字>: 根据提交注释关键字过滤提交记录

      Git 会对所有的 –grep 和 –author 参数作逻辑或。 如果你用 –grep 和 –author 时,想看的是某人写作的并且有某个特殊的注释内容的提交记录, 你需要加上 –all-match 选项。 在这些例子中,我会用上 –format 选项,这样我们就可以看到每个提交的作者是谁了。详细参考:Git参考手册:检查与比较

    • 参数<分支名>:显示指定分支“可及”的提交记录
    • 参数<分支名1> ^<分支名1>: 查看在分支1不在分支2中的提交记录

      分支可以是本地的也可以是远端的

    • 参数--decorate: 显示带tag的记录
    • 参数-p: 显示每个提交引入的补丁
    • 参数--stat: 显示每个提交引入的差值统计
    • 其它参数 --since --before --until --after

      git log –since –before 根据日期过滤提交记录
      如果你要指定一个你感兴趣的日期范围以过滤你的提交,可以执行几个选项 —— 我用 –since 和 –before,但是你也可以用 –until 和 –after。 例如,如果我要看 Git 项目中三周前且在四月十八日之后的所有提交,我可以执行这个(我还用了 –no-merges 选项以隐藏合并提交)Git参考手册:检查与比较

$ git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges
5469e2d Git 1.7.1-rc2
d43427d Documentation/remote-helpers: Fix typos and improve language
272a36b Fixup: Second argument may be any arbitrary string
b6c8d2d Documentation/remote-helpers: Add invocation section
5ce4f4e Documentation/urls: Rewrite to accomodate transport::address
00b84e9 Documentation/remote-helpers: Rewrite description
03aa87e Documentation: Describe other situations where -z affects git diff
77bc694 rebase-interactive: silence warning when no commits rewritten
636db2c t3301: add tests to use --format="%N"

分支

  • git branch列出当前项目的可用分支,并显示当前工作目录当前分支

  • 参数<分支名>: 创建分支

  • git checkout <分支名> 切换到对应分支

    • 参数-b 创建分支并立即切换到新分支
  • git merge <分支名> 合并指定分支到当前分支

标签

  • git tag 显示当前项目的标签

    • 参数<标签名> 给某个历史记录打标签
    • 参数-a: 添加注解
    • 参数<SHA>: 提交id前n位字符,可通过git log获取,n位基于SHA唯一就行(建议5~7位)

远程

    • git remote 列出远端别名
      -参数-v: 列出远端别名及链接

      一般一个别名会看到两个相同的链接(fetch和push)分别是获取和推送的链接
      -add <仓库别名> <仓库链接>: 为项目添加一个新的远端仓库

      • rm <仓库别名>: 为项目删除一个远端仓库
        只是本地删掉和远端仓库的链接,不会对远端仓库造成影响
    • git fetch 从远端仓库下载最新的分支与数据

    • git pull 从远端仓库下载最新数据,并尝试合并到当前分支

      • 参数<仓库别名>: 从哪个仓库拉取更新,默认为origin

        git pull实际是先git fetchgit merge

    • git push 推送更新

      • 参数<仓库别名> <分支名>: 推送新分支与数据到某个远端仓库
      • 参数<仓库别名> --all: 推送所有分支
      • 参数<仓库别名> --tagsl: 推送所有标签

Git命令使用指南的更多相关文章

  1. git命令行指南

    Git 常用命令 git init here -- 创建本地仓库(repository),将会在文件夹下创建一个 .git 文件夹,.git 文件夹里存储了所有的版本信息.标记等内容 git remo ...

  2. 我总结的git命令指南。

    git命令行指南 1.windows上安装git的网址:http://msysgit.github.com/. 没有安装过git的 这个网址里下mymsgit. 因为发现有些同学对git还不是那么熟悉 ...

  3. 关于常用的git命令列表

    我博客园中所写的git内容几乎都是看的蒋鑫老师的<git权威指南>这本书实在太好了. 常用的Git命令. git add  添加到暂存区 git add interactive  交互式添 ...

  4. 一天工作所用到的Git命令

    一天工作所用到的Git命令 像大多数新手一样,我一开始是在网上搜索 Git 命令,然后把答案复制粘贴,并没有真正理解它们究竟做了什么. 后来我曾经想过:"如果有一个最常见的 Git 命令的列 ...

  5. git命令的理解与扩展

    Git的模式如图: Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Repository:仓库区(或本地仓库) 一.新建代码库 # 查看gi ...

  6. 工作所用的日常 Git 命令

    几乎每个开发人员都在使用 Git,当然很可能是 GitHub.但大多数开发者大概有 99% 的时间只是使用这三个命令: #使用命令git add <file>,将文件添加到暂存区 git ...

  7. Git 简易使用指南及补充

    Git最简易的使用指南 助你开始使用 git 的简易指南,木有高深内容,;) 安装 下载 git OSX 版 下载 git Windows 版 下载 git Linux 版 创建新仓库 创建新文件夹, ...

  8. Git简明使用指南[转]

    git - 简易指南 助你开始使用 git 的简易指南,木有高深内容,;). Tweet 作者:罗杰·杜德勒 感谢:@tfnico, @fhd and Namics 其他语言 english, deu ...

  9. Git 命令行帮助

    Git usage: git [--version] [--help] [-C <path>] [-c name=value] [--exec-path[=<path>]] [ ...

随机推荐

  1. 【python】python中的定义类属性和对像属性

    python中变量是没有类型的可以绑定任意类型,但是在语法上不能声明变量. 那我们怎麽来声名一个变量呢? f=None 这样我们给着个变量绑定了以各None类型,我们随时可用重新绑定其它类型.这样我们 ...

  2. VS查看DLL接口

    应用程序Microsoft Visual Studio 2010的Visual Studio Tools文件夹中打开Visual Studio Command Prompt (2010)命令窗口 du ...

  3. timeSetEvent()函数

    原文链接地址:http://www.cnblogs.com/kangwang1988/archive/2010/09/16/1827872.html 微软公司在其多媒体Windows中提供了精确定时器 ...

  4. BZOJ3242 [Noi2013]快餐店 【环套树 + 单调队列dp】

    题目链接 BZOJ3242 题解 题意很清楚,找一点使得最远点最近 如果是一棵树,就是直径中点 现在套上了一个环,我们把环单独拿出来 先求出环上每个点外向树直径更新答案,并同时求出环上每个点外向的最远 ...

  5. AOJ.559 丢失的数字

    丢失的数字 Time Limit: 1000 ms Memory Limit: 64 MB Total Submission: 1552 Submission Accepted: 273 Descri ...

  6. 【BZOJ 1082】[SCOI2005]栅栏 二分+dfs

    对于最优解我们发现所有的最优解都可以是前多少多少个,那么我们就二分这个前多少多少个,然后用dfs去判解,我们发现在dfs的过程中如果不剪枝几乎必T,所以我们就需要一些有效的剪枝 I. 我们在枚举过程中 ...

  7. [NOIP2003] 传染病控制 搜索+剪枝

    搜索的最广泛应用优化——剪枝 这道题的dp和贪心都是无正确性的,所以,搜~~~~~~~ 搜的时候你发现不剪枝极容易被卡掉(然而良心NOIP没有这么做,不剪枝仍然飞快),所以我们需要一些玄学的剪枝最常见 ...

  8. HDU 多校对抗赛 C Triangle Partition

    Triangle Partition Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Oth ...

  9. 停止ambari上服务的顺序

    Before performing any upgrades or uninstalling software, stop all of the Hadoop services in the foll ...

  10. Socket和ServerSocket学习笔记

    对于即时类应用或者即时类的游戏,HTTP协议很多时候无法满足于我们的需求.这会,Socket对于我们来说就非常实用了.下面是本次学习的笔记.主要分异常类型.交互原理.Socket.ServerSock ...