git命令大合集

最常用的命令及解释

$ git add
         # 将工作区的修改提交到暂存区
$ git commit
         # 将暂存区的修改提交到当前分支
$ git reset
        # 回退到某一个版本
$ git stash
        # 保存某次修改
$ git pull 
        # 从远程更新代码
$ git push 
        # 将本地代码更新到远程分支上
$ git reflog
        # 查看历史命令
$ git status
        # 查看当前仓库的状态
$ git diff
        # 查看修改
$ git log 
        # 查看提交历史
$ git revert 
        # 回退某个修改

一次完整的代码提交

// 适用于多人协同工作时,可能会操作同一文件夹,出现冲突的情况
$ git add -A
$ git commit -m "message"
$ git pull --rebase (或者git fetch + git rebase)
# 解决冲突
$ git add 冲突文件
$ git rebase –continue
$ git push
// 其中,3、4、5点,如果没遇到冲突就不用进行,直接push上去。
// 当遇到冲突时,git会提示patch failed,并要我们解决问题了再执行git rebase --continue

命令详解

git init

本地初始化一个git仓库

 # 初始化一个git仓库,在当前目录下生存一个 **.git** 的目录
 $ git init

git clone

从远程克隆一个仓库到本地

# 从远程仓库克隆一个项目
$ git clone <远程仓库地址>

# 从远程仓库克隆一个项目,并重新命名为MyProject
$ git clone <远程仓库地址> MyProject

# 从远程仓库克隆一个项目到指定目录
$ git clone <远程仓库地址> <目标目录>

git status

查看本地仓库的状态

# 查看当前仓库的状态
$ git status

git add

将要提交的文件添加到暂存区中

# 添加指定的文件
$ git add <文件路径>

#添加多个指定文件
$ git add <文件路径> <文件路径> <文件路径>...

# 添加所有已修改过的文件(包括修改、删除、新增的文件)
$ git add -A
$ git add --all
$ git add .

git commit

将暂存区中的文件提交到本地仓库中

# 将暂存区中的文件提交到本地仓库并添加提交说明
$ git commit -m '提交说明'

# 修改上次提交的提交说明
$ git commit --amend

git push

将本地仓库的更新推送到远程仓库

# 把本地分支推送到远程指定分支
$ git push <远程仓库别名> <本地分支名>:<远程分支名>
eg:git push origin master 将本地的master分支推送到origin主机的master分支。如果master不存在,则会被新建。

# 删除远程分支
$ git push <远程仓库别名> :<远程分支名>
// 相当于推送了一个空的本地分支到远程,等同于:
$ git push <远程仓库别名> --delete <远程分支名>

git pull

从远程拉取最新的代码并合并到本地分支

# 从远程拉取最新的代码
$ git pull

# 拉取远程某个分支的更新,再与本地的指定分支合并
$ git pull <远程仓库别名> <远程分支名>:<本地分支名>

# 如果远程分支要与当前分支合并,则冒号后面的部分可以省略
$ git pull <远程仓库别名> <远程分支名>

// git pull =git fetch+git merge
// git pull --rebase = git fetch + git rebase
// git pull  命令相当于是从远程拉取了代码(git fetch),并且合并到了一个本地的分支(git merge
// 如果使用--rebase 则代表使用git rebase代替git merge

git fetch

从远程仓库获取最新的版本到本地分支上

#  将远程仓库所有分支的最新版本全部取回到本地
$ git fetch <远程仓库的别名>

# 将远程仓库指定分支的最新版本取回到本地
$ git fetch <远程主机名> <分支名>

git merge

合并分支

# 把指定的分支合并到当前所在的分支下
$ git merge <分支名称>

git log

查看提交记录

# 查看所有的提交记录
$ git log

# 查看最新的指定数量的提交记录
$ git log -<数量>

git stash

将当前未提交的所有操作保存起来

# 将当前未提交的所有操作保存
$ git stash

# 将最新的一个缓存恢复到工作目录
$ git stash pop

# 查看所有的缓存列表
$ git stash list

git checkout

git checkout 可以用于操作分支也可用于操作文件

// git checkout 操作分支
# 切换到已存在的指定分支
$ git checkout <分支名>

# 创建并切换到指定的分支,保留所有的提交记录
$ git checkout -b <分支名>

// git checkout 操作文件
# 放弃本地文件的修改,新增的文件和已经添加到暂存区的内容不受影响

$ git checkout <文件路径>

# 放弃本地所有的文件修改
$ git checkout --hard HEAD

git branch

对分支的操作命令

# 查看本地的所有分支,当前所在分支以 "*" 标出
$ git branch

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

# 查看所有本地、远程分支,当前所在分支以 "*" 标出
$ git branc -r

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

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

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

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

git diff

比较版本间的差异

# 比较当前文件与暂存区文件的区别,显示没有暂存的修改
$ git diff

# 比较暂存区中文件和上次提交的文件的区别
$ git diff --cached
$ git diff --staged

# 比较当前文件和上次提交文件的区别
$ git diff HEAD

# 查看从指定版本之后改动的内容
$ git diff <版本号>

# 比较两个分支之间的差异
$ git diff <分支名称> <分支名称>

git reset

版本回退

# 回退版本,一个^代表一个版本,可以有多个,
$ git reset HEAD^
$ git reset HEAD~n

# 回退到指定的版本
$ git reset <版本号>

# 将 HEAD 的指向改变,撤销到指定的提交记录,文件也修改了
$ git reset --hard <版本号>

# 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改
$ git reset --soft <commit ID>

git tag

操作标签

# 查看所有的标签
$ git tag

# 切换到指定标签
$ git checkout <标签名>

# 查看标签的信息
$ git show <标签名称>

# 删除指定的标签
$ git tag -d <标签名称>

# 将指定的标签提交到远程仓库
$ git push <远程仓库的别名> <标签名称>

# 将本地所有的标签全部提交到远程仓库
$ git push <远程仓库的别名> -tags

git rm

删除操作

# 删除指定文件,并从本地仓库的文件夹中删除
$ git rm <文件路径>

# 移除跟踪指定的文件,在本地仓库的文件夹中保留该文件
$ git rm --cached

git mv

重命名操作

# 重命名指定的文件或者文件夹
$ git mv <源文件/文件夹> <目标文件/文件夹>

git reflog

查看所有分支的所有操作记录

#  如果回退到某个版本后又要再次回到之前的版本,就可以使用git reflog,查看所有的提交记录
#  包括已经删除的commit记录(git log不能查看已经删除的commit记录)
$ git reflog

git revert

生成一个新的提交来撤销某次提交,此次提交之前的所有提交都会被保留。

# 生成一个新的提交来撤销某次提交
$ git revert <版本号>

git remote

操作远程仓库。

# 列出已经存在的远程仓库
$ git remote

# 添加远程仓库
$ git remote add <远程仓库的别名> <远程仓库的URL地址>

# 修改远程仓库的别名
$ git remote rename <原远程仓库的别名> <新的别名>

# 删除指定名称的远程仓库
$ git remote remove <远程仓库的别名>

# 修改远程仓库的 URL 地址
$ git remote set-url <远程仓库的别名> <新的远程仓库URL地址>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342