Git命令总结

Git命令总结

Git的基本配置

查看当前所有配置项

命令:git config --listgit config -l

配置姓名和邮箱

命令:

git config --global user.name "your name"
git config --global user.email "your email"

说明:你每次commit的时候,Git都需要记录是谁提交的,因此需要全局配置一下姓名和邮箱,这样才能commit。

Git管理本地仓库

基本操作

新建仓库(init)

命令:git init [目录名称]

说明:

git init后面如果不跟目录名的话,执行这个命令之后,当前文件夹(pwd查看到的当前路径)就会变成Git可以管理的仓库,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时候都可以追踪历史,或者在将来某个时刻可以“还原”。指令git init命令后当前目录下会多一个.git目录,这个目录就是Git用来跟踪管理仓库的。

git init后面如果跟目录名的话,如果存在该目录,就将该目录管理起来,如果不存在该目录,就新建一个目录并将那个目录管理起来。

将文件从工作区提交到暂存区(add)

命令:git add

说明:在Git中,在提交修改的文件之前,需要把它们添加到暂存区。如果该文件是新创建的,可以执行git add将该文件添加到暂存区,但是,即使该文件已经被追踪了,也就是说,曾经使用过git add命令将该文件提交到了暂存区,之后你又修改了它,仍然需要执行git add将新更改的文件添加到暂存区。

补充:可以使用git add .一次性提交所有修改的文件到暂存区。

将暂存区的文件保存为快照(commit)

命令:git commit

参数:-m,作用是对本次提交的描述信息

参数:-a,作用是跳过git add直接将工作区保存为快照

说明:使用git add命令之后你只是将你修改的内容保存到了暂存区里面,但是你还没有保存快照,即你还没有记录下来,如果要保存快照,就要执行命令git commit。你每次提交的时候,Git都会记录提交者的名字和邮箱,因此在使用git commit之前要配置你的名字和邮箱:

git config --global user.name 'your name'

git config --global user.email 'your email'

如果你漏掉了-m选项,Git会尝试为你打开一个编辑器以填写提交信息。如果Git在你对它的配置中找不到相关信息,默认会打开vim

查看工作区与暂存区的状态(status)

命令:git status

参数:-s,short的意思,只得到少量描述信息

说明:

git status -s

??  demo1.txt
A   demo2.txt
AM  demo3.txt
 D  demo4.txt
MM  demo5.txt

以上是简短输入可以输出的信息,有两栏,第一栏是暂存区的,第二栏是工作区的。

??:表示这个文件尚未追踪,意思就是Git无法管理这个文件,这是一个新文件

A :表示这个文件已经被add到了暂存区

AM:表示这个文件已经被add到了暂存区,然后还在工作区做了修改

D:表示这个文件在工作区被删除了

MM:表示这个文件已经add到了暂存区,并且在暂存区和工作区都做了修改(其实就是比较到了工作区和暂存区,暂存区和快照有不同)。

A标志一般只出现在该文件还未保存过快照。

比对内容(diff)
工作区 VS 暂存区

命令:git diff <filename>

说明:比对文件在工作区和暂存区的内容,如果缓存区中没有该文件,则比对文件现在的内容和上次add的内容。

也可以比对和另一分支的内容:

命令:git diff <branch> <filename>

说明:

暂存区 VS 快照

命令:git diff --cached <filename>

说明:表示查看已经add进暂存区但是尚未commit的内容同最新一次commit时的内容的差异,可以指定快照版本:

git diff --cached <commit> <filename>

工作区 VS 快照

命令:git diff <commit> <filename>

说明:查看工作目录和快照的区别,快照可以用<commit>指定版本

快照 VS 快照

命令:git diff <commit> <commit>

说明:查看任意两个版本的快照之间的区别

以上命令可以不指定<filename>,则对全部文件操作

以上命令中的commit命令是用来指定快照版本的,书写方式如下:

HEAD,最近一次commit

HEAD^,上次commit

HEAD~100,上100次commit

可以用每次提交产生的哈希值代替HEAD

参数:–stat

参数说明:显示摘要而不是整个diff,和其他参数一起使用。

撤销修改(reset)

命令:git reset HEAD --file,–可以省略

说明:如果你缓存了你不想缓存的文件,并不想将它提交到HEAD中,就可以使用这个命令撤销缓存,表示直接从缓存中删除某个文件。

将文件从缓存中移除(rm)

命令:git rm file

说明:默认情况下,git rm file会将文件从缓存区和硬盘中删除,如果要在工作区保留该文件,可以使用git rm --cached file

移动或重命名文件(mv)

命令:git mv <source> <destination>

说明:该指令相当于三个指令

git rm --cached orig
mv orig new
git add new

分支管理

列出所有分支

命令:git branch

说明:这是git branch没有参数的时候,会列出在本地的所有分支,你所在的分支的行首会有个星号作标记。在git init的时候,默认情况下Git会创建一个master分支。(其实master并没有什么意思,只是默认的一个而已)

创建分支

命令:git branch (branchname)

说明:创建一个新的分支,和当前分支在指向同一个位置(提交).

切换分支

命令:git checkout (branch)

说明:切换到某一分支

创建并切换到该分支

命令:git checkout -b (branchname)

说明:创建一个新分支,并切换到该分支上面

删除分支

命令:git branch -d (branchname)

说明:删掉一个分支

合并分支

命令:git merge (branchname)

说明:将一个分支合并到你当前的分支

合并冲突

当两个分支同时修改同一个文件的同一段代码时,合并时就会出现合并冲突,这个时候如果执行git merge,就会提示合并冲突,并在原来的文件中插入一些标志告诉你是哪里冲突了,这个时候你就可以按照他的提示修改代码从而合并冲突,修改完后执行git status -s命令会看到工作区和暂存区的状态都是U,可以执行git addgit commit将修改后的文件提交,这样就合并冲突了。

查看历史记录

命令:git log [<branch>]

参数:无参数

参数说明:查看每次提交的详细记录,branch是可选项,不加默认显示当前分支的记录。可以使用^来去掉某一分支的记录

参数:--oneline

说明:查看历史记录紧凑简洁的版本

参数:--graph

说明:查看历史中什么时候出现了分支、合并

标签管理

查看所有标签

命令:git tag

创建标签

命令:git tag <name> [-a] [SHA]

参数:-a

说明:-a选项意为创建一个带注解的标签,从而使你为标签添加注解。绝大部分时候都会这么做,不用-a选项也可以执行,但它不会记录这标签是什么时候打的,谁打的,也不会让你添加标签的注解。

SHA是你某次提交的哈希code,可以在以后某个时刻追加标签,当然也可以使用HEAD.

查看标签

命令:git log --decorate

说明:查看历史所打的所有标签

删除标签

命令:git tag -d <name>

说明:删除一个本地标签

Git管理远程仓库

查看所有远程仓库

命令:git remote

说明:如果没有任何参数,Git会列出它存储的所有远端仓库的别名,默认情况下,如果你的项目是克隆的,Git会自动将你克隆的项目的仓库添加到列表中,并取名origin,如果执行时加上-v参数,还可以看到每个别名的实际链接地址。

添加远端仓库

命令:git remote add [alias] [url]

说明:此命令将[url][alias]的别名添加为本地的远端仓库。

删除远端别名

命令:git remote rm [alias]

从远端仓库下载最新分支与数据

命令:git fetch [alias] [--all]

从远端仓库提取数据并尝试合并到当前分支

命令:git pull

说明:该命令就是在git fetch之后紧挨着git merge远端分支到你所在的分支。

推送新分支与数据到远端仓库

命令:git push [alias] [branch]

克隆一个远端仓库到本地

命令:git clone [url]

推送本地标签

命令:git push [alias] <tagname> [--tags]

说明:可以不指定名字,直接使用--tags推送所有未推送过的标签

删除一个远端标签

首先在本地删除,然后在远程删除,命令是:

git push [alias] :ref/tags/<tagname>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值