git学习笔记之基本指令的使用(一)

背景介绍

特点

  • git分布式的版本控制系统;
  • 是用C语言开发的;
  • CVS、SVN为集中式;

集中式分布式区别

集中式

  • 集中式中央服务器负责存储;
  • 每次开发前都要从中央服务器中 clone 源码;
  • 必须联网才能工作;
  • 中央服务器宕机,源码若无备份就完蛋;

分布式

  • 可以没用中央服务器;
  • 中央服务器只是方便交换文档;
  • 一人宕机,可以从其余分支处直接 clone 一份源码;
  • 无需联网也能工作;

基本指令

git init :将目录变成git可管理的仓库

创建工程文件夹,并进入文件夹,讲目录变成git可管理的仓库。

lius@pix:~$ mkdir testgit
lius@pix:~$ cd testgit/
lius@pix:~/testgit$ pwd
/home/lius/testgit
lius@pix:~/testgit$ git init
初始化空的 Git 仓库于 /home/lius/testgit/.git/
lius@pix:~/testgit$ 

初始化之后,实际testgit目录下多了一个 .git 的隐藏文件夹,是 git 用来跟踪管理版本的,千万不要去修改里面的文件。

版本控制系统,只能跟踪文本文件的改动(xx文件第n行增加/删除了什么),图片、视频等二进制文件每次改动,只知道文件发生了变化知道发了哪些变换

git add :将文件添加到仓库

git add file1.txt file2.txt
# 或者使用*通配符
git add *
# 或者使用.通配符
git add .

两个通配符没有任何的区别,就是使用形式不一样。使用通配符会将工作时所有的变化存放到暂存区,包括所有修改和新建的文件但不包括已经被删除的文件

git commit :将文件提交到仓库

- m			添加本次提交的说明,方便以后查找,非常有意义!!

-m 可以不加,不加会跳到文件中,直接编辑文件内容,文件的内容就是mark。

# -m直接添加注释
git commit -m "This is mark"
# 不用-m,到文件中添加注释
git commit

commit是把所有add的文件都提交。

git log :查看commit的历史记录(回到历史)

注意,这个是commit的记录,如果回到之前版本,这个版本之后的commit都将不会在此命令中显示。
例如,版本顺序如下,最后一个版本为E:
A→B→C→D→E
我从E版本回到C,则 git log 显示的历史记录如下:
A→B→C

具体操作如下:

# 查看所有内容
git log
# 只显示一行
git log --pretty=oneline

git reflog :查看历史的命令/版本号(回到未来)

此处每一次执行git commit,git reset等命令时的版本号,帮助恢复到之前的版本。

执行 git reflog之后的输出如下,最前方的是版本号,之后是执行的命令。

lius@pix:~/gittest/zxf$ git reflog 
5abdc6e HEAD@{0}: reset: moving to 5abdc
bab3c40 HEAD@{1}: reset: moving to bab3
5abdc6e HEAD@{2}: reset: moving to 5abdc
bab3c40 HEAD@{3}: reset: moving to HEAD^^
5abdc6e HEAD@{4}: commit: version 1.2
7f68583 HEAD@{5}: commit: version 1.1 add headfile
bab3c40 HEAD@{6}: commit (initial): version 1.0

git reset - -hard HEAD^ :返回之前的版本

重要,实现回到过去,回到未来版本的指令!!!
HEAD的不同含义:

HEAD			HEAD^			HEAD^^			HEAD~n	
当前版本			上一个版本		上上个版本		往上n个版本

HEAD也可以被替代成log显示的版本号(没必要写全,几位唯一确定就可)

# HEAD
git reset --hard HEAD~2
# 版本号
git reset --hard 1094ab

常见的操作失误

  • 空的文件夹无法被add, 所以任何空的文件夹删除了就只能自己新建;
    • 可以执行以下指令看一看:
mkdir test
git add test	# 或者git add *
git status	# 会显示是干净的分支
  • 删除文件要用 git rm < 文件夹/文件名 > , 不能使用通配符!
    不要用以下指令
# 如果要删除 aaa/xxx	xxx为文件名, aaa为文件夹名
# 删除时正常使用 git rm aaa/xxx
# 不要使用下面的通配符
git rm *	# 这样删除不成功
			# 会提示未提供 -r 选项不会递归删除 'aaa'

# 如果你认为下面的指令能删除 'aaa' 和 'aaa/xxx', 你就错了
# 它会把所有文件都删除!!!!
git rm -r *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值