配置

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.MDAdministrator@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 +0800renamecommit 0c80384267000ea9d0b4f89c3f5ba933a25f8ba0
Author: tangsansan <tangge@vip.qq.com>
Date:   Sat Apr 27 10:53:49 2019 +0800modified readme.txtcommit 3624b3a1574ee44cf529511287a61f990f5ae86e
Author: tangsansan <tangge@vip.qq.com>
Date:   Sat Apr 27 10:32:53 2019 +0800Add 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 +0800renamecommit 0c80384267000ea9d0b4f89c3f5ba933a25f8ba0
Author: tangsansan <tangge@vip.qq.com>
Date:   Sat Apr 27 10:53:49 2019 +0800modified 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 +0800Add 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 +0800Add 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 changes1 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.MDno 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.MDno 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三剑客

转载于:https://www.cnblogs.com/tangge/p/10776809.html

git - 1.基础相关推荐

  1. git(一) 基础必备

    git是开源的分布式文件管理系统 为什么说是分布式呢?简单来说就是除了集中式版本库,在各个开发本地也保存一份版本库. 这样带来了很多的优点,近乎所有操作都是本地执行,因此速度相当的快,也可以在离线时进 ...

  2. Git 仓库基础操作

    Git 仓库基础操作 仓库基本管理 初始化一个Git仓库(以/home/gitee/test文件夹为例) $ cd /home/gitee/test #进入git文件夹 $ git init #初始化 ...

  3. Git入门基础-Chivalrous-专题视频课程

    Git入门基础-31767人已学习 课程介绍         Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.如今,越来越多的项目采用 Git 来管理项目开发,可见G ...

  4. 【Git从青铜到王者】第三篇:Git的基础

    系列文章目录 文章目录 系列文章目录 前言 一.获取 Git 存储库 1.在现有目录中初始化存储库 2.克隆现有存储库 二.Git记录每次更新到仓库 1.记录每次更新到仓库 2.检查当前文件状态 3. ...

  5. 【编程实践】Git命令基础教程和代码实例讲解

    Git命令基础教程和代码实例讲解 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git与常用的版本控制工具CVS.Subversion等不同,它采用了分布式版本库的方式. ...

  6. git 使用基础使用(书推荐《git版本管理》)

    #基础使用:git clone url #将远程版本down到本地git log --pretty=oneline #查看所有日志的简略信息git log #查看所有已经更改的日志git diff # ...

  7. git 原理 基础学习

    git 作为仓库管理工具,是每个程序员必须要掌握的技能,而了解其原理对于 git 的学习会有更大的帮助. 本文大纲如下: 1.简述  1.1.git 2.git objects  2.1.读取  2. ...

  8. 关于码云的一些基本知识_快速掌握Git命令基础知识 进阶必备哦

    最近在头条工作之余,遇到Git上面一些问题,趁这次的机会,补一补Git基础知识,纯属个人学习笔记,单纯简单,针对性强,如果对你有帮助那将是对我最大的鼓励,闲话不多说,立即进入正题,和我一起徜徉在Git ...

  9. GIT常用基础命令总结

    三个配置文件 /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置.若使用 git config 时用--system 选项,读写的就是这个文件. ~/.gitconfig 文件:用户 ...

  10. Git的基础知识和常用命令

    源代码的管理从最原始的手工备份到后来的CVS, SVN和GIT的应用,经历了一个漫长的过程.GIT大概是除了linux内核以外, Linus Torvalds对信息技术发展的另一重要贡献啦. GITH ...

最新文章

  1. HTML5中引入JS
  2. 用c语言实现对n个进程采用“短进程优先”算法的进程调度_为什么Linux CFS调度器没有带来惊艳的碾压效果?...
  3. Qt Creator使用帮助模式
  4. debian 升级后mysql_教你在Debian和Ubuntu上升级MySQL
  5. script地下状态栏效果
  6. 公交车刮擦 两名驾驶员丢下乘客下车“开战”
  7. matlab中图例的字怎么改,matlab中legend函数在添加图例时的使用方法
  8. WordPress非组件实现文章阅读次数-不会php还逞强不用组件的我把网站给玩坏了 ( ̄ー ̄〃)
  9. 迪文屏CRC16校验
  10. 百胜中国拟2025年前开1000家Lavazza咖啡店​;别样肉客开始陆续进驻中国山姆会员商店 | 知消...
  11. 机动车合格证手机扫码开票实现方式
  12. html5画布获取位置,html5画布绘制位置不正确(html5 canvas drawing position not correct)
  13. YOLOv5中autoanchor.py的def metric(k)的r = wh[:, None] / k[None]的理解
  14. 官宣|深圳新增6条新建地铁线路和100个站点
  15. QPrintPreviewDialog 打印预览使用实例
  16. css波纹动画在移动端,利用css实现波纹动画效果实例
  17. 面向集团客户云计算运营平台的市场情况及产品发展——之云计算运营平台方案(二)
  18. 谐波平衡 matlab,增量谐波平衡法程序
  19. Composer 忽略版本
  20. 关键点检测-HRNet

热门文章

  1. python求矩阵的秩_python – 计算所有子矩阵有多少个矩阵具有满秩
  2. 罗格斯的计算机科学博士奖学金,罗格斯大学计算机工程博士专业排名全网最新深刻分析...
  3. 混音合成效果器:Cradle The God Particle for Mac
  4. WebBrowser抓图示例——截取网页上的验证码图片
  5. 勒索病毒肆虐的原因分析
  6. 中国人缺乏纯粹信仰 社会充满唯经济主义导向
  7. 请问dede怎么样把会员信息调用到首页,调用会员头像和名字
  8. DataMatrix编码 关于libdmtx的使用
  9. matlab 求拟合直线的斜率_如何用matlab求出图中各条直线的斜率
  10. NLP领域的机器阅读理解方向的数据集总结