Git 命令汇总

入门配置

用户信息

  • git config –global user.name

    设置自己的用户名

  • git config –global user.email

    设置自己的邮箱

查看配置

  • git config –list

    查看自己 git 的配置信息

设置编辑器

  • git config –global core.editor vim

    当你用 git 编辑文件时,编辑文件的文本编辑器会默认调用 vim

文本着色

  • git config –global color.ui true

    可为大部分 git 的代码布上颜色

基础命令

建立版本库

  • git init

    当前路径文件 初始化为 Git 仓库(可以发现 当前路径增加了.git 文件夹)

  • git init 文件夹名

    新建一个文件夹,并将其初始化为 Git 代码库

文件添加到暂存区

  • git add .

    把当前目录所有未追踪文件,已修改的文件,添加到暂存区 (不包括被删除的文件)

  • git add 文件(夹)名

    把特定文件(夹)添加到暂存区

  • git add -A

    提交所有的文件操作到暂存区

  • git add -u

    提交已修改的文件,被删除的文件(不包括新文件)

  • git add -p

    交互式的缓存提交,会提供多个选项来自定义提交内容、方式

文件添加到本地仓库

  • git commit -m”commit message”

    把暂存区的所有文件添加到本地仓库,-m”提交信息” (越详细越好)

  • git commit 文件(夹)名 -m”commit message”

    把特定文件(夹)添加到本地仓库,-m”提交信息” (越详细越好)

  • git commit -am”commit message”

    针对已经被追踪的文件,可以直接添加到本地仓库,不用先 add 在 commit.

  • git commit –amend -m”commit message”

    利用本次 commit 重写上一次 commit

  • git commit –amend –no-edit

    利用本次 commit 重写上一次 commit 不会重写上次 commit 的提交信息

仓库状态获取

  • git status

    可以立即获取本地仓库状态 以及 git 的步骤提示,建议多使用此命令

版本回退

  • git reset –hard HEAD

    将工作区,暂存区,本地仓库恢复到上一个版本(–hard)

  • git reset –soft HEAD^^^

    将本地仓库恢复到上三个版本,不会修改暂存区,工作区(–soft)

  • git reset –mixd HEAD~5

    将暂存区,本地仓库恢复到上五个版本,不会修改工作区(–mixd,默认)

  • git reset –hard commitID

    将工作区,暂存区,本地仓库恢复到上指定版本 其中 commitID 就是每一次 commit 的版本号,可以使用 git reflog 获取

撤销暂存

  • git reset HEAD file.txt

    撤销 file.txt 的 add 操作,使其变成不跟踪状态

  • git reset HEAD^ file.txt

    将上一次提交版本的 file.txt 重新置入缓存区

撤销工作区

  • git checkout – file.txt

    (只针对未追踪文件)用历史中的 file.txt 替换现有工作区的 file.txt 如果文件增加到暂存区后 又进行了修改,那么执行命令后 将回到暂存区文件状态

  • git checkout HEAD – file.txt

    用最后一次提交版本中的 file.txt 替换现有工作区的 file.txt

  • git checkout commitID – file.txt

    用特定版本的 file.txt 替换现有工作区的 file.txt

撤销提交

  • git revert commitID

    撤销指定版本的 commit,并将此操作生成一个全新的 commit 并提交

文件操作

  • touch

    touch 文件名 : 新建文件

  • mkdir

    mkdir 文件夹名: 新建文件夹

  • vim

    vim 文件名 : 新建文件,并用 vim 模式打开该文件进行编写

  • git init

    git init 文件夹名:新建一个文件夹,并将其初始化为 Git 代码库

  • printf

    printf ‘content’ > 文件名 :新建一个文件,并把 content 注入其内容

  • echo

    echo ‘content’ > 文件名 :新建一个文件,并把 content 注入其内容

  • rm

    rm 文件名 : 删除文件

  • clean

    git clean -f 文件名 :删除未跟踪文件

  • vim

    vim 文件名 : 打开文件,并用 vim 模式进行修改

  • mv

    mv 选定文件名 新的文件名:把选定文件名 修改为 新的文件名

  • printf

    printf ‘content’ > 文件名 : 将 content 替换 文件原有内容

  • echo

    echo ‘content’ > 文件名 : 将 content 替换 文件原有内容

  • pwd

    得到当前路径

  • cd

    cd 路径 :进到某一文件路径 cd .. : 回退文件路径 cd : 回到默认的路径

  • cat

    cat 文件名:查看该文件的内容

  • ls

    查看该目录下的文件列表(不包括隐藏文件)

  • ls -a

    查看该目录下的文件列表(包括隐藏文件)

  • show

    git show: :展示任意分支某一文件的内容

分支操作

查看分支

  • git branch

    列出本地分支

  • git branch -r

    列出远端分支

  • git branch -a

    列出所有分支

  • git branch -v

    查看各个分支最后一个提交对象的信息

  • git branch –merge

    查看已经合并到当前分支的分支

  • git branch –no-merge

    查看为合并到当前分支的分支

  • git remote show origin

    可以查看 remote 地址,远程分支

新建分支

  • git branch name

    新建一个名为 name 的分支

  • git checkout -b name

    新建一个名为 name 的分支,并自动切换为该分支

  • git branch [branch] [commit]

    新建一个分支,指向指定 commit

  • git branch –track [branch] [remote-branch]

    新建一个分支,与指定的远程分支建立追踪关系

删除分支

  • git branch -d name

    删除一个名为 name 的分支

  • git branch -D name

    强制删除一个名为 name 的分支

  • git push :

    删除远程分支

  • git push origin –delete

    删除远程分支

切换分支

  • git checkout name

    切换一个名为 name 的分支

  • git checkout -

    切换上一个分支

重命名分支

  • git branch -m name

    将当前所在分支命名为 name

标签

新建标签

  • git tag [tag]

    新建一个 tag 在当前 commit

  • git tag [tag] [commit]

    新建一个 tag 在指定 commit

  • git tag v0.9 commitID

    对某次提交新建标签

查看标签

  • git tag

    列出所有 tag

删除标签

  • git tag -d [tag]

    删除本地 tag

  • git push origin :refs/tags/

    可以删除一个远程标签

推送标签

  • git push origin –tags

    一次性推送全部尚未推送到远程的本地标签

  • git push origin

    可以推送一个本地标签

远程仓库

  • git remote

    显示所关联的远程仓库

  • git remote -v

    显示更详细信息

  • git remote add origin git@server-name:path/repo-name.git

    关联一个远程库

  • git remote rm name

    删除一个远程库

  • git remote rename

    将远程连接从 重命名为

合并

  • git rebase master

    将 master 分之上超前的提交,变基到当前分支

  • git rebase –interactive

    交互模式,修改 commit

  • git rebase –continue

    处理完冲突继续合并

  • git rebase –skip

    跳过合并

  • git rebase –abort

    取消合并

查看汇总

查看信息

  • git whatchanged –since=’2 weeks ago’

    查看两个星期内的改动

  • git log –follow [file]

    显示某个文件的版本历史

  • git log –author=”John”

    它会显示所有作者叫 John 的提交

  • get log –after=”yesterday”

    查看昨天的历史信息

  • git log -3

    展示最近 3 次历史信息

  • git log –graph

    可以看到分支合并图

修改历史

  • git rebase -i commitID

    将 pick 替换成 r , 然后回车,vi 退出可以使用 :x 修改 git 的历史记录的提交信息

查看文件

  • git diff HEAD – readme.txt

    可以查看工作区和版本库里面最新版本的区别

  • git diff –staged

    显示暂存区(已经 add)的文件和版本库文件的比较

  • git ls-files

    查看在暂存区的文件

删除暂存

  • git rm –cached 文件名

    把文件从暂缓区 返回至 工作区

其他

忽略文件

  • echo node_modules/ >> .gitignore

    添加忽略文件

打包

  • git archive master –format=zip –output=master.zip

    将 Master 分支打包

  • git bundle create

    将历史记录包括分支内容打包到一个文件中

  • git clone repo.bundle -b

    从某个 Bundle 中导入

工作区

  • git stash

    将工作区现场(已跟踪文件)储藏起来

  • git stash list

    查看保存的工作现场

  • git stash apply

    恢复工作现场

  • git stash drop

    删除 stash 内容

  • git stash pop

    恢复的同时直接删除 stash 内容

  • git stash apply stash@{0}

    恢复指定的工作现场

查找内容

  • git grep “Hello”

    从当前目录的所有文件中查找文本内容

  • git grep “Hello” v2.5

    在某一版本中搜索文本

帮助

  • git help -a