助你入门 git 的简明指南,木有高深内容 ;)

Tweet

作者:罗杰·杜德勒 
感谢:@tfnico, @fhd 和 Namics
其他语言 english, deutsch, español, français, indonesian, italiano, nederlands, polski, português, русский, türkçe, 
မြန်မာ, 日本語, 한국어 Vietnamese 
如有纰漏,请在 github 提报问题

安装

下载 git OSX 版

下载 git Windows 版

下载 git Linux 版

创建新仓库

创建新文件夹,打开,然后执行 
git init
以创建新的 git 仓库。

检出仓库

执行如下命令以创建一个本地仓库的克隆版本:
git clone /path/to/repository 
如果是远端服务器上的仓库,你的命令会是这个样子:
git clone username@host:/path/to/repository

工作流

你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,它指向你最后一次提交的结果。

添加和提交

你可以提出更改(把它们添加到暂存区),使用如下命令:
git add <filename>
git add *
这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:
git commit -m "代码提交信息"
现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。

推送改动

你的改动现在已经在本地仓库的 HEAD 中了。执行如下命令以将这些改动提交到远端仓库:
git push origin master
可以把 master 换成你想要推送的任何分支。

如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:
git remote add origin <server>
如此你就能够将你的改动推送到所添加的服务器上去了。

分支

分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。

创建一个叫做“feature_x”的分支,并切换过去:
git checkout -b feature_x
切换回主分支:
git checkout master
再把新建的分支删掉:
git branch -d feature_x
除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的
git push origin <branch>

更新与合并

要更新你的本地仓库至最新改动,执行:
git pull
以在你的工作目录中 获取(fetch) 并 合并(merge) 远端的改动。
要合并其他分支到你的当前分支(例如 master),执行:
git merge <branch>
在这两种情况下,git 都会尝试去自动合并改动。遗憾的是,这可能并非每次都成功,并可能出现冲突(conflicts)。 这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。改完之后,你需要执行如下命令以将它们标记为合并成功:
git add <filename>
在合并改动之前,你可以使用如下命令预览差异:
git diff <source_branch> <target_branch>

标签

为软件发布创建标签是推荐的。这个概念早已存在,在 SVN 中也有。你可以执行如下命令创建一个叫做 1.0.0 的标签:
git tag 1.0.0 1b2e1d63ff
1b2e1d63ff 是你想要标记的提交 ID 的前 10 位字符。可以使用下列命令获取提交 ID:
git log
你也可以使用少一点的提交 ID 前几位,只要它的指向具有唯一性。

log

如果你想了解本地仓库的历史记录,最简单的命令就是使用: 
git log
你可以添加一些参数来修改他的输出,从而得到自己想要的结果。 只看某一个人的提交记录:
git log --author=bob
一个压缩后的每一条提交记录只占一行的输出:
git log --pretty=oneline
或者你想通过 ASCII 艺术的树形结构来展示所有的分支, 每个分支都标示了他的名字和标签: 
git log --graph --oneline --decorate --all
看看哪些文件改变了: 
git log --name-status
这些只是你可以使用的参数中很小的一部分。更多的信息,参考:
git log --help

替换本地改动

假如你操作失误(当然,这最好永远不要发生),你可以使用如下命令替换掉本地改动:
git checkout -- <filename>
此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。

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

实用小贴士

内建的图形化 git:
gitk
彩色的 git 输出:
git config color.ui true
显示历史记录时,每个提交的信息只显示一行:
git config format.pretty oneline
交互式添加文件到暂存区:
git add -i

链接与资源

图形化客户端

  • GitX (L) (OSX, 开源软件)
  • Tower (OSX)
  • Source Tree (OSX, 免费)
  • GitHub for Mac (OSX, 免费)
  • GitBox (OSX, App Store)

指南和手册

  • Git 社区参考书
  • 专业 Git
  • 像 git 那样思考
  • GitHub 帮助
  • 图解 Git

git - 简明指南相关推荐

  1. git简明教程:基本操作命令

    **配置Git** #首先在本地创建ssh key: ssh-keygen -t rsa -C "your_email@youremail.com" #为了验证是否成功,在git ...

  2. git 简易指南+常用命令

    git 简易指南                      git 常用命令   ----------------------------------------------------------- ...

  3. 手把手教你入门Git --- Git使用指南(Linux)

    手把手教你入门Git - Git使用指南(Linux) 系统:ubuntu 18.04 LTS 本文所有git命令操作实验具有连续性,git小白完全可以从头到尾跟着本文所有给出的命令走一遍,就会对gi ...

  4. 史上最浅显易懂的Git学习指南

    Git是最流行的版本控制系统,且是分布式的,不像SVN的集中式管理.今天在网上搜了下Git,找到了一个很好的Git学习指南,竟然一口气把它全部刷了一遍,算是简单入门了.教程写的很好,浅显易懂,配有实例 ...

  5. WGCNA 简明指南|2. 模块与性状关联分析并识别重要基因

    WGCNA 简明指南|2. 模块与性状关联分析并识别重要基因 WGCNA 系列 WGCNA 简明指南|1. 基因共表达网络构建及模块识别 WGCNA 系列 参考 关联模块与临床特征 量化module- ...

  6. 廖雪峰Git简明教程整理

    廖雪峰Git简明教程 声明:本教程完全搬运自廖雪峰老师的个人网站,仅限于学习使用.所有版权归廖雪峰老师所有.整理人为Megatron,如果侵权请联系本人zhangwz93@foxmail.com删除. ...

  7. git使用指南_git设计师指南

    git使用指南 There have been so many debates on whether a designer should learn how to code - this is not ...

  8. git权威指南总结五:git克隆

    为什么需要克隆? git的版本库目录和工作区是在一起的,因此如果删除一个项目的工作区,同时也会把这个项目的版本库删除掉.这样一来,项目也就不复存在了,因此一个项目仅在一个工作区中维护太危险了,所以此时 ...

  9. WGCNA 简明指南|1. 基因共表达网络构建及模块识别

    WGCNA 简明指南|1. 基因共表达网络构建及模块识别 参考 简介 数据导入.清洗及预处理 数据导入 检查过度缺失值和离群样本 载入临床特征数据 自动构建网络及识别模块 确定合适的软阈值:网络拓扑分 ...

最新文章

  1. 【Android View事件分发机制】关于拦截事件的注意点
  2. 局部变量和成员变量的初始值问题
  3. Mark一下 | 当当优惠码,实付满150减30 | + 荐书
  4. 百里香Spring测试的意见
  5. 如何请教问题且以后都会回答你的方法
  6. Spring 实战-第一章-基本概念
  7. java中常用API、Scanner类、匿名对象、Random类、ArrayList类、对象数组
  8. 用 CrossOver 安装的 Windows 软件在哪
  9. jasperprint java_jasperReport的一些参数
  10. eclipse tomcat cannot create a server using the...
  11. html多个div横向排列居中,多个div垂直居中横向排列的示例分析
  12. 动态相关系数dcc_常相关系数(CCC)和动态条件相关系数(DCC)
  13. linux 设置网卡mac地址命令,linux/Centos下查看和修改网卡Mac地址(ifconfig命令)
  14. word批注怎么删除计算机名字,word批注删除不了,word怎么删除批注栏
  15. Linux 查看服务器几核几G
  16. python画简易动物画法_零: python matplotlib 画图进阶(含完整代码)
  17. 正则表达式判断是否符合USD格
  18. 如何通过 C# 有效的读取 INI 文件?
  19. ST电机库v5.4.4源代码分析(2): 磁链圆限制之计算以及一个小bug
  20. Websocket 接口如何测试

热门文章

  1. Understanding Spring Web Application Architecture: The Classic Way--转载
  2. mina 之IoService(翻译)
  3. 京东小程序上线,剑指何方?
  4. Java Review - 使用Timer时需要注意的事情
  5. jvm性能调优实战 -33每日百亿数据量的实时分析引擎,如何定位和解决频繁Full GC问题
  6. jvm性能调优 - 01类加载机制Review
  7. linux接收网络数据并存存储,linux网络数据包数据结构 Socket Buffer
  8. csv java web 导入_DAY5-step9 使用CSV模块和Pandas在Python中读取和写入CSV文件
  9. 【两分钟带你了解树】数据结构04-树结构的概述
  10. linux bin模式,binlog有哪些工作模式?Linux云计算运维入门