0


Git 常用命令总结

Git 安装与配置

查看 git 版本

git--version

配置 git:config

配置 git 使用

git config

命令。默认情况下必须配置

user.name

user.email

用以标识谁提交的代码。

默认情况下

git config

会为当前 git 仓库进行配置,配置文件存放在

git仓库/.git/config

文件中。
如下代码会为当前仓库配置

user.name

git config user.name 你的名字

配置 git 的全局属性需要加上

--global

,配置文件存放在

用户主目录/.gitconfig

文件中。
如下命令会为当前用户的所有仓库配置

user.email

git config --global user.email 你的邮箱

取消配置

使用

--unset

可以取消已经添加的配置。
如下的命令将取消上面设置的

user.name

git config --unset user.name

如果要删除全局的属性,同样要添加

--global

选项。

显示配置信息

可以通过

config

--list

来显示当前的配置信息。以下命令将显示当前 git 仓库的配置信息,由于全局配置也在当前仓库中生效,所以也会显示全局配置信息。

git config --list

查看全局配置信息:

git config --global--list

配置别名

可以使用

alias

给 git 命令设置一个别名,后续可以使用别名来取代原本的指令。例如,为

status

命令配置一个

st

的别名:

git config --global alias.st status

后续就可以使用如下别名来替代

git status

命令:

git st

使用别名可以设置简化一个复杂的 git 命令,例如下面设置的别名可以简化 log 命令:

git config --global alias.mylog "log --color --graph --pretty=format:'%Cred%h%Creset-%C(yellow)%d%Creset%s%Cgreen(%cr)%C(bold blue)<%an>%Creset' --abbrev-commit"

后续可以使用

git mylog

来替代

git log

命令,以显示更多的提交内容和颜色支持。

创建 git 仓库

使用 init 命令

以下命令将在当前目录中创建一个 git 本地仓库:

git init

使用 clone 命令

git clone

命令用于 clone 一个远程仓库到本地:

git clone https://github.com/Lee-swifter/slide-switch.git
git clone

后面跟着远程仓库的地址。

无论使用哪种方式创建 git 仓库,都会在该仓库目录下生成一个 .git 的隐藏文件夹,该文件夹中包含所有的版本记录和配置信息,默认不要对这个文件夹进行手动修改。

git 的三个区域

Git本地有三个工作区域:工作区、暂存区(Stage/Index)、本地仓库。如果在加上远程的 git 仓库就可以分为四个工作区域:

  • 工作区:就是开发者平时工作、修改代码的区域;
  • 暂存区:用于临时存放对文件的改动,暂存区用于直接跟工作区的文件进行交互,工作区文件的提交或者回滚首选都是通过暂存区。事实上它只是一个文件,保存即将提交的文件列表信息,一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index);
  • 本地仓库:就是安全存放数据的位置,这里面有你提交的所有版本的数据。其中 HEAD 指向最新放入仓库的版本;
  • 远程仓库:与本地仓库相连接的另一台机器上的 git 仓库,用于代码交换。git的几个区的相关命令

本地仓库常用命令

显示当前仓库状态(git status)

git status

此命令将显示工作区、暂存区、以及对应的远程仓库的同步状态:

  • Changes to be committed: 显示提交到暂存区,但没有提交到版本库的文件;
  • Changes not staged for commit: 显示工作区中修改的文件,还没有提交到暂存区的文件;

将修改从工作区提交到暂存区(git add / git rm)

gitadd[file]

将指定文件的修改从工作区提交到暂存区,也可以使用下面的命令一次性提交所有文件的修改:

gitadd.

如果文件在工作区被删除,那么将这个删除提交到暂存区,还可以使用

git rm

命令:

gitrm[file]

将修改从暂存区提交到版本库(git commit)

git commit [file_name]-m"commit message"

以上命令将指定文件的修改提交到版本库,不指定 file_name 时将提交所有暂存区的修改。

使用 commit 命令必须为提交添加一个提交信息,使用

-m

参数指定后面的字符串为此提交的信息。也可以不使用

-m

参数,此时

commit

命令会跳转到 vim 编辑中让你输入提交信息。

如果发现提交信息写错了,可以使用以下命令对刚刚 commit 的提交信息进行修改:

git commit --amend-m"new commit message"

同样也可以不使用

-m

参数,跳转到文本编辑器中修改提交信息。此命令实际上是修改 HEAD 指针指向的 commit 的信息。

查看提交记录(git log)

对于所有提交到版本库中的 commit,可以使用如下命令查看提交记录:

git log

每一个 commit 都对应了一个 commit id,此 id 是一个 40 位的 16进制的 SHA-1 散列编码,用来唯一标记一个 commit。

  • 可以添加 --pretty=oneline 参数来单行显示一个提交;
  • 可以添加 --graph 参数为 commit 记录添加图形化显示,在显示分支情况时特别有用;
  • 可以添加 --abbrev-commit 参数来缩减要显示的提交记录;
git log --pretty=oneline
git log --graph--pretty=oneline
git log --graph--pretty=oneline --abbrev-commit

关于

git log

的更多参数,可以使用以下命令来获取:

git log --help

此命令会打开一个网页,所有 git 的命令后面都可以使用

--help

参数来显示其使用文档。

也可以使用如下命令来按照提交的用户显示提交记录:

git shortlog

查看 git 操作历史(git reflog)

git reflog

显示当前仓库的操作记录,以及相关的 commit id。可以通过这个命令查到某些已经被丢弃的 commit 的 id。

丢弃工作区的修改(git restore / git checkout – file)

可以使用下面的命令来丢弃在工作区的修改:

git restore [file]

此命令必须指定一个文件,将丢弃此文件的修改,文件将恢复到修改前的状态。

还有一个与 restore 具有相同作用的命令,如下:

git checkout -- [file]

此命令将丢弃该文件在工作区的修改,并让这个文件回到最近一次

git commit

git add

时的状态。

文件对比 (git diff)

在 git 中一般使用

git diff

命令来对比文件:

gitdiff[file]

这个命令比较文件在暂存区和工作区的差异,如果不指定 file,那么将显示所有文件在两个区域的差异。例如下面的命令将显示 readme.txt 这个文件,已写入暂存区和已经被修改但尚未写入暂存区的内容的区别:

gitdiff readme.txt

可以使用

--cached

--staged

选项,来显示暂存区和版本库中的差异:

gitdiff--cached[file]gitdiff--staged[file]

可以使用 HEAD 来比较工作区与版本库中的差异:

gitdiff HEAD [file]

如果不想看所有的差异内容,则可以添加

--stat

来简化

git diff

的输出:

gitdiff--stat HEAD [file]

比较两个 commit 之间的差异:

gitdiff[commit_id_1]...[commit_id_2][file]

以上命令将比较

commit_id_1

commit_id_2

这两个提交之间的差异,此处的

commit_id

可以换成分支名或是 HEAD。

工作区的 (git stash)

可以将工作区未提交的内容先暂存起来:

git stash

暂存的工作区内容可以通过下面的命令查看:

git stash list

恢复工作区内容有两种方式:

  • 使用 git stash apply 恢复,但是恢复后,stash 内容并不删除,你需要用 git stash drop 来删除;
  • 另一种方式是用 git stash pop,恢复的同时把 stash 内容也删了;

远程仓库

创建 SSH key

一般的远程仓库如 GitHub、GitLab 等,与本地仓库之间的传输都是通过 SSH 加密的,因此在使用这些远程仓库之前需要先在设置 SSH。

以下命令将生成 SSH Key:

ssh-keygen -t rsa -C"[email protected]"

生成完成之后会在用户主目录下生成

.ssh

文件夹,在这两个文件夹中会有

id_rsa

id_rsa.pub

两个文件,这两个就是 SSH Key 的秘钥对,

id_rsa

是私钥,不能泄露出去,

id_rsa.pub

是公钥。

在生成 SSH 之后,需要将公钥的内容设置到远程仓库对应的位置。

添加远程仓库

git remote add origin https://github.com/Lee-swifter/demo-application.git

上面的命令将添加名为

origin

的远程仓库,

origin

后面跟的是这个远程仓库的地址。

一般情况下,都会默认远程仓库名为

origin

,但也可以指定其他名称。一个本地仓库也可以添加多个远程仓库,例如下面的命令为本地仓库添加了两个远程仓库:

git remote add github https://github.com/Lee-swifter/demo-application.git
git remote add gitee https://gitee.com/Lee-swifter/demo-application.git

显示当前远程库信息

git remote -v

删除已经绑定的远程仓库

git remote rm origin

以上命令将删除名称为

origin

的远程库。

推送分支到远程仓库

git push origin master

以上命令将推送 master 分支到远程仓库

拉取远程分支到本地

git checkout -b dev origin/dev

以上命令将从远程仓库拉取 dev 分支到本地。

关联本地分支和远程分支

git branch --set-upstream-to=origin/dev dev

以上命令将本地的 dev 分支与远程的 dev 分支进行关联。

分支相关命令

Git 中的分支其实更像是一个指针,默认情况下,会有两个指针,一个是 master 默认分支,一个是 HEAD,指向当前的分支。

显示当前分支

git branch

此命令显示当前仓库中的分支,其中前面有 * 号的是当前所在分支。可以使用 -r 或 -a 选项显示远程分支或所有分支:

git branch -r

创建分支

git branch <name>

此命令只是创建了一个分支,但并不会将当前分支切换到新分支上去。

切换分支

git switch <branch_name>

此命令将当前分支切换到指定的分支。也可以使用 checkout 来切换分支:

git checkout <branch_name>

创建并切换到新分支上

可以将上面的命令进行合并,使用一个命令创建分支并切换到新分支上:

git switch -c<branch_name>
git checkout -b<branch_name>

这两个命令的作用是相同的。

合并其他分支到当前分支

Git 中合并分支是个大学问,合并分支有三种方法,分别是

merge

rebase

cherry-pick

,这里先讲

merge

git merge <branch_name>

以上的命令会将指定的分支上的内容合并到当前的分支。使用

merge

合并分支又有三种模式:

  • fast-forward
  • no-ff
  • squash

这三者之前的区别可以查看这篇文章:图解4种git合并分支方法

删除分支

git branch -d<branch_name>

此命令将会删除指定分支。如果分支上有没有合并的提交,Git 会提示使用

-D

选项。

分支管理策略

这里使用 廖雪峰官方网站中的分支管理策略 中的一张图来总结:
分支管理策略

标签相关命令

标签总是和某个 commit 挂钩,可以理解为指向某个 commit 的指针。

显示所有标签

git tag

创建标签

git tag <tag_name>

在当前的提交上创建标签,标签名为后面的 name 指定。如果要在特定的 commit 上打标签,则可以使用如下命令:

git tag <tag_name>[commit_id]

上面的命令将在指定的

commit_id

上创建名为

tag_name

的标签。

还可以创建带有说明的标签,用

-a

指定标签名,

-m

指定说明文字:

git tag -a<tag_name>-m<message>[commit_id]

查看标签信息

git show <tag_name>

删除标签

git tag -d<tag_name>

因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。

推送标签到远程仓库

以下命令将推送指定标签到远程仓库:

git push origin <tag_name>

也可以一次性推送所有标签到远程仓库:

git push origin --tags

删除远程标签

首先要在本地删除指定标签:

git tag -d<tag_name>

然后推送删除到远程:

git push origin :refs/tags/<tag_name>

标签: git github gitlab

本文转载自: https://blog.csdn.net/Lee_Swifter/article/details/141201940
版权归原作者 李斯维 所有, 如有侵权,请联系我们删除。

“Git 常用命令总结”的评论:

还没有评论