Git-入门教程(三)-Git的本地使用

0.摘要

本文主要介绍的git的使用方法,基于MacOS进行演示,其他系统类似。

 

1.安装Git

方式1:通过HomeBrew 安装,在中terminal输入:

brew install git

方式2:Xcode集成了Git。如果读者的机器上之前安装过Xcode,自带了git。读者可以通过以下命令验证是否已经安装了git。

git --version

如果没有,可以通过运行Xcode,点击Preferences,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。

 

2.配置用户名和地址

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

--global参数:表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

执行完上述命令后,读者可以在主目录下找到一个名为.gitconfig的文件,记录了我们配置的信息。

如需修改,可通过再次执行命令,或vim ~/.gitconfig进行修改。

 

3.新建代码仓库

仓库,也称版本库,Git版本库记录了代码的每一次修改。因此,如果我们希望使用Git管理我们的代码,就需要先新建一个Git仓库,用来存储版本的修改信息。

mkdir DemoForGit  #为仓库新建一个文件夹
cd DemoForGit     #进入仓库文件夹
git init          #将该文件夹初始化为git仓库
ls -a             #初始化后,文件夹中会多出一个.git的目录,这一目录是用来记录Git信息的

当我们执行完git init 的时候,就完成了Git仓库的构建。并且系统会提示你这是一个空的仓库(empty Git repository)

初始化结束后,当前目录下多了一个.git的目录,Git跟踪管理版本库的信息就记录在这一文件夹下。因此,用户尽量避免手动修改这个目录下的文件,否则会破坏Git版本管理信息。

这里新建文件夹不是必须的操作,读者也可以在非空文件夹下直接执行init操作。

 

4.把文件添加到版本库

注意:这里文件只是添加到本地版本库中,并不是远程服务器端。

首先我们在当前目录下新建一个文件,这里新建一个hello world程序作为示例。

在当前路径下,存在一个叫做hello.py的程序,然后,我们通过add(添加)和commit(提交)两步操作,把文件添加到版本库。

git add hello.py            #把hello.py程序添加到版本库
git commit -m "say hello"   #把hello.py程序提交到版本库

如果要一次性添加多个文件,可以通过多次执行add操作,或者以空格分隔多个文件,统一写在一条命令中。

git add file1.txt files2.txt #一次添加多个文件

commit操作,可以将所有已经add的文件一次性提交。

git commit 命令后面的-m参数:表示添加本次提交的说明。开发者在提交的时候,对该版本改动进行简要说明是非常有益的习惯。

如果在commit时候没有加-m参数,Git会“友善地”帮助你打开vim编辑器,并提醒您在‘#’区域外填写版本修改的说明。

这时候按‘i’进入编辑模式,完成编辑后按ESC,输入“:wq” 即可(冒号不能省略)。

如果需要查看提交记录,可以使用git log命令

git log                     #查看提交记录
git log --pretty=oneline    #只显示一行
git log -2                  #只显示最近2次的记录
git log -p                  #显示每次提交的difference

另外,git log命令还有许多额外的参数,详细用法可参加下面这篇博客:

https://blog.csdn.net/wh_19910525/article/details/7468549

 

5.查看Git状态

当我们在编辑代码的过程中,可以使用git status 命令随时查看代码的状态。

git status   #查看当前仓库状态

比如,当我们修改readme.txt文件但没有add,则Git会提示我们文件已修改,但还未完成提交前的准备工作,readme.txt文件也为红色。

当我们完成add操作后,Git此时提示我们已经可以提交了,此时的readme.txt文件为绿色。

在add之前,如果想要查看本次提交的内容与之前版本的不同,可以使用git diff filename 命令,确认修改的内容

git diff readme.txt  #显示readme.txt修改前后的不同

 

6.回退版本

直接上命令:

git reset --hard HEAD^       #回退到上个版本
git reset --hard HEAD^^      #回退到上上个版本
git reset --hard HEAD^^^     #回退到上上上个版本 //?好多^啊
……                           #回退到上上上……个版本怎么办呢???Git当然没那么傻
git reset --hard HEAD~100    #回退到上100个版本 //还好不是100个^

下面,举个例子:  

step1:我们新建一个reset_test.txt文档,在其中输入“Version=0”,并提交。

vim reset_test.txt
cat reset_test.txt
git add reset_test.txt
git commit -m "Version=0"

step2:上述过程5次,每次更改reset_test内容,并提交。

通过查看log信息,可以得到:

git -log -6 --pretty=oneline

由图可见,我们已经提交了6个版本,通过下面的方法可以回退到版本3:

step3:为了演示命令,这里先回退到版本4,再回退到版本3:

通过我们的回退操作,我们文档中的内容已经回到了版本3的状态。

 

7.反向回退

当我们把版本回退到Version3的后,发现还是Version5好一些,这时候怎么办呢?

此时,我们查看git log 信息会发现,HEAD已经指向了Version3,Version4和Version5已经消失不见了。当然,这都是小场面,不慌。

只要我们能够找到每一个版本的commit id (即一串黄色的编号),那么就还是可以恢复的。

通过查找,我们找了的Version5的commit id为:840782b3be5a9fa3c6b8e1ecdb1a20f3e9312661

git reset --hard 840782  #id不需要全部输入,前几位即可。

通过commit id 我们成功将版本又拉回了 Version5。

当然,可能更糟糕的是,随手执行了clear清屏操作,甚至关闭了terminal,同样不用慌:

git reflog   #查看历史版本的commit id

git reflog记录了你需要的信息:

8.一键还原工作区和stage暂存区

假如熬夜的你一不小心趴在键盘上睡着了,导致你的工作区满屏乱码,这时候还原工作区绝对是一项体力活。所幸的是,你在睡着之前刚完成了一次git add 或者 git commit操作,这时候一条Git命令就能还你一个整洁的界面。

git checkout -- reset_test.txt   #还原工作区至最新版本状态

注意:“--” 和 “reset_test”之间有空格。

如果reset_test.txt不是被修改,而是被删除了,checkout也是可以还原的。

另外,git checkout -- “filename”还原也分两种情况:

(一):执行了commit操作,stage中无内容,这时候还原得到的是最近一次commit的版本。当然,你也可以选择使用版本回退的方式实现同样的功能,前提是你不介意其他文件也会被还原

(二):执行了add操作,还没有commit,stage中有内容,这时候还原得到的是stage中的内容。所以,经常add一下还是个不错的习惯呢。

总结:git checkout -- “filename” 可以将工作区还原至最近一次git add 或 git commit 的状态。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值