学习网址

安装方法包含Linux\Mac Os X\Windows的安装,安装完成之后设置个人信息:

$ git config --global user.name "name"
$ git config --global user.email "email@***.com"

注意:git config 命令中参数 --global 表示在当前机器上所有git仓库都使用上边的配置。

一、创建版本库

版本库(仓库),英文名repository,库里的文件修改、删除都能被Git跟踪。

1 创建一个版本库,首先选择一个合适的地方,创建一个空目录:

Pwd 命令用于显示当前目录。在我的Mac上,这个仓库位于   /Users/Administrator.TPBXKCC9K1NU6KY/learngit

!!!如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。

2 通过 git init 命令把这个目录变成Git可以管理的仓库:

瞬间仓库就建好了,这是一个空仓库(empty Git repository)。当前目录下有一个.git目录,这个目录是Git来跟踪管理版本库。

如果没有看到.git目录,是因为这个目录默认是隐藏的,用ls –ah命令可以看见。

3 把文件添加到版本库

注意:所有的版本控制系统,只能跟踪文本文件的改动,如TXT文件,网页多有程序代码等。版本控制系统可以明确告诉每次的改动。但是视频和图片这些二进制文件,虽然也能由版本控制系统管理,但是无法跟踪文件的变化。Microsoft的Word格式是二进制格式,因此版本控制系统是无法跟踪Word文件改动。

使用Windows的要注意:不要使用Windows自带的记事本编辑任何文本文件。会出现错误。下载Notepad++代替记事本,把默认编码设置为UTF-8 without BOM。

现在开始添加一个readme.txt文件。这个文件必须要放在learngit目录下,子目录下也可以。

第一步,用命令 git add告诉Git,把文件添加到仓库

执行这个命令,没有任何显示说明添加成功。

第二步,用命令git commit 告诉Git,把文件提交到仓库。

解释一下git commit 命令,-m 后面输入的是本次提交的说明,可以输入任何内容,最好写标注信息,方便从历史记录中找到修改记录。

命令执行成功后会告诉你,一个文件别改动,插入两行内容(readme.txt有两行内容)。

因为commit可以一次提交很多文件,可以多次add不同的文件。所以需要add,commit两部提交文件:

4修改仓库中文件(readme.txt)的内容。

运行git status ,该命令可以让我们时刻掌握仓库当前的状态。

git diff 能够知道之前修改的内容。红色文字是修改之前的,绿色文字是修改之后的。

提交修改和提交新文件是一样的两步:

第一步,git add :  $ git add readme.txt。 没有任何输出

第二部,执行之前,先运行git status查看当前仓库状态:

git status告诉我们,将要被提交的修改包括readme.txt,然后就可以放心的提交了:

再次查看仓库状态:

二、版本回退

版本库中的文件不断的被修改。当文件错乱或误删等其他状况发生时,还可以从最近的一个commit恢复。

我们可以用git log命令查看历史记录,显示的是从近到远的提交日志:

如果输出信息太多,看的眼花缭乱,可以试试加 –pretty=oneline 参数:

提示:前边一大串黄色字体是commit id (版本号) ,和SVN不一样,git不是使用1,2,3…递增的数字,是SHA1计算出来的一个强大的数字,用十六进制表示。因为git是分布的版本控制系统,后面要研究多人在同一版本库里工作,如果都用1,2,3作为版本号,就会有冲突。每提交一个新版本,git会把它们自动串成一条时间线。

Git中HEAD表示当前版本,上一个是HEAD^,上上一个版本HEAD^^,往上100个携程HEAD~100.

回退到上一个版本,使用git reset:

$ cat readme.txt 查看当前版本内容(确定是上一个版本的内容):

此时查看版本记录,change it’s nice 已经没有了:

回到未来的某个版本,$  git reset –hard 版本号,版本号写前几位就可以:

当忘记想要回退到的版本号,可以使用git reflog

三、工作区和暂存区

工作区(Working Directory)

就是在电脑中能看到的目录,如 learngit 文件夹就是一个工作区

版本库(Repository)

工作区中有一个隐藏目录 .git , 这个不是工作区,是Git的版本库。

版本库中有很多东西,其中state(或index),还有Git为我们自动创建第一个分支master,以及指向master的一个指针HEAD

上传文件:

第一步,git add ,就是把文件修改添加到暂存区;

第二步,git commit,实际就是把暂存区的内容提交到当前分支。

只有将修改的文本文件 git add 加到暂存区stage中,才能使用git commit 添加到master中

四、撤销修改

1、 git checkout -- file 可以丢弃工作区的修改

上述命令表示把readme.txt文件在工作区的修改全部撤销,这里有2种情况:

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

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

撤销修改就是回到最近一次git commit 或 git add 时的状态

2、 git reset HEAD file 可以把暂存区的修改撤销掉,重新放回工作区

五、删除文件

在Git中,删除也是一个修改操作。

一般情况,通常直接在文件管理器中把没用的文件删了,或者使用 rm file 命令删除

现在,有两个选择:

一个是,确实要从版本库中删除该文件,就用 git rm 删除,并且 git commit -m "xxx"

此时,文件就从版本库中删除了。

另一个是删错了,因为版本库中还有,所以可以把误删的文件恢复到最新版本中:

$  git  checkout  --file

转载于:https://www.cnblogs.com/zmr2520/p/5953768.html

Git使用学习笔记 (一)相关推荐

  1. 《Got Git》学习笔记(一)

    <Got Git>学习笔记(一) 最近想对自己的代码和文档进行归档整理,需要一个版本控制系统来进行 处理.自然而然的想到了目前流行的GitHub. GitHub,是一个面向开源及私有软件项 ...

  2. git的学习笔记(二):git远程操作

    git的学习笔记(一):git本地操作 1.创建ssh key ssh-keygen -t rsa -C "your_email@example.com" 执行命令后会在用户的家目 ...

  3. Git 个人学习笔记及心得

    作为程序员如果你还不知道 Git 和 GitHub,说不过去吧,赶紧来学习一波. 一.认识GitHub Git 是个版本控制系统,说明白点就是进行代码的各种管理,比如你写错代码进行回滚啊.追寻 Bug ...

  4. Learn Git Branching 学习笔记(移动提交记录篇)

    目录 一.移动提交记录篇 1.Git Cherry-pick 2.交互式rebase Git用法高级篇在上一篇文章中Learn Git Branching 学习笔记(高级篇)_流年--by gone的 ...

  5. Learn Git Branching 学习笔记(高级话题篇)

    目录 一.高级话题篇 1.多分支rebase 2.选择父提交记录 3.纠缠不清的分支 Git的一些技术.技巧与贴士集合在上一篇文章中 Learn Git Branching 学习笔记(Git 技术.技 ...

  6. git/github学习笔记

    原文地址为: git/github学习笔记 请移步到:http://www.testclass.net/git/ ----- 我重新对git/github教程进行了编排和整理. 1. git 版本控制 ...

  7. git serialtool_Git学习笔记---协作的一般流程

    一般的操作流程 1.pull 王小坤与另一个同事张大炮一起开发一个项目,张大炮昨天修改了数据库读写的api,优化了执行速度,并把read()函数改名成了Read(),下午下班之前把这些代码push到服 ...

  8. 廖雪峰Git教程学习笔记

    廖雪峰git简单教程学习笔记 教程地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b ...

  9. Git入门学习笔记(10分钟速通)

    一.Git概述 官网翻译: Git 是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型项目到大型项目的所有内容. Git易于学习, 体积小,性能快如闪电.它超越了 Subversion.C ...

  10. Git工作流学习笔记

    Git工作流指南 分布式版本控制系统 观看笔记:https://www.bilibili.com/video/BV1dW411U7ER?p=1 老师笔记: http://www.funtl.com/z ...

最新文章

  1. Fabric源码分析-共识模块
  2. c++ primer 5th,习题13.3 答案是不是错了?(未解决)
  3. 线程的属性 —— 分离的状态(detached state)、栈地址(stack address)、栈大小(stack size)
  4. [031] 实战:书大师网站开发准备
  5. 受保护的属性无法直接读取
  6. 我和ASP.NET MVC有个约会
  7. 一道头条面试题,小夕差点没读懂题目,找出数组中缺失的数字,最近击败100%的用户!...
  8. 淡雅简洁商业汇演商业计划书PPT模板
  9. 用python加载obj格式三维模型(加mtl贴图)
  10. 红米6 Pro开启ROOT权限的教程
  11. 怎样删除手机自带软件?
  12. 家里宽带网络连接第二台路由器实验二 ----Tenda A6设置无线信号放大模式(WISP)
  13. 双线macd指标参数最佳设置_一文讲透双线MACD指标及其实战运用
  14. CKPlayer视频地址加密方法
  15. 台大郭彦甫教授Matlab讲解笔记(一)
  16. 2021.7纪中快乐游记(下)
  17. 弄错了会很尴尬的英文
  18. 考试/答题系统的设计思路
  19. 为什么互联网企业 争做路由器?
  20. how to know a new word's meaning

热门文章

  1. Blog 081018
  2. JavaScriptjQuery 基本使用
  3. java集合类——Stack栈类与Queue队列
  4. Vue iView Admin 动态路由菜单加载 前后端分离(springboot 2.x iview admin vue 前后端分离 模型设计器 动态数据权限...
  5. EdgeX Foundry理论篇
  6. H3C S5560交换机风扇反转告警
  7. Android -- ImageLoader本地缓存
  8. Thinkphp整合各个功能
  9. 【原】Java学习笔记028 - 集合
  10. Echart图表入门