Skip to content

git 常用命令

1 配置用户签名

sh
# 配置用户名
git config [--global] user.name <用户名>

# 配置邮箱,邮箱不一定是真实邮箱,仅用于标识身份
git config [--global] user.email <邮箱>

# 查看git的所有设置
git config --list

配置好后可通过cat ~/.gitconfig指令查看。

2 创建版本库

sh
git init   # 初始化本地仓库,生成.git文件夹

git clone <远程仓库地> # 克隆仓库

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

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

git clone --mirror $URL  # 通过git仓库或者本地仓库创建镜像仓库

3 修改和提交

sh
git status  # 查看本地仓库状态


git add <path>  # 添加指定的文件到暂存区中

# 添加所有已修改、已删除的文件到暂存区中,不包括新增的文件
# 省略<path>表示 . ,即当前目录
git add -u [<path>]

# 添加所有文件到暂存区中,包括新增、已修改、已删除的文件
# 省略<path>表示 . ,即当前目录
git add --all [<path>]
git add -A [<path>]

git add .  # 相当于 git add -A 

git add -i [<path>] # 查看所有已修改或已删除但没有提交的文件,不包括新增的文件


git commit # 把暂存区中的文件提交到本地仓库,调用vim文本编辑器输入该次提交的描述信息(可换行)

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

git commit --amend # 将暂存区的内容合并到上一次提交,并可以修改message

git rebase -i commit_id # 以commit_id为基准执行交互式变基

更多修改历史commit记录: 《使用 git rebase 修改历史 commit 里的文件》

4 查看提交记录

sh
git log    # 查看提交历史

git log --oneline # 单行显示提交记录

git log -p <file> # 查看指定文件的提交历史

git blame <file>  # 以列表方式查看指定文件的提交历史

git reflog  # 打印所有的提交记录(所有版本记录,包括回溯了的版本),精简版

当log太多时,按回车键换页显示 正确的退出log显示界面: q-->回车

5 撤销

sh
git reset --hard HEAD    # 撒消工作目录中所有未提交文件的修改内容(撤销没有add的内容)

git reset --hard HEAD^^^ # 回溯到上一个版本【有几个^符号就会回溯几次版本】

git reset --hard <版本号(commit ID)前七> # 回溯到指定版本号的版本

git checkout .    # 撒消工作目录中所有未提交文件的修改内容(撤销没有add的内容)

git checkout HEAD <file> # 撤消指定的未提交文件的修改内容

git revert <commit>      # 撤消指定的提交

6 分支与标签

sh
git branch # 列出本地的所有分支,当前所在分支以 "*" 标出
git branch -a # 查看当前的版本库中有哪些分支

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

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

git branch -M [<原分支名称>] <新的分支名称> # 强制修改分支名称

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

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

git checkout <分支名>  # 切换到已存在的指定分支
git switch <分支名>  # 切换到已存在的指定分支

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

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



git tag                    # 列出所有本地标签

git tag <tagname>          # 基于最新提交创建标签

git tag -d <tagname>       # 删除标签

7 合并

sh
git merge <branch>      # 合并branch到当前分支
git rebase <branch>     # 变基branch到当前分支

8. 远程操作

sh
git remote -v                      # 查看远程仓库信息
git remote show <remote>           # 查看指定远程仓库信息

git remote add <remote> <远程ssh地>  # 添加本地仓库的远程地址 
git remote remove origin  # 移除远端源origin

git fetch <remote>                 # 从远程仓库更新本地仓库

git pull <remote> <branch>         # 拉取远程代码及快速合并
git push <remote> <branch>         # 推送本地代码到远程及快速合并

git push <remote>  --delete <branch/tag-name> # 删除远程分支或标签
git push --tags                     # 上传所有标签
git push -f  # 强推分支

git branch --set-upstream-to=origin/branch  branch # 将本地分支与远程分支关联

9. diff

sh
git diff <commit_id> # 查看commit_id的修改
git diff <commit_id1> <commit_id2> # 查看两次提交之间的差异
git diff --cached/--staged  # 查看暂存区和仓库之间的差异
git diff <branch1> <branch2>  # 查看两分支之间的差异

10. 回滚远端分支代码

  1. 分支操作
sh
# 查看本地分支
git branch
# 查看远程分支
git branch -a

# 同步远端分支
git fetch
# 切换dev分支
git checkout dev   # 或者 # git checkout -b dev origin/dev
  1. 使用 git log 命令查看提交记录(如下图)。黄色部分是提交记录id,找到需要回滚的提交记录id

image.png

  1. 执行 git reset --hard 3b483490bfd5cbc6499a133ce31f063bfc60be54 命令进行回滚。
  2. 执行git push -f命令同步至远程分支。

注意: 在git中,git push -f的意思是“强制更新”,是git push -force的缩写,该命令的作用是将自己本地仓库的代码直接推送至仓库,完全以该命令提交为准,==之前提交都会被覆盖==。

11. 暂存本地提交

stash暂存后信息格式 stash@{index}: WIP on [分支名]: [最近一次的commitID] [最近一次的提交信息]

sh
# 暂存
git stash 
# 或者
git stash save <"stashMessage"> # 可以添加备注信息,尖括号内的是备注信息


# 查看暂存历史
git stash list


# 恢复暂存

方式一(主要用于恢复指定stash)
 # 取出指定index的储藏的恢复到工作区中,不会删除stash记录
  git stash apply stash@{index} 

 # 将指定index的储藏从储藏记录列表中删除
  git stash drop stash@{index}

方式二(推荐)
 # 可取出最近一次储藏的修改到工作区中,并同时将该储藏从储藏记录列表中删除
  git stash pop

git stash list后,效果如下:

image.png