Git学习笔记
文章目录
1 简介
Git是Linux创建者Linus在2005年用C语言编写的一个分布式版本控制系统。
集中式版本控制系统:版本库集中存放在中央服务器,使用时需要先从中央服务其取得最新的版本,完成工作后再推送给中央服务器。必须联网才能工作。代表:CVS,SVN(开源免费)ClearCase(IBM,收费)VSS(微软)
分布式版本控制系统:版本库在个人的电脑上,修改后将文件推送给同伴即可,安全性更高。还有强大的分支管理。代表:Git,BitKeeper(收费),Mercurial,Bazaar。
2 创建版本库
2.1 新建版本库
-
在希望的地位新建一个空目录learngit,并进入进入新建的目录
mkdir learngit cd learngit
-
将这个目录变成Git可以管理的仓库
git init
2.2 把文件添加到版本库
所有版本控制系统只能跟踪文本文件的改动,如TXT文件、网页、所有程序代码等;图片、视频这些二进制文件虽然也能由版本控制系统管理,但无法跟踪文件的变化,如只能知道文件大小的变化,而无法知道实际更改内容。Word格式就是二进制格式,所以无法用版本控制系统跟踪Word文件改动。所以,要真正使用版本控制系统,就要以纯文本方式编写文件,建议使用标准的UTF-8编码。
这里编写一个read.txt文件,并放入learngit目录(或其子目录)下内容如
Git is a version control system.
Git is free software.
然后有两步:
-
把文件添加的仓库,可以一次添加多个文件,用空格隔开
git add readme.txt
-
把文件提交到仓库,可以一次提交多个文件,用空格隔开
git commit -m "wrote a readme file"
输出
[master (根提交) 98b83c0] wrote a readme file 1 file changed, 2 insertions(+) create mode 100644 readme.txt
-m后输入的时本次提交的说明,尽量输入有意义的说明。
3 时光机穿梭
3.1 工作区状态
使用
git status
可以掌握工作区的状态。
当有read.txt文件被修改后,会输出
➜ learngit git:(master) git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)
修改: readme.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
此时可使用
git diff
查看修改内容。
在分别使用add和conmmit命令后工作区状态会变化,可用status命令查看。
3.2 版本回退
对readme.txt文件再做一次修改并提交
Git is a distributed version control system.
Git is free software distributed under the GPL.
此时用以下命令来查看所有提交版本
git log
输出由最近到最久远的版本
commit c6d015e1215d933f536d317fc196a1d9794a78c5 (HEAD -> master) #版本号
Author: choupin <zhoubin18@mails.ucas.ac.cn>
Date: Tue Apr 9 18:18:00 2019 +0800
append GPL
commit 6c42c3647c333e3340ad9bac65512674378aac7f
Author: choupin <zhoubin18@mails.ucas.ac.cn>
Date: Tue Apr 9 18:09:40 2019 +0800
add distributed and modify a letter
commit 98b83c09ed2ec88b6c3d75257ec09555ea23b3a1
Author: choupin <zhoubin18@mails.ucas.ac.cn>
Date: Tue Apr 9 17:46:43 2019 +0800
wrote a readme file
~
~
也可以使用命令
git log --pretty=oneline
输出结果更加简略
c6d015e1215d933f536d317fc196a1d9794a78c5 (HEAD -> master) append GPL
#HEAD指向的版本就是当前版本
6c42c3647c333e3340ad9bac65512674378aac7f add distributed and modify a letter
98b83c09ed2ec88b6c3d75257ec09555ea23b3a1 wrote a readme file
回退上个版本:
git reset --hard HEAD^
可以通过指定版本号来恢复到回退之前的版本,或者任一个其他版本
git