linux下git的HEAD,Git工具详解以及与GitHub的配合使用

git安装

linux上的安装

[cpp] view plaincopy

yum install git

windows上的安装

http://git-scm.com/download/win

下载安装即可。

安装完成后,还需要最后一步设置,在命令行输入:

git config --global user.name "Your Name"

git config --global user.email "email@example.com"

因为git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。然后在本机会生成一个.gitconfig文件,里面包含了user.name和user.email的信息。

WINDOWS下需要再添加一个配置,如下:

git config --global core.autocrlf false

如果没有加这个配置,在后续git操作的时候可能会报warning,如下:

626d903b90d84a8ba5bfb20f4ee49d25.png

这是因为在windows中的换行符为CRLF(\r\n), 而在linux下的换行符为:LF(\n)。

使用git来生成一个工程后,文件中的换行符为LF,在windows中,执行git add file操作时,系统提示:LF将被转换成CRLF。

CRLF -- Carriage-Return Line-Feed 回车换行,就是回车(CR,ASCII 13,\r) 换行(LF,ASCII 10,\n)。

git命令

git目录最好都不要包含中文名。

单机操作命令/单仓库命令

创建版本库repository

mkdir git_repo

cd git_repo

git init

87d42dfe37a2754436df0a23d988c274.png

会在目录中生成.git文件夹,该文件夹就是git仓库的管理文件,不要随意改动里面的内容。该文件夹默认是隐藏,ls命令看不到,用ls -ah命令可以看到。

dc66f432a25e5fbb8f78f83d519b590c.png

新建一个file1.txt文件,文件内容如下(随意写的):

This is file1.txt.

for test~~~

把文件添加到代码库

git add file1 file2...

git commit -m "comment"

2626ed81fb9baeecf1a6599a461ce867.png

b4118d054b672c5141426f48b2cbbfdb.png

git add是把想要提交的文件先提交到commit缓存中;

git commit才是真正的文件提交。

通过git add命令,就等于是把文件加入到git管理中,会有各种git信息跟踪,比如代码版本号,修改了哪里等等。

查看代码仓库状态

git status

假设我修改了file1.txt文件内容如下:

hello everybody!

This is an file1.txt.

end file.

然后用git status命令看一下:

3fc52fbaf5e5e3ea25e0920b8161ac8a.png

上面的提示告诉我们file1.txt被修改过了,但是还没有add到commit缓存中,即还没有准备提交(commit)。

查看修改内容

虽然git status告诉我们file1.txt被修改了,但是没告诉我们哪里被修改,为了具体查看文件什么地方被修改,就使用如下命令:

git diff file

git diff命令要在git add命令之前使用,否则一旦添加到commit缓存后,git diff命令就失效了。

50af6ef5589b6bd7697f189ba99d0a19.png

0f3b518d6ad18fb36a83a2085d313dc8.png

通过git add后,再看git status状态,就变成了准备提交(commit)的状态了。

随后再git commit一下,就提交成功。

2fcfb7e3e299692f7e2945009918cce2.png

commit后,我们再看看git status,如下:

410c61020e4937f63b2a4821487300aa.png

上图黄色框中说明当前目录多了个less文件是没有被git跟踪管理的,这个是我不小心加入的文件,在此无用,可以删去。如果是你需要的文件,那么就通过git add把它加入git管理。

删去了less文件后,看git status,如下所示:

a2c4ba272094d5f577ffaeda8bed19a4.png

查看两个版本之间的不同

git diff 版本1 版本2 [文件]

文件是可选的参数,不带[文件]参数的是比较所有的不同修改:

6f10c0146a384a73c27a37473bdfdb11.png

带[文件]参数的,你可以只查看某个文件的不同:

d6119887156e4011e4eae5ce229cae87.png

查看commit历史

git log

d1d96840276a32555c165b638ffaa195.png

查看命令历史

git reflog

f3c5242763f7d362239e293578cd1bcf.png

版本回退

git reset --hard HEAD^

git reset --hard HEAD@{4}

先用git log或者git reflog看下历史版本,然后用git reset 命令回退版本,如下:

c2f6c3f66790cbc31197cb6b6dff6184.png

git是用HEAD来表示当前分支中的当前版本,HEAD^表示上一个版本,HEAD^^表示上上一个版本,以此类推,如果要回退很早的版本就用HEAD@{版本号},版本号用git reflog查看。

撤销修改

分3种情况

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file 或者 手动修改。

场景2:当你不但改乱了工作区某个文件的内容,并且还添加到了暂存区(即已经git add了)时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,可以用版本回退(参考版本回退一节),不过前提是没有推送到远程库。

下面举例说明:

场景1

如果文件还是在工作区中,还没有git add到暂存区,那么撤销修改有2种办法:,如下:

第1种办法:手动复原,把不想要的修改地方复原。(该方法可以只修改文件的一部分)

65f1a573bbce63b04379b383932f47b1.png

第2种办法:使用命令git checkout -- file。(这里的 -- 很重要,后续的版本分支也是是用git checkout命令,它没有 --)

(该方法只能全部复原文件,因为git checkout -- file其实就是把版本库中的file替换现在工作区的file)

b818313d64873d369e246efa2b766761.png

场景2

当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步骤。

第1步:用命令git reset HEAD file,就回到了场景1;

第2步:按场景1操作。

e7e7fd0923b3f64db009fa9b94881d16.png

372d9b64036a53fe2cf8d5de347f90ea.png

git reset HEAD file命令是把缓存区中的file文件删去,对工作区后续做的修改并没有影响,比如上面的例子,git add后又修改了文件的内容everybody->chenj_freedom,git reset HEAD file后,file的内容还是chenj_freedom。

场景3

已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

删除文件/误删除还原

从版本库中删除文件

git rm file 或者 git add file

git commit

误删除复原

git checkout -- file

git checkout -- file其实就是用版本库中的file文件替换工作区的文件,所以无论工作区的file文件是被修改了还是被删除了,用这个命令都可以一键还原。

baa93630ecb1ac36b7c1846d243d71db.png0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值