配置

C:\Users\Administrator
λ git config --global user.name 'tangsansan' C:\Users\Administrator
λ git config --global user.email 'tangge@vip.qq.com'

config 三个作用域

建设仓库

$ git init aurelia_learning

$ cd aurelia_learning

$ dir -all
total 8
drwxr-xr-x 1 Administrator 197121 0 四月 26 22:23 .
drwxr-xr-x 1 Administrator 197121 0 四月 26 22:23 ..
drwxr-xr-x 1 Administrator 197121 0 四月 26 22:23 .git ## 这里是.git文件夹 ## 为了区别local和global,在这里设置
$ git config --local user.name 'tangge' $ git config --local --list
user.name=tangge
... $ git config --global --list
user.name='tangsansan'
user.email='tangge@vip.qq.com'
...

命令

创建仓库:git init

状态:git status

添加:git add

git add -A 提交所有变化

git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)

git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

日志:git log

提交: git commit -m'Add aurelia files'

删除:git rm

查看工作区和版本库里面最新版本的区别:git diff HEAD -- readme.txt

撤销暂存区:git reset HEAD file

撤销修改: git checkout -- file ,这里区别于git checkout 是切换分支

查看内容:cat <file>

重命名

$ mv readme.txt readme.MD



这里需要

Administrator@Y430P-TG MINGW64 /e/10.【Git】/git_learning (master)
$ git add readme.MD Administrator@Y430P-TG MINGW64 /e/10.【Git】/git_learning (master)
$ git rm readme.txt
rm 'readme.txt'

这时候可以commit提交了

日志

当前所有详细的log

$ git log
commit 9ef0016f28654fb5bea7165b013e439c7be7d2c0 (HEAD -> master)
Author: tangsansan <tangge@vip.qq.com>
Date: Sat Apr 27 11:32:41 2019 +0800 rename commit 0c80384267000ea9d0b4f89c3f5ba933a25f8ba0
Author: tangsansan <tangge@vip.qq.com>
Date: Sat Apr 27 10:53:49 2019 +0800 modified readme.txt commit 3624b3a1574ee44cf529511287a61f990f5ae86e
Author: tangsansan <tangge@vip.qq.com>
Date: Sat Apr 27 10:32:53 2019 +0800 Add readme.txt

只看日志名

$ git log --oneline
9ef0016 (HEAD -> master) rename
0c80384 modified readme.txt
3624b3a Add readme.txt

查看最近的2个

$ git log -n2
commit 9ef0016f28654fb5bea7165b013e439c7be7d2c0 (HEAD -> master)
Author: tangsansan <tangge@vip.qq.com>
Date: Sat Apr 27 11:32:41 2019 +0800 rename commit 0c80384267000ea9d0b4f89c3f5ba933a25f8ba0
Author: tangsansan <tangge@vip.qq.com>
Date: Sat Apr 27 10:53:49 2019 +0800 modified readme.txt

所有分支日志,图形化

$ git log --all --graph

Commit、tree和blob三个对象之间的关系

# 1.查看日志
$ git log
...
# 省略
... commit 3624b3a1574ee44cf529511287a61f990f5ae86e
Author: tangsansan <tangge@vip.qq.com>
Date: Sat Apr 27 10:32:53 2019 +0800 Add readme.txt # 2.查看commit
$ git cat-file -p 3624b3a1574e
tree 10024464a9c1e1ddf17b6c144d1d99a62042d1fd
author tangsansan <tangge@vip.qq.com> 1556332373 +0800
committer tangsansan <tangge@vip.qq.com> 1556332373 +0800 Add readme.txt # 3.查看 tree下的blob 10024464a9c1e1ddf17b6c144d1d99a62042d1fd
$ git cat-file -p 10024464a9c1e1ddf
100644 blob 013b5bc866a4c08e10047dbd1e83c2a3a83e0f40 readme.txt # 4.再看blob内容
$ git cat-file -p 013b5bc866a4c08e1004
Git is a distributed version control system.
Git is free software.

管理修改

第一步,对readme.md做一个修改,比如加一行内容:

$ cat readme.MD
Git is a distributed version control system.
Git is free software.
Add the text
Git tracks changes.

添加

$ git add readme.MD
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage) modified: readme.MD

然后,再修改readme.md:

Git is a distributed version control system.
Git is free software.
Add the text
Git tracks changes of files.

提交

$ git commit -m "git tracks changes"
[master bd38a44] git tracks changes
1 file changed, 1 insertion(+)

查看状态

$ 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: readme.MD no changes added to commit (use "git add" and/or "git commit -a")

还是报错!!!

第一次修改 -> git add -> 第二次修改 -> git commit

你看,我们前面讲了,Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

提交后,用git diff HEAD -- readme.MD命令可以查看工作区和版本库里面最新版本的区别:

$ git diff HEAD -- readme.MD
warning: LF will be replaced by CRLF in readme.MD.
The file will have its original line endings in your working directory
diff --git a/readme.MD b/readme.MD
index f0abcb0..0157864 100644
--- a/readme.MD
+++ b/readme.MD
@@ -1,4 +1,4 @@
Git is a distributed version control system.
Git is free software.
Add the text
-Git tracks changes.
+Git tracks changes of files.



那怎么提交第二次修改呢?你可以继续git add再git commit,也可以别着急提交第一次修改,先git add第二次修改,再git commit,就相当于把两次修改合并后一块提交了:

第一次修改 -> git add -> 第二次修改 -> git add -> git commit

好,现在,把第二次修改提交了,然后开始小结。

撤销修改

修改在工作区未commit

你添加了1行

$ cat readme.md
Git is a distributed version control system.
Git is free software.
Add the text
Git tracks changes of files.
My stupid boss still prefers SVN.

在你准备提交前,一杯咖啡起了作用,你猛然发现了“stupid boss”可能会让你丢掉这个月的奖金!

你可以发现,Git会告诉你,git checkout -- file可以丢弃工作区的修改:

$ git checkout -- readme.MD
$ git status
On branch master
nothing to commit, working tree clean

把readme.MD文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.MD自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.MD已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commitgit add时的状态。

git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。

修改在暂存区,未commit

下面看第2种情况,已经提交到暂存区。

$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage) modified: readme.MD

Git同样告诉我们,用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:

$ git reset HEAD reademe.MD
Unstaged changes after reset:
M readme.MD $ 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: readme.MD no changes added to commit (use "git add" and/or "git commit -a")

现在已经到工作区了,还记得如何丢弃工作区的修改吗?

$ git checkout -- readme.MD

$ git status
On branch master
nothing to commit, working tree clean

OK了。

分离头指针 detached HEAD

变更没有基于 branch。

参考:

Git教程 - 廖雪峰的官方网站

极客时间:玩转Git三剑客

git - 1.基础的更多相关文章

  1. git学习基础教程

    分享一个git学习基础教程 http://pan.baidu.com/s/1o6ugkGE 具体在网盘里面的内容..需要的学习可以直接下.

  2. Git入门基础详情教程

    前言 写了一篇文章<一篇文章了解Github和Git教程>还觉得不错,继续写了<为了Github默默付出,我想了解你>,那么继续写Git 基础知识. Git 官网:https: ...

  3. Git使用基础篇

    Git使用基础篇 前言 Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体验到原来一个版 本控制工具可以对开发产生如此之多 ...

  4. Git使用基础篇(zz)

    Git使用基础篇 您的评价:          收藏该经验       Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体 ...

  5. Mac下Git的基础操作

    目前最火的版本控制软件是Git了吧,今天简单梳理一下Mac下Git的基础操作~~ 一.什么是Git Git是一个分布式代码管理工具,用于敏捷的处理或大或小的项目,类似的工具还有svn. 基于Git的快 ...

  6. Mac 下 Git 的基础命令行操作

    Mac 下 Git 的基础命令行操作 sudo apt-get install git-core //安装Git 用户配置 git config --global user.name "Yo ...

  7. Git及基础命令的介绍以及如何向本地仓库添加文件

    在介绍Git的使用之前,我们得要先来了解一下Git.那么什么是Git? Git是一个版本管理工具(VCS),具有以下的特点: 分布式版本控制: 多个开发人员协调工作: 有效监听谁做的修改: 本地及远程 ...

  8. Git Bash基础使用(初始化)

    前提是在码云上已经新建一个空的项目,可参考:https://www.cnblogs.com/babysbreath/p/9170455.html 1.新建一个目录,存放下载下来的项目,我在D盘新建了一 ...

  9. git的基础使用

    GIT """ 什么是git:版本控制器 - 控制的对象是开发的项目代码 代码开发时间轴:需求1 > 版本库1 > 需求2 > 版本库2 > 版本 ...

  10. Git 实用基础(配置,建库,提交,推送 GitHub)

    Git 实用基础(配置,建库,提交,推送 GitHub) SVN ? Git ? 目前市面上主流的版本控制系统就是 SVN 和 Git . 两者的区别简单通俗地说就是,版本数据是否有在本地. 如果觉得 ...

随机推荐

  1. 洛谷 P4714 「数学」约数个数和 解题报告

    P4714 「数学」约数个数和 题意(假):每个数向自己的约数连边,给出\(n,k(\le 10^{18})\),询问\(n\)的约数形成的图中以\(n\)为起点长为\(k\)的链有多少条(注意每个点 ...

  2. [网络流]BZOJ4657 最小割约束

    题面: DescriptionNick最近在玩一款很好玩的游戏,游戏规则是这样的:有一个n*m的地图,地图上的每一个位置要么是空地,要么是炮塔,要么是一些BETA狗,Nick需要操纵炮塔攻击BETA狗 ...

  3. ORACLE创建表空间 新建用户 授权

    --建表空间create tablespace <用户> datafile 'D:\oradatadev\<用户>.dbf' size 200mautoextend on ne ...

  4. 关于std::cin阻塞事件循环以及控制台命令输入功能的方案;

    如果将std::cin建立在主线程,将阻塞主线程的所有事件循环,因而要保证事件循环不受影响,需要将std::cin放到 子线程中.同时,如果要实现能够强制终止std::cin阻塞, 可以通过强制终止线 ...

  5. 分布式协调服务Zookeeper集群搭建

    分布式协调服务Zookeeper集群搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装jdk环境 1>.操作环境 [root@node101.yinzhengjie ...

  6. 076、创建Rex-Ray volume (2019-04-23 周二)

    参考https://www.cnblogs.com/CloudMan6/p/7624556.html   前面我们安装部署了 Rex-Ray ,并且成功配置 Virtualbox backend ,今 ...

  7. 错误:org.springframework.jdbc.support.SQLErrorCodesFactory - SQLErrorCodes loaded

    使用spring+mybatis整合时报错:org.springframework.jdbc.support.SQLErrorCodesFactory - SQLErrorCodes loaded 错 ...

  8. git下载/上传文件提示:git did not exit cleanly

    问题:git操作下载/上传文件,提示信息如下 TortoiseGit-git did not exit cleanly (exit code 1) TortoiseGit-git did not ex ...

  9. IDEA+MySQL实现登录注册的注册验证时出现 Cannot resolve query parameter '2'

    问题描述: 在IDEA+MySQL+Tomcat 实现登录注册JSP的注册信息INSERT验证时出现 Cannot resolve query parameter '2' 贴上创建链接的代码: if( ...

  10. C++ 常见面试题目

    const作用 (1)可以定义const常量,具有不可变性. (2)便于进行类型检查.(而宏不会进行类型检查). (3)可以保护被修饰的东西,防止意外的修改. (4) 可以节省空间. static作用 ...