前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git命令大全

Git命令大全

作者头像
神葳
发布2021-01-22 16:21:09
9440
发布2021-01-22 16:21:09
举报
文章被收录于专栏:神葳总局神葳总局

# Git命令

# git config

配置 Git 的相关参数。

Git 一共有3个配置文件:

  1. 仓库级的配置文件:在仓库的 .git/.gitconfig,该配置文件只对所在的仓库有效。
  2. 全局配置文件:Mac 系统在 ~/.gitconfig,Windows 系统在 C:\Users<用户名>.gitconfig。
  3. 系统级的配置文件:在 Git 的安装目录下(Mac 系统下安装目录在 /usr/local/git)的 etc 文件夹中的 gitconfig。
代码语言:javascript
复制
# 查看配置信息
# --local:仓库级,--global:全局级,--system:系统级
$ git config <--local | --global | --system> -l

# 查看当前生效的配置信息
$ git config -l

# 编辑配置文件
# --local:仓库级,--global:全局级,--system:系统级
$ git config <--local | --global | --system> -e

# 添加配置项
# --local:仓库级,--global:全局级,--system:系统级
$ git config <--local | --global | --system> --add <name> <value>

# 获取配置项
$ git config <--local | --global | --system> --get <name>

# 删除配置项
$ git config <--local | --global | --system> --unset <name>

# 配置提交记录中的用户信息
$ git config --global user.name <用户名>
$ git config --global user.email <邮箱地址>

# 更改Git缓存区的大小
# 如果提交的内容较大,默认缓存较小,提交会失败
# 缓存大小单位:B,例如:524288000(500MB)
$ git config --global http.postBuffer <缓存大小>

# 调用 git status/git diff 命令时以高亮或彩色方式显示改动状态
$ git config --global color.ui true

# 配置可以缓存密码,默认缓存时间15分钟
$ git config --global credential.helper cache

# 配置密码的缓存时间
# 缓存时间单位:秒
$ git config --global credential.helper 'cache --timeout=<缓存时间>'

# 配置长期存储密码
$ git config --global credential.helper store

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

复制

# git clone

从远程仓库克隆一个版本库到本地。

代码语言:javascript
复制
# 默认在当前目录下创建和版本库名相同的文件夹并下载版本到该文件夹下
$ git clone <远程仓库的网址>

# 指定本地仓库的目录
$ git clone <远程仓库的网址> <本地目录>

# -b 指定要克隆的分支,默认是master分支
$ git clone <远程仓库的网址> -b <分支名称> <本地目录>

1 2 3 4 5 6 7 8

复制

# git init

初始化项目所在目录,初始化后会在当前目录下出现一个名为 .git 的目录。

代码语言:javascript
复制
# 初始化本地仓库,在当前目录下生成 .git 文件夹
$ git init

1 2

复制

# git status

查看本地仓库的状态。

代码语言:javascript
复制
# 查看本地仓库的状态
$ git status

# 以简短模式查看本地仓库的状态
# 会显示两列,第一列是文件的状态,第二列是对应的文件
# 文件状态:A 新增,M 修改,D 删除,?? 未添加到Git中
$ git status -s

1 2 3 4 5 6 7

复制

# git remote

操作远程库。

代码语言:javascript
复制
# 列出已经存在的远程仓库
$ git remote

# 列出远程仓库的详细信息,在别名后面列出URL地址
$ git remote -v
$ git remote --verbose

# 添加远程仓库
$ git remote add <远程仓库的别名> <远程仓库的URL地址>

# 修改远程仓库的别名
$ git remote rename <原远程仓库的别名> <新的别名>

# 删除指定名称的远程仓库
$ git remote remove <远程仓库的别名>

# 修改远程仓库的 URL 地址
$ git remote set-url <远程仓库的别名> <新的远程仓库URL地址>

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

复制

# git branch

操作 Git 的分支命令。

代码语言:javascript
复制
# 列出本地的所有分支,当前所在分支以 "*" 标出
$ git branch

# 列出本地的所有分支并显示最后一次提交,当前所在分支以 "*" 标出
$ git branch -v

# 创建新分支,新的分支基于上一次提交建立
$ git branch <分支名>

# 修改分支名称
# 如果不指定原分支名称则为当前所在分支
$ git branch -m [<原分支名称>] <新的分支名称>
# 强制修改分支名称
$ git branch -M [<原分支名称>] <新的分支名称>

# 删除指定的本地分支
$ git branch -d <分支名称>

# 强制删除指定的本地分支
$ git branch -D <分支名称>

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

复制

# git checkout

检出命令,用于创建、切换分支等。

代码语言:javascript
复制
# 切换到已存在的指定分支
$ git checkout <分支名称>

# 创建并切换到指定的分支,保留所有的提交记录
# 等同于 "git branch" 和 "git checkout" 两个命令合并
$ git checkout -b <分支名称>

# 创建并切换到指定的分支,删除所有的提交记录
$ git checkout --orphan <分支名称>

# 替换掉本地的改动,新增的文件和已经添加到暂存区的内容不受影响
$ git checkout <文件路径>

1 2 3 4 5 6 7 8 9 10 11 12

复制

# git cherry-pick

把已经提交的记录合并到当前分支。

代码语言:javascript
复制
# 把已经提交的记录合并到当前分支
$ git cherry-pick <commit ID>

1 2

复制

# git add

把要提交的文件的信息添加到暂存区中。当使用 git commit 时,将依据暂存区中的内容来进行文件的提交。

代码语言:javascript
复制
# 把指定的文件添加到暂存区中
$ git add <文件路径>

# 添加所有修改、已删除的文件到暂存区中
$ git add -u [<文件路径>]
$ git add --update [<文件路径>]

# 添加所有修改、已删除、新增的文件到暂存区中,省略 <文件路径> 即为当前目录
$ git add -A [<文件路径>]
$ git add --all [<文件路径>]

# 查看所有修改、已删除但没有提交的文件,进入一个子命令系统
$ git add -i [<文件路径>]
$ git add --interactive [<文件路径>]

1 2 3 4 5 6 7 8 9 10 11 12 13 14

复制

# git commit

将暂存区中的文件提交到本地仓库中。

代码语言:javascript
复制
# 把暂存区中的文件提交到本地仓库,调用文本编辑器输入该次提交的描述信息
$ git commit

# 把暂存区中的文件提交到本地仓库中并添加描述信息
$ git commit -m "<提交的描述信息>"

# 把所有修改、已删除的文件提交到本地仓库中
# 不包括未被版本库跟踪的文件,等同于先调用了 "git add -u"
$ git commit -a -m "<提交的描述信息>"

# 修改上次提交的描述信息
$ git commit --amend

1 2 3 4 5 6 7 8 9 10 11 12

复制

# git fetch

从远程仓库获取最新的版本到本地的 tmp 分支上。

代码语言:javascript
复制
# 将远程仓库所有分支的最新版本全部取回到本地
$ git fetch <远程仓库的别名>

# 将远程仓库指定分支的最新版本取回到本地
$ git fetch <远程主机名> <分支名>

1 2 3 4 5

复制

# git merge

合并分支。

代码语言:javascript
复制
# 把指定的分支合并到当前所在的分支下
$ git merge <分支名称>

1 2

复制

# git diff

比较版本之间的差异。

代码语言:javascript
复制
# 比较当前文件和暂存区中文件的差异,显示没有暂存起来的更改
$ git diff

# 比较暂存区中的文件和上次提交时的差异
$ git diff --cached
$ git diff --staged

# 比较当前文件和上次提交时的差异
$ git diff HEAD

# 查看从指定的版本之后改动的内容
$ git diff <commit ID>

# 比较两个分支之间的差异
$ git diff <分支名称> <分支名称>

# 查看两个分支分开后各自的改动内容
$ git diff <分支名称>...<分支名称>

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

复制

# git pull

从远程仓库获取最新版本并合并到本地。 首先会执行 git fetch,然后执行 git merge,把获取的分支的 HEAD 合并到当前分支。

代码语言:javascript
复制
# 从远程仓库获取最新版本。
$ git pull

1 2

复制

# git push

把本地仓库的提交推送到远程仓库。

代码语言:javascript
复制
# 把本地仓库的分支推送到远程仓库的指定分支
$ git push <远程仓库的别名> <本地分支名>:<远程分支名>

# 删除指定的远程仓库的分支
$ git push <远程仓库的别名> :<远程分支名>
$ git push <远程仓库的别名> --delete <远程分支名>

1 2 3 4 5 6

复制

# git log

显示提交的记录。

代码语言:javascript
复制
# 打印所有的提交记录
$ git log

# 打印从第一次提交到指定的提交的记录
$ git log <commit ID>

# 打印指定数量的最新提交的记录
$ git log -<指定的数量>

1 2 3 4 5 6 7 8

复制

# git reset

还原提交记录。

代码语言:javascript
复制
# 重置暂存区,但文件不受影响
# 相当于将用 "git add" 命令更新到暂存区的内容撤出暂存区,可以指定文件
# 没有指定 commit ID 则默认为当前 HEAD
$ git reset [<文件路径>]
$ git reset --mixed [<文件路径>]

# 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
$ git reset <commit ID>
$ git reset --mixed <commit ID>

# 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
# 相当于调用 "git reset --mixed" 命令后又做了一次 "git add"
$ git reset --soft <commit ID>

# 将 HEAD 的指向改变,撤销到指定的提交记录,文件也修改了
$ git reset --hard <commit ID>

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

复制

# git revert

生成一个新的提交来撤销某次提交,此次提交之前的所有提交都会被保留。

代码语言:javascript
复制
# 生成一个新的提交来撤销某次提交
$ git revert <commit ID>

1 2

复制

# git tag

操作标签的命令。

代码语言:javascript
复制
# 打印所有的标签
$ git tag

# 添加轻量标签,指向提交对象的引用,可以指定之前的提交记录
$ git tag <标签名称> [<commit ID>]

# 添加带有描述信息的附注标签,可以指定之前的提交记录
$ git tag -a <标签名称> -m <标签描述信息> [<commit ID>]

# 切换到指定的标签
$ git checkout <标签名称>

# 查看标签的信息
$ git show <标签名称>

# 删除指定的标签
$ git tag -d <标签名称>

# 将指定的标签提交到远程仓库
$ git push <远程仓库的别名> <标签名称>

# 将本地所有的标签全部提交到远程仓库
$ git push <远程仓库的别名> –tags

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

复制

# git mv

重命名文件或者文件夹。

代码语言:javascript
复制
# 重命名指定的文件或者文件夹
$ git mv <源文件/文件夹> <目标文件/文件夹>

1 2

复制

# git rm

删除文件或者文件夹。

代码语言:javascript
复制
# 移除跟踪指定的文件,并从本地仓库的文件夹中删除
$ git rm <文件路径>

# 移除跟踪指定的文件夹,并从本地仓库的文件夹中删除
$ git rm -r <文件夹路径>

# 移除跟踪指定的文件,在本地仓库的文件夹中保留该文件
$ git rm --cached

1 2 3 4 5 6 7 8

复制

# Git常用命令以供使用

命令

说明

git clone <address>

复制代码库到本地。

git add <file> ...

添加文件到代码库中。

git rm <file> ...

删除代码库的文件。

git commit -m <message>

提交更改,在修改了文件以后,使用这个命令提交修改。

git pull

从远程同步代码库到本地。

git push

推送代码到远程代码库。

git branch

查看当前分支。带*是当前分支。

git branch <branch-name>

新建一个分支。

git branch -d <branch-name>

删除一个分支。

git checkout <branch-name>

切换到指定分支。

git log

查看提交记录(即历史的 commit 记录)。

git status

当前修改的状态,是否修改了还没提交,或者那些文件未使用。

git reset <log>

恢复到历史版本。

# Git操作场景示例

# 删除掉本地不存在的远程分支

多人合作开发时,如果远程的分支被其他开发删除掉,在本地执行 git branch --all 依然会显示该远程分支,可使用下列的命令进行删除:

代码语言:javascript
复制
# 使用 pull 命令,添加 -p 参数
$ git pull -p

# 等同于下面的命令
$ git fetch -p
$ git fetch --prune origin

1 2 3 4 5 6

复制


# git pull发生冲突解决方法

“error: Your local changes to the following files would be overwritten by merge”

网上有两种解决方法:

# 方法一:stash
代码语言:javascript
复制
git stash
git commit
git stash pop

1 2 3

复制

接下来diff一下此文件看看自动合并的情况,并作出相应修改。

  1. git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
  2. git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
  3. git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
  4. git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
# 方法二:放弃本地修改,直接覆盖
代码语言:javascript
复制
git reset --hard
git pull

1 2

复制


# 版本控制完整流程

# 第一种方法:(简单易懂)
  1. git add . 后面有一个点,意思是将你本地所有修改了的文件添加到暂存区
  2. git commit -m"" 引号里面是你的介绍,就是你的这次的提交是什么内容,便于你以后查看,这个是将索引的当前内容与描述更改的用户和日志消息一起存储在新的提交中
  3. git pull origin master 这是下拉代码,将远程最新的代码先跟你本地的代码合并一下,如果确定远程没有更新,可以不用这个,最好是每次都执行以下,完成之后打开代码查看有没有冲突,并解决,如果有冲突解决完成以后再次执行1跟2的操作
  4. git push origin master 将代码推至远程就可以了
# 第二种方法:
  1. git stash 这是将本地代码回滚值至上一次提交的时候,就是没有你新改的代码
  2. git pull origin master 将远程的拉下来
  3. git stash pop 将第一步回滚的代码释放出来,相当于将你修改的代码与下拉的代码合并,然后解决冲突,你本地的代码将会是最新的代码
  4. git add .
  5. git commit -m""
  6. git push origin master

这几步将代码推至了远程 最后再git pull origin master 一下,确保远程的全部拉下来,有的你刚提交完有人又提交了,你再拉一下会避免不是最新的问题


# Git仓库完整迁移

完整迁移,就是指,不仅将所有代码移植到新的仓库,而且要保留所有的commit记录

# 1. 随便找个文件夹,从原地址克隆一份裸版本库
代码语言:javascript
复制
git clone --bare 旧的git地址

1

复制

会在当前目录下产生一个 xxx.git 的文件夹

这个步骤,就是克隆git每一次的提交信息 和本地的代码没有关系,只要线上的代码是最新的,这个git版本就是完整的

# 2. 推送裸版本库到新的地址
代码语言:javascript
复制
cd xxx.git
git push --mirror 新的git地址

1 2

复制

# 3. 删掉xxx.git文件夹

删不删无所谓,只是说明它没有用了而已。

# 4. 代码迁移就成功了,接下来就可以使用新的地址了
代码语言:javascript
复制
git clone 新的git地址

1

复制

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-7-22 1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # Git命令
    • # git config
      • # git clone
        • # git init
          • # git status
            • # git remote
              • # git branch
                • # git checkout
                  • # git cherry-pick
                    • # git add
                      • # git commit
                        • # git fetch
                          • # git merge
                            • # git diff
                              • # git pull
                                • # git push
                                  • # git log
                                    • # git reset
                                      • # git revert
                                        • # git tag
                                          • # git mv
                                            • # git rm
                                            • # Git常用命令以供使用
                                            • # Git操作场景示例
                                              • # 删除掉本地不存在的远程分支
                                                • # git pull发生冲突解决方法
                                                  • # 方法一:stash
                                                  • # 方法二:放弃本地修改,直接覆盖
                                                • # 版本控制完整流程
                                                  • # 第一种方法:(简单易懂)
                                                  • # 第二种方法:
                                                • # Git仓库完整迁移
                                                  • # 1. 随便找个文件夹,从原地址克隆一份裸版本库
                                                  • # 2. 推送裸版本库到新的地址
                                                  • # 3. 删掉xxx.git文件夹
                                                  • # 4. 代码迁移就成功了,接下来就可以使用新的地址了
                                              领券
                                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档