Git 速查表
136

Git速查表

最简单的版本控制工具

git命令大致分为这几个模块

序号 模块 功能
1 CREATE 关于创建的
2 LOCAL CHANGES 关于本地改动方面的
3 COMMIT HISTORY 关于提交历史的
4 BRANCHES & TAGS 关于分支和标签类的
5 UPDATE & PUBLISH 关于更新和发布的
6 MERGE & REBASE 关于分支合并类的
7 UNDO 关于撤销类的
8 SUBMODULE 关于子模块

CREATE

从远程仓库获取代码

$ git clone ssh://user@domain.com/repo.git

初始化本地仓库

$ git init

LOCAL CHANGES

查看仓库的状态,(显示已改动的文件)

$ git status

比较工作区与最新本地版本库

$ git diff 
$ git diff <fileName>

添加所有变化(新增 new、修改 modified、删除 deleted)到暂存区

$ git add -A 

添加所有变化(新增 new、修改 modified)到暂存区,不包括被删除(deleted)文件

$ git add .

添加修改(modified)和被删除(deleted)文件,不包括新文件(new)也就是不是被追踪文件(untracked)

$ git add -u

添加文件内某些改动到暂存区

$ git add -p <file>

提交所有的放在暂存区的文件和已经修改(不在暂存区)的文件,且问件是要被追踪(tracked)的

$ git commit -a

提交所有被在暂存区的问件

$ git commit

修改上一次提交日志

$ git commit --amend

COMMIT HISTORY

查看提交日志

$ git log

跟踪查看某个文件的历史修改记录

$ git log -p <file>

查看文件是谁什么时候修改什么地方

$ git blame <file>

BRANCHES & TAGS

查看所有分支(包括远程分支)

$ git branch -a

查看所有分支(包括远程分支)和最后一次提交日志

$ git branch -av

切换分支

$ git checkout <branch>

新建分支,不带old-branch为默认在当前分支上建立新分支

$ git branch <new-branch> <old-branch>

新建并且换分支

$ git checkout -b <new-branch>

删除分支,先切换其他分支再删除

$ git branch -d  <branch>

删除远程分支

$ git push origin --delete <branch>

查看标签

$ git tag

新建标签

$ git tag <tag-name>

删除标签

$ git tag -d <tag-name>

推送标签到远程

$ git push origin tagname
$ git push origin --tags

UPDATE & PUBLISH

列出所有的仓库地址

$ git remote -v

查看某个仓库的信息

$ git remote show <remote>

添加仓库地址

$ git remote add <shortname> <url>

从远程更新代码到本地但不合并

$ git fetch <remote>

从远程更新代码到本地且合并

$ git pull <remote> <branch>

发布到远程地址

$ git push <remote> <branch>

删除远程地址分支

$ git branch -dr <remote/branch>

上传标签

$ git push --tags

MERGE & REBASE

合并目标分支到本地分支

$ git merge <branch>

合并分支,但是不合并提交记录(commit),rebase合并如果有冲突则一个一个文件的去合并解决冲突

$ git rebase <branch>

合并终止

$ git rebase --abort

继续合并

$ git rebase --continue

使用配置的合并工具来解决冲突

$ git mergetool

添加已手动合并的文件

$ git add <resolved-file>

删除已手动合并的文件

$ git rm <resolved-file>

UNDO

回退到最近一个提交

$ git reset --hard HEAD

回退到上一次提交(倒数第二次)

$ git reset --hard HEAD^

回退某次提交的某个文件

$ git checkout HEAD <file>

回退到某个提交,但是不删除commit

$ git revert <commit>

彻底回退到某个提交(commit和代码都回退了)

$ git reset --hard <commit>

回退到某个提交(commit回退,代码保留)

$ git reset <commit>

回退到某个提交,并保留以更改的文件

$ git reset --keep <commit>

SUBMODULE

添加子模块

$ git submodule add https://github.com/xxxxxx/Test

克隆你有子模块的项目

// 方法一
$ git clone https://github.com/xxxxxx/MainProject    
$ cd MainProject                //  子模块目录Test没有文件
$ cd Test
$ git submodule init
$ git submodule update     // 执行完后就有子模块的代码了

//方法二
// 自动更新子模块中的代码
$ git clone --recurse-submodules https://github.com/xxxxxx/MainProject

合并两个不同的项目

// 需使用 `--allow-unrelated-histories`
// 将远程master项目合并到你本地项目
$ git pull origin master --allow-unrelated-histories
本帖已被设为精华帖!
本帖由系统于 6个月前 自动加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 6

有几个还从来没用过 学习了

6个月前

@redrain 一起学习,欢迎指正 ^_^

6个月前
不忘初心

@SHINN 这篇文章很简洁,相比较我之前写的感觉更像个人的学习笔记了
https://laravel-china.org/topics/3849/the-base-and-example-of-the-use-of-git

6个月前

@不忘初心 这个就是为了方便查询,我写的也有些小问题,阅读起来还是有些吃力

6个月前
CismonX

建议补充一些有关git submodule的常用命令。我曾经参与过的一个项目就使用了submodule,刚开始弄的时候一头雾水。

6个月前

这个笔记比较全了~感谢

6个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!