Git学习01 --git add, git commit , git log ,git status, git reset --hard, head
Git官方提供的快速入门教程:https://try.github.io/levels/1/challenges/1
特点:Git极其强大的分支管理;分布式版本
集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。集中式版本控制系统最大的毛病就是必须联网才能工作。
使用Git
1.创建版本库
首先,选择一个合适的地方,创建一个空目录,通过git init命令把这个目录变成Git可以管理的仓库
zhangqulideMacBook-Air:~ zhangquli$ mkdir git_test
zhangqulideMacBook-Air:~ zhangquli$ cd git_test
zhangqulideMacBook-Air:git_test zhangquli$ git init
Initialized empty Git repository in /Users/zhangquli/git_test/.git/
2。把文件添加到版本库
所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。
把一个文件放到Git仓库只需要两步。
第一步,用命令git add告诉Git,把文件添加到仓库
第二步,用命令git commit告诉Git,把文件提交到仓库:
zhangqulideMacBook-Air:git_test zhangquli$ git add a.txt
zhangqulideMacBook-Air:git_test zhangquli$ git commit a.txt
[master (root-commit) 0c9192c] add a file a.txt #可以使用git commit -m "add a file a.txt“ 添加描述
3.修改文件
修改文件后,运行git status命令看看结果:
zhangqulideMacBook-Air:git_test zhangquli$ vi a.txt
zhangqulideMacBook-Air:git_test zhangquli$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: a.txt
#
no changes added to commit (use "git add" and/or "git commit -a")#a.txt被修改过了,但还没有准备提交的修改
看看具体修改了什么内容,需要用git diff这个命令看看
zhangqulideMacBook-Air:git_test zhangquli$ git diff a.txt
diff --git a/a.txt b/a.txt
index de891d0..14078f4 100644
--- a/a.txt
+++ b/a.txt
@@ -1 +1,2 @@
heiheiehi
+changed
知道了对readme.txt作了什么修改后,再把它提交到仓库就放心多了,提交修改和提交新文件是一样的两步 git add git commit
版本回退
版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用git log命令查看:
zhangqulideMacBook-Air:git_test zhangquli$ git log
commit 8ed1c1a1d5666a98d2464787177f61e2a23126a6 #版本号
Author: zqlmmd <zhangquli@zhangqulideMacBook-Air.local>
Date: Sun May 29 23:46:24 2016 +0800 add a line #commit的描述 commit 0c9192cfde234fc37b351f959cc791ebb1c3f68a
Author: zqlmmd <zhangquli@zhangqulideMacBook-Air.local>
Date: Sun May 29 23:29:35 2016 +0800 add a file a.txt
我们要把当前版本回退到上一个版本,首先要知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。然后使用git reset命令 --hard参数
zhangqulideMacBook-Air:git_test zhangquli$ git reset --hard HEAD^
HEAD is now at 0c9192c add a file a.txt zhangqulideMacBook-Air:git_test zhangquli$ git log
commit 0c9192cfde234fc37b351f959cc791ebb1c3f68a
Author: zqlmmd <zhangquli@zhangqulideMacBook-Air.local>
Date: Sun May 29 23:29:35 2016 +0800 add a file a.txt
再回去
$ git reset --hard 3628164
HEAD is now at 3628164 append GPL
Git学习01 --git add, git commit , git log ,git status, git reset --hard, head的更多相关文章
- Git 学习01
一.下载并安装git bash 双击打开出现命令窗口 创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录: cd F: mkdir learngit pwd F/learngit 显示当 ...
- Git学习总结(9)——如何构建你自己的 Git 服务器
现在我们将开始学习如何构建一个Git服务器,如何在具体的事件中写一个针对特定的触发操作的自定义Git(例如通告),如何发布你的代码到一个网站. 目前为止,用户对Git的焦点主要在Git的使用上.这篇文 ...
- 八、git学习之——忽略特殊文件、配置别名、搭建git服务器
原文来自 一.忽略特殊文件 有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示Untracked files . ...
- git学习笔记04-将本地仓库添加到GitHub远程仓库-git比svn先进的地方
第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步. 如果没有,打开Shel ...
- git学习笔记:一台电脑上配置两个git账户
如何在一台电脑上配置两个git账户,现在云端仓库很多,有开源中国的 gitee.com 微软的 github.com 还有 gitlab.com 和 bitbucket.org 等等,下面是具体步骤 ...
- Git以及github的使用方法(二)创建仓库,git add添加到“暂储区”,git commit添加到“本地仓库”
什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或 ...
- git 学习使用总结三(远程仓库操作)
这篇文章仅供自己以后翻阅加深记忆,要系统的学习 git 教程(中文版),请移步到 liaoxuefeng.com 学习 git 教程部分. pull, fetch, clone, push, chec ...
- Git学习(一):初始化仓库、添加文件、版本回退
目录 Git学习(一):初始化.添加文件.版本回退 初始化一个仓库 添加文件到Git仓库 版本回退 Git学习(一):初始化.添加文件.版本回退 初始化一个仓库 本文使用的命令行工具为cmder,部分 ...
- Git学习记录 力做全网最强入门教程
目录 Git学习记录 力做全网最强入门教程 什么是GitHub? 什么是Git? Git的配置 Git的安装(只介绍windos操作系统下) Git的配置 至此我们的入门教程到此结束,更新中级教程要等 ...
随机推荐
- DIRECTORY_SEPARATOR的作用
IRECTORY_SEPARATOR是php的内部常量,用于显示系统分隔符的命令,不需要任何定义与包含即可直接使用. 在windows下路径分隔符是/(当然/在部分系统上也是可以正常运行的),在lin ...
- real server 的一个启动脚本例子
real server 的vip 启动脚本 #!/bin/bash #chkconfig: #description: real server init script VIP=192.168.80.8 ...
- linux下mysql连接jar包的位置在哪里?
linux下连接mysql数据库,肯定也会用到驱动jar包. 该jar包应该被置于jdk安装路径下jre文件夹lib目录的ext文件夹下.例如我的JDK安装路径为/usr/java/jdk1.6.0_ ...
- 给兄弟说下如何处理Debian下常见的apache2的几个问题
这段时间总是有兄弟问到在linux下的apache2配置,其实很简单,这里统一答复下. 一.安装 当然是apt-get install 最简单了, 顺便把php5和GD什么的一起装上吧,基本上不用配置 ...
- 十一、外观(Facade)模式--结构模式(Structural Pattern)
外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式.门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的门面(Facade)对象进行. 门面模式提供一个高层次 ...
- TD数量不确定时如何让其宽度平均分布
D数量不确定时如何让其宽度平均分布?答案很简单,我们只要在table里面加上一下代码就可以实现. table { width: 100%; table-layout: fixed; }
- SSIS 系列 - 在 SSIS 中使用 Multicast Task 将数据源数据同时写入多个目标表,备份数据表,以及写入Audit 信息
转自http://www.cnblogs.com/biwork/p/3328838.html 在 SSIS Data Flow 中有一个 Multicast 组件,它的作用和 Merge, Merge ...
- Implement Queue using Stacks 解答
Question Implement the following operations of a queue using stacks. push(x) -- Push element x to th ...
- iOS开发-CGAffineTransformMakeRotation改变了中心解决的方法
坑爹的. 为了这个问题折腾了2个小时. 恼.. 今天在写一个时钟demo的时候, 时针的旋转用到了CGAffineTransformMakeRotation, 按理说. 图像的旋转是以图像本身的中心 ...
- 字符串最小表示法 O(n)算法
网上看了这篇文章后还是感觉有些地方讲的没有详细的证明所以添加了一点 红色字是博主写的 求字符串的循环最小表示: 上面说的两个字符串同构的,并没有直接先求出Min(s),而是通过指针移动,当某次匹配串长 ...