Git常见命令大全

示意图

在这里插入图片描述


仓库


// 将当前目录初始化为git仓库
$ git init

// 新建一个目录,初始化为git仓库
$ git init [project-name]

// 下载项目及代码历史
$ git clone [url]

// 克隆远程仓库,同时自定义本地仓库名称
$ git clone [url] [my-project-name]

配置


// 显示当前配置
$ git config --list

// 编辑git配置文件
$ git config -e --global

// 设置代码提交时的用户信息
$ git config --global user.name "username"
$ git config --global user.email "email"


忽略文件

文件.gitignore格式规范:

  • 所有空行或者以 # 开头的行都会被 Git 忽略。
  • 可以使用标准的 glob 模式匹配,它会递归地应用在整个工作区中。
  • 匹配模式可以以(/)开头防止递归
  • 匹配模式可以以(/)结尾指定目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反。

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。 星号(*)匹配零个或多个任意字符;[abc] 匹配
任何一个列在方括号中的字符 (这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c); 问号(?)只
匹配一个任意字符;如果在方括号中使用短划线分隔两个字符, 表示所有在这两个字符范围内的都可以匹配
(比如 [0-9] 表示匹配所有 0 到 9 的数字)。 使用两个星号()表示匹配任意中间目录,比如 a//z 可以
匹配 a/z 、 a/b/z 或 a/b/c/z 等。

我们再看一个 .gitignore 文件的例子:


# 忽略所有的 .a 文件
*.a

# 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a

# 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
/TODO

# 忽略任何目录下名为 build 的文件夹
build/

# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt

# 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf

stash暂存

# 保存当前工作区与暂存区的状态,将修改内容保存到git栈
# 可以多次添加,会生成编号,stash@{num}
git stash

# 暂存修改内容并添加注释,方便查找
git stash save '注释'

# 默认将最近一次的修改内容恢复,同时栈中删除当前修改信息
git stash pop

# 查看stash的所有内容
git stash list

检查文件状态

# 查看当前工作区的文件状态,比如有些文件被修改,有些文件被添加,等等
$ git status

# 得到更为简洁的状态信息
$ git status --short
$ git status -s

# 查看更详细的内容修改
$ git status -v

# 查看尚未暂存的改动
$ git diff

# 查看已暂存需要添加到下次提交的内容,下面两条命令作用相同
$ git diff --staged
$ git diff --cached


添加


// 添加当前目录下所有修改的文件
$ git add .

// 添加当前目录下某个文件 或多个文件(空格隔开)
$ git add [file1] [file2] [file3]

// 添加当前目录下 某个目录(包括其下的子目录)
$ git add [dir]

// 添加某个目录下的目录或文件,可以进入该目录操作,方法同上


提交

# 提交更改
$ git commit -m '提交信息'

# add 和commit放在一起执行
$ git commit -am '提交信息'
$ git commit -a -m '提交信息'

# 查看提交历史
$ git log

# 查看提交简略信息
$ git log --stat

# 按补丁格式显示每次提交引入差异
$ git log --patch
$ git log -p

# 查看最近n次提交信息,可配合其他命令使用
# eg:git log -2
$ git log -n

# 在日志旁以ASCII图形显示分支与合并历史
$ git log --graph

# 一行显示提交信息
$ git log --oneline

删除(待补充)


// 删除工作区当前目录文件,并将这次删除放到暂存区
$ git rm [file1] [file2]

// 改名文件,并将这个改名放入暂存区
$ git mv [file-origin] [file-renamed]


查看提交历史

# 查看所有提交日志,按时间倒序排列
$ git log

# 以补丁的格式输出最近两条日志
# -<n>表示最近的n条提交
$ git -p -2
$ git --patch -2

# 查看提交的简略信息
$ git log --stat 

# 在日志旁以ASCII图形显示分支与合并历史
$ git log --graph

# 查看最近两周内的所有提交
git log --since=2.weeks


分支


// 列出本地所有分支
$ git branch

// 列出远程所有分支
$ git branch -r

// 列出所有分支
$ git branch -a

// 新建一个分支,停留在当前分支
$ git branch [branch]

// 新建一个分支并切换到该分支
$ git checkout -b [branch]

// 切换到指定分支,并更新工作区
$ git checkout [branch]

// 切换到上一个分支
$ git checkout -

// 建立追踪关系,在当前分支在指定的远程分支之间
$ git branch --set-upstream=origin/dev dev

// 合并指定分支到当前分支
$ git merge [branch]

// 合并分支有冲突,取消合并
$ git merge --abort

// 删除本地分支
git branch -d [branch]

// 删除远程分支
$ git push origin --D [branch]
$ git push origin --delete [branch]
$ git branch -dr [remote/branch]

// 推送一个本地的空分支到远程分支,相当于删除远程分支
$ git push origin :dev

// 新建远程分支
$ git checkout -b dev
$ git branch -a
// git push [主机名] [本地分支]:[远程分支]
// 远程分支名和本地分支名一致可省略
$ git push origin dev
$ git push origin dev:dev

// --set-upstream(-u)选项会与远程分支建立追踪关系,下次修改代码可以直接push
$ git push --set-upstream origin dev
$ git push -u origin dev


撤销

// 恢复暂存区的指定文件到工作区
$ git checkout [file]

// 将暂存区的文件恢复到工作区
$ git reset HEAD [file]

// 回退到上个版本,并提交到远程仓库
$ git reset --hard HEAD^
$ git push -f(--force) origin dev

// 取消上次提交,返回到Index, ^和~的区别待研究
$ git reset --soft HEAD^
$ git reset --soft HEAD~

// 取消上次提交,返回workspace(本地代码保留)
// --mixed为默认参数可省略
$ git reset HEAD^ 
$ git reset HEAD^ --mixed
$ git reset -q HEAD -- .

更新分支信息

// 查看分支信息
$ git remote show origin

// 剪除远程仓库已删除,还遗留的远程分支
$ git remote prune origin
// 本地分支直接删除即可

PS:文章参考来自Git官方文档-.-!


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值