Git使用学习笔记 (一)
学习网址
安装方法包含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使用学习笔记 (一)相关推荐
- 《Got Git》学习笔记(一)
<Got Git>学习笔记(一) 最近想对自己的代码和文档进行归档整理,需要一个版本控制系统来进行 处理.自然而然的想到了目前流行的GitHub. GitHub,是一个面向开源及私有软件项 ...
- git的学习笔记(二):git远程操作
git的学习笔记(一):git本地操作 1.创建ssh key ssh-keygen -t rsa -C "your_email@example.com" 执行命令后会在用户的家目 ...
- Git 个人学习笔记及心得
作为程序员如果你还不知道 Git 和 GitHub,说不过去吧,赶紧来学习一波. 一.认识GitHub Git 是个版本控制系统,说明白点就是进行代码的各种管理,比如你写错代码进行回滚啊.追寻 Bug ...
- Learn Git Branching 学习笔记(移动提交记录篇)
目录 一.移动提交记录篇 1.Git Cherry-pick 2.交互式rebase Git用法高级篇在上一篇文章中Learn Git Branching 学习笔记(高级篇)_流年--by gone的 ...
- Learn Git Branching 学习笔记(高级话题篇)
目录 一.高级话题篇 1.多分支rebase 2.选择父提交记录 3.纠缠不清的分支 Git的一些技术.技巧与贴士集合在上一篇文章中 Learn Git Branching 学习笔记(Git 技术.技 ...
- git/github学习笔记
原文地址为: git/github学习笔记 请移步到:http://www.testclass.net/git/ ----- 我重新对git/github教程进行了编排和整理. 1. git 版本控制 ...
- git serialtool_Git学习笔记---协作的一般流程
一般的操作流程 1.pull 王小坤与另一个同事张大炮一起开发一个项目,张大炮昨天修改了数据库读写的api,优化了执行速度,并把read()函数改名成了Read(),下午下班之前把这些代码push到服 ...
- 廖雪峰Git教程学习笔记
廖雪峰git简单教程学习笔记 教程地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b ...
- Git入门学习笔记(10分钟速通)
一.Git概述 官网翻译: Git 是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型项目到大型项目的所有内容. Git易于学习, 体积小,性能快如闪电.它超越了 Subversion.C ...
- Git工作流学习笔记
Git工作流指南 分布式版本控制系统 观看笔记:https://www.bilibili.com/video/BV1dW411U7ER?p=1 老师笔记: http://www.funtl.com/z ...
最新文章
- Fabric源码分析-共识模块
- c++ primer 5th,习题13.3 答案是不是错了?(未解决)
- 线程的属性 —— 分离的状态(detached state)、栈地址(stack address)、栈大小(stack size)
- [031] 实战:书大师网站开发准备
- 受保护的属性无法直接读取
- 我和ASP.NET MVC有个约会
- 一道头条面试题,小夕差点没读懂题目,找出数组中缺失的数字,最近击败100%的用户!...
- 淡雅简洁商业汇演商业计划书PPT模板
- 用python加载obj格式三维模型(加mtl贴图)
- 红米6 Pro开启ROOT权限的教程
- 怎样删除手机自带软件?
- 家里宽带网络连接第二台路由器实验二 ----Tenda A6设置无线信号放大模式(WISP)
- 双线macd指标参数最佳设置_一文讲透双线MACD指标及其实战运用
- CKPlayer视频地址加密方法
- 台大郭彦甫教授Matlab讲解笔记(一)
- 2021.7纪中快乐游记(下)
- 弄错了会很尴尬的英文
- 考试/答题系统的设计思路
- 为什么互联网企业 争做路由器?
- how to know a new word's meaning