git - 简明指南
助你入门 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 - 简明指南相关推荐
- git简明教程:基本操作命令
**配置Git** #首先在本地创建ssh key: ssh-keygen -t rsa -C "your_email@youremail.com" #为了验证是否成功,在git ...
- git 简易指南+常用命令
git 简易指南 git 常用命令 ----------------------------------------------------------- ...
- 手把手教你入门Git --- Git使用指南(Linux)
手把手教你入门Git - Git使用指南(Linux) 系统:ubuntu 18.04 LTS 本文所有git命令操作实验具有连续性,git小白完全可以从头到尾跟着本文所有给出的命令走一遍,就会对gi ...
- 史上最浅显易懂的Git学习指南
Git是最流行的版本控制系统,且是分布式的,不像SVN的集中式管理.今天在网上搜了下Git,找到了一个很好的Git学习指南,竟然一口气把它全部刷了一遍,算是简单入门了.教程写的很好,浅显易懂,配有实例 ...
- WGCNA 简明指南|2. 模块与性状关联分析并识别重要基因
WGCNA 简明指南|2. 模块与性状关联分析并识别重要基因 WGCNA 系列 WGCNA 简明指南|1. 基因共表达网络构建及模块识别 WGCNA 系列 参考 关联模块与临床特征 量化module- ...
- 廖雪峰Git简明教程整理
廖雪峰Git简明教程 声明:本教程完全搬运自廖雪峰老师的个人网站,仅限于学习使用.所有版权归廖雪峰老师所有.整理人为Megatron,如果侵权请联系本人zhangwz93@foxmail.com删除. ...
- git使用指南_git设计师指南
git使用指南 There have been so many debates on whether a designer should learn how to code - this is not ...
- git权威指南总结五:git克隆
为什么需要克隆? git的版本库目录和工作区是在一起的,因此如果删除一个项目的工作区,同时也会把这个项目的版本库删除掉.这样一来,项目也就不复存在了,因此一个项目仅在一个工作区中维护太危险了,所以此时 ...
- WGCNA 简明指南|1. 基因共表达网络构建及模块识别
WGCNA 简明指南|1. 基因共表达网络构建及模块识别 参考 简介 数据导入.清洗及预处理 数据导入 检查过度缺失值和离群样本 载入临床特征数据 自动构建网络及识别模块 确定合适的软阈值:网络拓扑分 ...
最新文章
- 【Android View事件分发机制】关于拦截事件的注意点
- 局部变量和成员变量的初始值问题
- Mark一下 | 当当优惠码,实付满150减30 | + 荐书
- 百里香Spring测试的意见
- 如何请教问题且以后都会回答你的方法
- Spring 实战-第一章-基本概念
- java中常用API、Scanner类、匿名对象、Random类、ArrayList类、对象数组
- 用 CrossOver 安装的 Windows 软件在哪
- jasperprint java_jasperReport的一些参数
- eclipse tomcat cannot create a server using the...
- html多个div横向排列居中,多个div垂直居中横向排列的示例分析
- 动态相关系数dcc_常相关系数(CCC)和动态条件相关系数(DCC)
- linux 设置网卡mac地址命令,linux/Centos下查看和修改网卡Mac地址(ifconfig命令)
- word批注怎么删除计算机名字,word批注删除不了,word怎么删除批注栏
- Linux 查看服务器几核几G
- python画简易动物画法_零: python matplotlib 画图进阶(含完整代码)
- 正则表达式判断是否符合USD格
- 如何通过 C# 有效的读取 INI 文件?
- ST电机库v5.4.4源代码分析(2): 磁链圆限制之计算以及一个小bug
- Websocket 接口如何测试
热门文章
- Understanding Spring Web Application Architecture: The Classic Way--转载
- mina 之IoService(翻译)
- 京东小程序上线,剑指何方?
- Java Review - 使用Timer时需要注意的事情
- jvm性能调优实战 -33每日百亿数据量的实时分析引擎,如何定位和解决频繁Full GC问题
- jvm性能调优 - 01类加载机制Review
- linux接收网络数据并存存储,linux网络数据包数据结构 Socket Buffer
- csv java web 导入_DAY5-step9 使用CSV模块和Pandas在Python中读取和写入CSV文件
- 【两分钟带你了解树】数据结构04-树结构的概述
- linux bin模式,binlog有哪些工作模式?Linux云计算运维入门