Git基本命令使用总结

目录

git中查看文件状态和差异

跳过暂存区域

移除文件

文件改名

查看提交历史

撤销操作


git中查看文件状态和差异

通常我们会使用git status来查看当前文件状态,它的输出如下面所示:

其中,第一个aa.ppp是已经加入到暂存区,等待提交的。 第二个aa.ppp是已经修改,但是尚未进行暂存。  test.pdf是一个新文件,还未进行跟踪。

 

但是有时我们除了知道文件状态外,还想知道文件发生哪些变化。

  • 对于工作区中已经修改,但尚未加入暂存区的文件,git diff 将会对比工作区的文件和暂存区的文件(可以这样理解,初始的暂存区或者刚刚commit过的暂存区,与版本库是一致的)
  • 对于已经加入暂存区的文件,git diff --staged 将会比较暂存区和版本库

 

跳过暂存区域

有时我们可能会觉得加入暂存区是个比较繁琐的事情,能不能跳过呢。 跳不过,但是git可以帮我们将文件加入到暂存区,那就是使用 git commit -a ,这样所有被追踪并且已经修改的文件,都会自动添加到暂存区然后被提交到版本库。

对于未追踪的文件,你还是得手动 git add 来将其加入到暂存区

 

移除文件

1. 已经添加到暂存区的新文件,但是还未提交(版本库中没有该文件)

     无法用  git rm 文件名,我们这里有2个选择,

          第一:git rm 文件名 --cached   仅删除暂存区的内容,保留工作区的文件                   

          第二:git rm 文件名 -f  删除暂存区和工作区文件,就是这个文件被彻底删除。

2. 刚刚从版本库中checkout的文件,还未进行修改

    使用  git rm 文件名  , 删除操作将被加入到暂存区,然后提交就可以将文件从版本库中删除了。

3. 从版本库中checkout的文件,修改并添加到暂存区

          第一:git rm 文件名 --cached   仅删除暂存区的内容,保留工作区的文件                   

          第二:git rm 文件名 -f  删除暂存区和工作区文件,并将删除操作加入暂存区,然后提交就可以将文件从版本库中删除了。

 

文件改名

可以使用 git mv  name_from name_to, 这个修改会进入暂存区,commit后就可以了

这个命令其实是3个命令的合集:

git mv name_from name_to

git rm name_from

git add name_to

 

查看提交历史

使用git log能够查看提交历史,提交历史包含所有的提及历史记录,默认安照时间排序,最近提交的靠前。  同时,这个命令有很多的参数可用。

 

影响log输出的参数:

选项说明
-p按不定格式显示每个更新间的差异
--stat显示每次更新的文件修改统计信息
--name-only仅在提交信息后显示已修改的文件清单
--name-status显示新增、删除、修改的文件清单
--abbrev-commit仅显示SHA-1的前几个字符,而非所有的40个字符
--relative-date使用较短的相对时间显示,例如 2 weeks ago
--graph显示ASCII图形表示的分支合并历史
--pretty使用其他格式显示历史提交信息,可用的选项包括 oneline、short、full、fuller和format(format后跟指定格式)

--pretty=format 的常用选项

选项说明
%H提交对象(commit)的完整哈希字符串
%h提交对象的简短哈希字符串
%T树对象(tree)的完整哈希字符串
%t树对象的简短哈希字符串
%P父对象(parent)的完整哈希字符串
%p父对象的简短哈希字符串
%an作者(author)的名字
%ae作者的邮件地址
%ad作者修订日期(可以使用 --date=选项定制格式)
%ar作者修订日期(按多久以前的方式显示)
%cn提交者(committer)的名字
%ce提交者的邮箱地址
%cd提交日期
%cr提交日期,按多久以前的方式显示
%s提交说明

例子:git log --pretty=format:"%h %s" --graph
 

限制输出的长度(就是个过滤器)

选项说明
-nn为一个数,代表显示最近提交的n条提交
--since, --after仅显示指定时间之后的提交
--until, --before仅显示指定时间之前的提交
--author仅显示指定作者的相关提交
--committer仅显示指定提交者的相关提交
--grep仅显示(提交说明中)包含指定关键字的提交
-S仅显示(代码中)添加或移除了某个关键字的提交
--放在最后,用--分隔,后面跟一个path,仅显示这个path下文件的历史修改记录

例子:

git log --pretty="%h - %s" --author=gitster --since="2008-10-01" --before="2008-11-01"

git log -Sfunction_name

git log -- /opt/fes/
 

 

撤销操作

一、撤销commit

git commit --amend, 这个命令从根本上来说并没有进行撤销,它只是让某次提交操作不可见了,让history看起更好看些,有2个用法:

1. 上次commit后,没有进行任何操作,这时git commit --amend可以用来修改上次的提交说明,例如 git commit --amend -m "刚才提交说明写的有问题,现在重新写下提交说明"

2. 上次提交后,我们进行add操作,将某些文件加入了暂存区, 这时git commit --amend可以用来更新快照,同时上次提交信息会被隐藏起来,也可以写新的提交说明。 例子:git commit --amend -m "新的提交说明" 【需要注意的是,最后这次提交中包含了2次提交的变化】

 

二、从暂存区撤销

如果不小心将某个文件添加到了暂存区,没有关系我们可以用下面的命令,将其从暂存区撤销,所作的修改不会丢失。

git reset HEAD  filename

 

三、撤销对工作区文件的修改

我们对某个文件修改后,未添加到暂存区之前,后悔了,希望将文件恢复到上次提交时的状态,注意所作修改会丢失哦

git checkout -- filename

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值