Git ~ 回到过去 , 进入未来 ~ Git

概述

我们已经成功的添加了一个 readme.txt文件 , 现在是时候 继续工作了 , 于是 我们开始尝试一下 Git给我们所带来的便利下面修改read.txt 改成如下内容

为了尝试 Git 给我们带来的便利 这是 第一次修改 !

现在运行 git  status 查看 暂存去的状态 .

1 [email protected]:~/learngit$ git status
2 位于分支 master
3 尚未暂存以备提交的变更:
4   (使用 "git add <文件>..." 更新要提交的内容)
5   (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
6
7     修改:     readme.txt
8
9 修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

上面的命令告诉我们 readme.txt 已经被修改了 , 但是没有修改的内容 , 如果想查看修改的内容的话 需要用 git diff 查看修改的内容

[email protected]:~/learngit$ git diff
diff --git a/readme.txt b/readme.txt
index 8fd42a5..fa79f95 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,3 +1 @@
-git is version control systen.
-git is free software
-
+为了尝试 Git 给我们带来的便利 这是 第一次修改 !

git diff 顾名思义就是查看 difference , 显示的格式正式 Unix 通用的 diff 格式 , 可以从上面的命令输出看到我们将 原文内容修改了 .

下面我们就开始将暂存去区的内容 , 转移到工作区 .

[email protected]:~/learngit$ git commit -a

这时候会出来 VIM 编译器 用于输入 这次修改的注释

1 [email protected]:~/learngit$ git status
2 位于分支 master
3 无文件要提交,干净的工作区

版本回退

现在再将文件修改

1 为了尝试 Git 给我们带来的便利 这是 第二次修改 !

然后查看一下 暂存区 状态

[email protected]:~/learngit$ git status
位于分支 master
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)

    修改:     readme.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

像这样 , 你不断的对文件进行修改 , 然后不断的提交修改到版本库里面 , 就好比玩RPG游戏的时候 , 每次通过一个关卡的时候就会自动把游戏状态存盘 , 如果某一关没过去 , 你还可以读取前一关的状态 . 有些时候打Boss  前你会手动存盘 以便万一失败 可以从最近的地方重新开始 . Git也是一样 , 当你觉得文件修改到了一定的程度的时候你可以 " 保存一个快照 "这个快照在Git中被称为 commit . 一但你的文件弄坏了 , 就可以从最近的一个 commit 回复 , 然后继续工作 , 而不是把几个月的工作成果全部丢失 .

现在我们回复一下 readme.txt文件一共有几个版本被提交到了 Git仓库里面

版本 1 :

1 Git is a version control system.
2 Git is free software.

版本 2 :

为了尝试 Git 给我们带来的便利 这是 第一次修改 !

版本 3 :

为了尝试 Git 给我们带来的便利 这是 第二次修改 !

当然了 在实际工作当中 , 我们脑子里面怎么可能记得一个几千行的文件每次都修改了什么内容

这时候就可以使用 版本控制里面的 git log

 1 [email protected]:~/learngit$ git log
 2 commit 2d8b618e4a5ef0cb501d5b4f06fd92651b811c8a
 3 Author: xpower <1376918818@qq.com>
 4 Date:   Sun Aug 21 19:53:34 2016 +0800
 5
 6     这是我进行的第二次修改为了尝试版本退回
 7
 8 commit a57e93105963a9060cd6ce6d3ddf62ec3fbd9397
 9 Author: xpower <1376918818@qq.com>
10 Date:   Sun Aug 21 19:41:13 2016 +0800
11
12     这修改 是我为了测试 而作的
13
14 commit 75cc461de80b076dc9b229442c78034bea4458e8
15 Author: xpower <1376918818@qq.com>
16 Date:   Sun Aug 21 16:11:43 2016 +0800
17
18     wrote a readme file

好了 我们现在将 文件退回 上一个版本

首先 Git 必须知道当前的版本是那个版本 , 在Git 当中 , 用 HEAD 表示当前版本 , 也就是最新提交的.  2d8b618e4a5ef0cb501d5b4f06fd92651b811c8a 上一个版本就是 HEAD^ 上上一个就是HEAD^^ 当然如果要上一百个版本的话 咋办 ? 写一百个 ^ ? 所以我们 写成这样 HEAD~100

现在我们将版本退回到上一个版本 .

[email protected]:~/learngit$ git reset --hard HEAD^
HEAD 现在位于 a57e931 这修改 是我为了测试 而作的

上次我们所写的注释也会一并输出 .  --hard 是干啥的呢 ? 这个后面再说 .

看看 readme.txt 的内容是不是

时间: 2024-10-22 05:17:13

Git ~ 回到过去 , 进入未来 ~ Git的相关文章

Git 回到过去

git add 命令:用于把工作文件放入暂存区 git commit 命令:将暂存区中等待提交的文件放入git仓库 git reset 命令:将git 仓库中的文件还原到暂存区 git checkout 命令:将暂存区中的文件还原到工作目录 reset 命令 使用git log 命令查看提交记录 将git 仓库可视化: 现在三棵树(工作区,暂存区,git仓库)的状态: 回滚快照 快照是提交的版本每个版本称之为一个快照 现在使用reset 命令进行回滚: 执行 git reset HEAD~ 命令

Git大法好——2.Git本地操作指令详解

Git大法好--2.Git本地操作指令详解 引言 上节给大家讲解了有关于Git的一些概念,Git的引入,Git的四个组成部分,Git文件的状态,以及 Git的下载安装:前面也讲过Git和SVN有个明显的差别就是,Git可以不需要网络就可以进行版本 控制,这是因为Git中每个电脑都拥有一个本地的版本库,而远程的仓库仅仅是作为我们交换修改 的一个工具!即使失去这个工具,我们也可以干活,只是交换修改不方便罢了,假如是SVN,远程 服务器挂了-所以,我们使用Git的时候大部分时间都是在进行Git的一些本

【Git项目管理】分布式 Git - 向一个项目贡献

分布式 Git - 向一个项目贡献 向一个项目贡献 描述如何向一个项目贡献的主要困难在于完成贡献有很多不同的方式. 因为 Git 非常灵活,人们可以通过不同的方式来一起工作,所以描述应该如何贡献并不是非常准确 - 每一个项目都有一点儿不同. 影响因素包括活跃贡献者的数量.选择的工作流程.提交权限与可能包含的外部贡献方法. 第一个影响因素是活跃贡献者的数量 - 积极地向这个项目贡献代码的用户数量以及他们的贡献频率. 在许多情况下,你可能会有两三个开发者一天提交几次,对于不活跃的项目可能更少. 对于

GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流(转载)

最近听同事说他都在使用GitHub,GitHub是程序员的社区,在里面可以学到很多书上学不到的东西,所以最近在准备入手这方面的知识去尝试学习,正好碰到这么详细完整的文章,就转载了,希望对自己和大家有帮助. GitHub操作总结 : 总结看不明白就看下面的详细讲解. GitHub操作流程 : 第一次提交 : 方案一 : 本地创建项目根目录, 然后与远程GitHub关联, 之后的操作一样; -- 初始化Git仓库 :git init ; -- 提交改变到缓存 :git commit -m 'desc

git: fatal: Not a git repository (or any of the parent directories): .git

在看书 FlaskWeb开发:基于Python的Web应用开发实战 时,下载完源码后 git clone https://github.com/miguelgrinberg/flasky.git 试着 切换到 提交历史 1a, $ git checkout 1a,出现error: fatal: Not a git repository (or any of the parent directories): .git 这个提示表明现在不在一个git repository目录下,需要切换到flask

git步步进阶---实战git的windows安装和使用

下载和安装: 1,下载git:http://msysgit.github.io/ 2,安装git ,我们选择命令行形式,这样无论在window下还是在linux下 都可以 3,一直next下去就安装完成了 4,git与bitbucket关联,产生一个公钥(类似与seesion,下回我们git 项目时就不用登录了.). 在开始->所有程序->git->Git Bash  打开gitbash. 会显示如下界面. 5,输入 ssh-keygen ,按enter,一直按enter 直到出现下面:

Git初始化之思考git config命令的各参数有何区别

在之前出现的git config 命令中,有的使用 --global 参数,有的使用了 --system 参数,这两个参数有什么区别吗?执行下面的一系列命令后,你就会明白使用不同参数的 git config 命令实际操作的文件了. 执行下面的命令,将打开 /path/to/my/workspace/demo/.git/config 文件进行编辑. $ cd /path/to/my/workspace/demo/ $ git config -e 执行下面的命令,将打开 /home/fuhd/.gi

Git学习笔记2——Git版本库的创建

创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录: $ cd s: $ cd Git_Learing $ pwd s/Git_Learning pwd命令用于显示当前目录.在我的windows上,这个仓库位于s/Git_Learning. 在Windows系统中,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文. 第二步,通过git init命令把这个目录变成Git可以管理的仓库: $ git init Initialized empty Git reposi

git的提交突出--git rebase之abort、continue、skip

(1)应用实例描述 假设在github或者gitoschina上建立了一个项目,默认分支为master分支,远程master分支上c.sh文件内容: 开发者A.B分别将项目拷贝到自己本地进行开发 某一天,开发者B提交c.sh,并且提交成功, 之后,开发者A在本地代码并没有和远程master分支的代码同步的情况下,对本地的c.sh进行了修改,修改后c.sh内容如下: 修改后,开发者A准备将代码提交到远程master分支上. (2)引入问题 假设开发者A提交过程如下: $ git add c.sh

【Git】01、Git基础

1.Git 工具分类 命令行: Bash.Cmd.Power Shell,等 GUI: Git GUI.Github Desktop,等 IDE 集成: Visual Studio.Eclipse.IntelliJ IDE,等 2.Git工具下载及安装 在使用Git前我们需要先安装 Git.Git 目前支持 Linux/Unix.Solaris.Mac和 Windows 平台上运行. Git 各平台安装包下载地址为:http://git-scm.com/downloads 3.设置Git Bas