Skip to main content

常用Git命令

进阶可看官方文档:git book中文版

git

git init

用于初始化项目为 git 仓库

git remote

其后不跟参数,就会打印出已链接到的远程仓库

git remote add origin

添加或连接到一个远程仓库,并将其命名为 origin ,其后可加 https 地址或 SSH 地址

git status

用于查看本地仓库的文件状态:tracked、untracked、modified、deleted

git add

git add [file] [file2]

git add [dir]

用于添加修改(modified)或未跟踪(untracked)的文件到暂存区。

git add -a

git add -a | git add . | git add --all 用于暂存所有当前目录下未暂存的文件。

git reset

此命令用于取消文件的存储(将其从暂存区去除)。

git commit

此命令用于提交暂存区文件。

git commit -m ""

为提交提供提交消息,如果 git commit 不指定提交信息,那会默认开启 vim ,提示你添加提交信息。

git commit --amend

修改提交信息(无痕) - 输入命令后,会自动打开vim,让你输入。

git push -u origin

此命令用于将提交的文件推送到指定分支中的远程存储库(例如GitHub)。
首次将文件推送到远程存储库时,使用此命令。它将确定您将这些文件推送到的位置。
下次推送文件时,可以直接使用 git push

注意

origin 是在git remote add origin 时赋予该远程仓库的名字!

git push

此命令用于将提交的文件推送到远程存储库。使用上一个命令推送文件后,使用此命令将文件推送到远程存储库。

git fetch

git fetch 命令用于从远程获取代码库。检查远程仓库是否修改,如果修改,就拉取到本地仓库。
该命令执行完后需要执行 git merge 远程分支到你所在的分支,合并所有改变(追上远程仓库进度)。

该命令检查所有新的文件、新的分支以及删除的文件。

git pull

用于从远程获取代码并合并本地的版本。

git pull 其实就是 git fetchgit merge FETCH_HEAD 的简写。

git pull <远程主机名> <远程分支名>:<本地分支名>

# 例子:将远程主机 origin 的 master 分支拉取过来,与本地的 bran 分支合并。
git pull origin master:bran
# 如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

git rm -r --cached

当一个文件已经提交到本地仓库时。后续你再往 .gitignore 添加它,也不会起作用。 怎么解除这种追踪呢? 最常见的做法是直接删除这个文件,流程是:本地删除,提交删除这个commit到仓库。

但这样本地的也会被删除。有时我们只是想删除仓库的副本,可以使用git rm --cached, 意思就是不会在实际上删掉这个文件,只是解除它的追踪关系。
之后再把 需要忽略的文件 添加到 .gitignore 即可

git rm -r --cached test.js

git rm 经常被用来删除工作区和暂存区的文件。它可以携带一个cache参数。
使用rm这个命令时,我们经常会用到-r这个命令。-r是递归的意思,表示删除整个文件夹,包括它的子文件夹。

git branch

查看当前所在的分支

git branch -a

此命令用于预览本地和远程存储库中的所有分支。

git branch -r

此命令用于预览本地存储库中的所有分支(即您已经访问过的分支)。

git branch

创建新分支

git checkout

切换分支

git checkout --track origin/

此命令用于切换分支。这特别适用于您第一次访问分支(在GitHub/远程存储库中创建)时。

git checkout --track origin/develop

git merge

此命令用于将两个分支合并在一起。为此,请输入要继承更改的分支。与此命令一起使用的分支名称是提供更改的分支。

# 分支 master 将要从 develop 分支继承代码(现在位于master分支)
git merge develop

git merge — abort

遇到合并分支失败后,中止合并

git merge -X

此命令用于将两个分支合并在一起。如果存在合并冲突,该命令将假定您更喜欢在提到的分支中所做的更改(而不是当前分支)。

  • 冲突的文件使用其它分支 git merge -Xtheirs <brxxx>
  • 冲突文件使用自己当前分支 git merge -Xours <brxxx>

git reset -hard HEAD

此命令将删除您在本地存储库中所做的所有更改,并将其更新为远程仓库的最新版本。

另外,git reset --hard HEAD^ 表示回退到上一个版本

git clean -f

此命令用于删除本地存储库中未跟踪的文件

git clean -d

此命令用于删除本地存储库中未跟踪的目录。您还可以将它合并到 git clean-fd 中,以实现这两个功能。

git bisect

用于发现在代码中引入错误的提交。它有助于跟踪代码工作的提交和不工作的提交,从而跟踪将错误引入代码的提交。

git diff

Diff命令在git中用于跟踪文件更改之间的差异。

git rebase

如果您在分支上工作,但需要在最新的主分支或发布分支上应用该分支的更改,则重新设置基础尤其有用。

# 在自己的分支feature上开发了一段时间了,准备从主干master(master上有别人开发好的其它功能)上拉一下最新改动
git checkout feature
git rebase master

//这两条命令等价于git rebase master feature

git stash

git stash命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。 这也就是说,stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。 git stash作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中。

  • git stash save 作用等同于git stash,区别是可以加一些注释
  • git stash list
  • git stash pop
  • git stash drop + 名称
  • git stash clear
  • git stash show
  • git stash branch

git reflog

显示可引用的历史版本记录

git log

查看提交日志(从开头到目前位置),后面可以跟着一个参数,指定最新的几个日志。