Git:Git Handbook

1、基本概念

在 Git 的世界里,有三个地方:工作目录暂存区Git仓库

  • 工作目录(working directory):你看得见的、就是平时使用的文件夹/目录
  • 暂存区(staging area):保存了下次将提交的文件列表信息。
  • Git仓库(Git directory):保存版本数据的地方。这是最重要的。

状态

对应地,工作目录中的文件就有三种状态:已修改、已暂存、已提交

  • 已修改(modified):工作目录下的文件每次修改后,就处于已修改状态;
  • 和已暂存(staged):把修改后文件提交到暂存区后的状态,反之称 unstaged;
  • 已提交(committed):把修改提交到版本数据库后的状态。

另外要注意的一点是,以上三种状态均建立在文件已被 Git 追踪的前提下。在工作目录新建一个文件,此时文件的状态为未追踪(untracked)。
删除被追踪的文件后,可以查看到的状态是已删除(deleted)

流程

基本的 Git 工作流程如下:

  1. 在工作目录中修改文件;
  2. 暂存文件,将文件的快照放入暂存区域;
  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

2、创建

创建仓库

选择一个合适的地方,创建一个空目录,或者使用命令:

$ mkdir learngit
$ cd learngit
$ pwd

pwd 命令只是用于显示当前目录。

初始化仓库

把这个目录变成 Git 可以管理的仓库:

$ git init

可以发现当前目录下多了一个 .git 的目录,这个目录是 Git 来跟踪管理版本库的,不要手动修改/删除这个目录里面的文件。

ls -a 命令就可以列出包括隐藏文件在内的文件。

3、暂存

添加修改到暂存区

暂存区就好像一个码头,先把货物运到这里,再往目的地(版本库)运输。
现在编写一个 README.md 文件,放到 learngit 目录/子目录下,或者使用命令新建:

$ touch README.md

用编辑器打开添加点内容,或在终端中编辑:

$nano README.md

把修改的文件暂存,用于提交:

$ git add README.md

可以一次性添加所有同类型文件的修改:

git add '*.md'

也可以一次性添加所有文件的修改:

$ git add .

4、提交

向版本库提交修改

每次向版本库提交修改最好添加提交信息,first commit 就是一次提交的信息。

$ git commit -m "first commit"

5、查看

查看文件状态

显示工作目录下文件所处状态,这时经常用到的命令:

$ git status

查看文件内容

显示工作区文件与上次提交版本的内容有什么不同。

$ git diff README.md

查看提交记录

显示从最近到最远的提交日志,可查看到每次提交的 40 位 commit id(版本号):

$ git log

查看命令记录

Git 提供了一个命令用来查看你每一次命令的记录:

$ git reflog

重返未来:假如你回退到某个版本,这个版本之后的修改都会被抛弃(其实这很有道理),再想恢复到这个版本之后的版本,这个命令可以查看到所需的 未来 版本号。

6、撤销、回退

撤消文件修改的暂存。可以把添加到暂存区的修改撤销掉(unstage),不改变工作区。

$ git reset HEAD <file>

撤消对工作目录文件的修改。此命令会使用暂存区中的内容替换掉你的工作目录中的文件。(即撤销未提交的修改)

$ git checkout -- <file>

丢弃在本地的所有改动与提交

$ git reset --hard HEAD

回退到某个版本,并抛弃该版本之后的修改

$ git reset --hard <commit id>

commit id 可以换成:

  • HEAD^ 上一个版本,
  • HEAD^^ 上上一个版本
  • HEAD~100 上100个版本

注意:Git 使用 HEAD 指向当前版本。

7、远程仓库

Git 在本地就已经可以实现版本管理的功能,远程仓库有别于存储在你硬盘里的版本库,它存储在网络服务器中,它的发明是为了 Git 的协作和防止本地数据的丢失。

远端服务器上的仓库,克隆一份来本地:

$ git clone username@host:/path/to/repository

其实 clone 命令也可以拷贝本地的仓库,但最常用的还是从远程服务器拷贝。

推送

把本地的修改提交到远程仓库的操作叫做推送(push)。要推送的前提是,必须给当前工作目录指定远程仓库的地址。
使用命令连接一个远程仓库:

$ git remote add origin <server>

这里的 origin 可以是其它你想到的名字,它只不过是用来标识远程仓库的别名而已。但是最常用这个一看就了解的名字。使用 $ git remote 命令可以列出已连接的远程仓库的别名,加 -v 参数可以查看具体地址:$ git remote -v

推送命令:

$ git push -u origin master

把本地分支 master 推送到名为 origin 的远程仓库的。可以把 master 换成你想要推送的任何分支。
注:-u 参数为第一次提交使用,作用是把本地的 master 分支和远程的 master 分支关联起来,简化命令,之后提交不需要这个参数。

更多关于远程仓库

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • Git是目前最流行的版本管理系统,也是最先进的分布式版本控制系统(distributed version cont...
    pro648阅读 5,672评论 1 17
  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,647评论 4 54
  • 一 我有两位亲人的生命,永远定格在了2017年的3月14号。当天下午下班回到家,看到哥哥的留言:外婆去世了。 我心...
    冬日霞光阅读 268评论 1 0
  • 文/熠歆 每个人总有心情乱如麻的时候,怎么理都乱……会把生活过得很慵懒,甚至是自己都鄙视的状态。 心情的起伏不平,...
    熠歆阅读 475评论 0 0
  • 下午,一儿子同学的妈妈发了一篇他儿子的周记给我看。 大意是半期考考完了,但他担心语文语基不过关,到时被...
    sunflower80阅读 197评论 0 0