常用git指令

git branch

  • 不带参数:列出所有本地分支,并且在当前分支的前面用"*"标记
    git branch
  • 列出所有远端分支
    git branch -r
  • 列出所有分支(本地和远端)
    git branch -a
  • 创建新分支
    git branch myNewBranch
  • 删除分支
    git branch -d myBranch
  • 查看本地分支对应的远程分支
    git branch -vv
  • 给分支重命名
    git branch -m oldName newNamegit push origin HEAD将新分支推送到远端

git checkout

  • 1.操作分支
    • 切换分支到master
      git checkout master
    • 创建hotfix分支并切换到hotfix分支
      git checkout -b hotfix(相当于git branch hotfix + git checkout hotfix)
  • 2.操作文件
    • 放弃未暂存区单个文件的修改
      git checkout filename
    • 放弃未暂存区当前目录下的修改
      git checkout .

git reset

  • 回退一个版本,且会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(未提交的也
    不受影响)
    git reset (–mixed) HEAD~1
  • 回退一个版本,不清空暂存区,将已提交的内容恢复到暂存区,不影响原来本地的文件(未提交的也不受影响)
    git reset –soft HEAD~1
  • 回退一个版本,清空暂存区,将已提交的内容的版本恢复到本地,本地的文件也将被恢复的版本替换
    git reset –hard HEAD~1 (git reset --hard(未跟踪的文件删除不掉)和git clean -df用来清除未跟踪的文件和目录,是一对好基友. 结合使用他们能让你的工作目录完全回退到最近一次commit的时候)

参考链接:https://www.cnblogs.com/instona/p/4243009.html

git tag

  • 1.列出当前已有的tag:
    git tag
v1.0.3
v1.0.4-201703081020
v1.0.5-201704141453
v1.0.6-201704151447
v2.3.1
    1. 列出要查看的tag匹配,可以
      git tag -l v1.0.*
v1.0.3
v1.0.4-201703081020
v1.0.5-201704141453
v1.0.6-201704151447
    1. 打tag:
      git tag -a v2.3.2 -m '新上线内容说明'
    1. 提交到远端:
      git push origin v2.3.2

git add

  • git add -A 提交所有变化
  • git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
  • git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件


    git_version_1.0.jpg

    git_version_2.0.jpg

参考文章:https://www.jianshu.com/p/65fb3fa62057

git status

查看文件状态

git diff

1) 工作区和暂存区比较
git diff
2)暂存区和HEAD比较
git diff --cached
3)工作区和HEAD比较
git diff HEAD
参考链接:https://www.cnblogs.com/lianghe01/p/5846525.html

git commit

  • git commit -m "message"
  • git commit -a -m “message” 相当于git add -u + git commit -m "message"
  • 对上次提交不满意,继续修改生成一个新的commit替换上次的commit,也可以不加-m 参数 ,会弹出个框让编辑上次message,不修改代表直接使用上次的message
    git commit -amend -m "message"
    `

原文链接:https://blog.csdn.net/qianxuedegushi/article/details/80311358

git rebase

rebase之前需要保证工作区没有changes,否则会报如下错误

error: cannot rebase: Your index contains uncommitted changes.
error: Please commit or stash them.
  • 1.rebase和merge区别

下图是各个分支所处的情况


current.png

git merge

git checkout mywork
git merge origin
merge.jpg

git rebase

git checkout mywork
git rebase origin
rebase1.jpg
rebase2.jpg

rebase用于合并时小结

git rebase 会先找到myworkorigin分支的共同祖先,然后将mywork分支共同祖先之后的commit保存为补丁,然后将当前分支代码更新带origin最新代码,然后在应用刚才保存的补丁

  • rebase和merge优缺点对比

1.rebase可以保证commit线性,但是会打乱时间的排序,不产生新的commit,如果有冲突需要再解决完冲突后 git add . 然后git rebase --continue继续或者git rebase --abort恢复或者git rebase --skip跳过,即使冲突也不会产生新commit,解决冲突的变动会在之前提交的commit里发生变化
2.merge会产生一个新的merge commit,commit结构由于不是线性看起来不是很友好,解决冲突,git add . ,git commit -m message

原文链接:http://gitbook.liuhui998.com/4_2.html

2.rebase用于调整commit

代表调整最近4次提交,会出现交互界面 esc : wq后即可执行
git rebase -i HEAD~4 
ji
  • 场景1 将后三次提交合并到第一次提交中,则改成如下(注意)
p f0ff319 第一次提交
s 2a1aa7c 第二次提交
s c9cc729 第三次提交
s 566e84e 第四次提交

修改每个commit id前面的pick值。如果改成squash则代表将此项合并到上个commit里,注意在现实的列表里,第一个commit不能用squash因为他已经是第一个了所以不能合并到上一个

  • 场景2 将第三次提交合并到第二次提交上
p f0ff319 第一次提交
p 2a1aa7c 第二次提交
s c9cc729 第三次提交
p 566e84e 第四次提交
  • 场景3 修改第二次提交的commit message但是文件改变不变
p f0ff319 第一次提交
r 2a1aa7c 第二次提交
p c9cc729 第三次提交
p 566e84e 第四次提交
  • 场景4 修改第二次提交的文件变动,但是message仍然使用之前的message
p f0ff319 第一次提交
e 2a1aa7c 第二次提交
p c9cc729 第三次提交
p 566e84e 第四次提交
  • 场景5 删除第二次提交
p f0ff319 第一次提交
d 2a1aa7c 第二次提交
p c9cc729 第三次提交
p 566e84e 第四次提交

git pull

git pull = git fetch + git merge fetch_header
git pull --rebase = git fetch + git rebase fetch_header

git push

git push时如果远端有改动,则会因为本地版本和远端版本不同报reject错误,所以每次push时不管有无变动都最好先pull

所以当远端有变动的时候产生了以下2种场景

  • 场景1:提交完代码 ,pull代码如果远端有更新 ,还会产生一个merge commit,或者使用rebase 就不会有新的commit ,然后push
  • 场景2:在提交之前,先pull,如果没有改动相同的文件,则pull不会报错,然后commit -> push一个完整的正常流程,如果在pull时远端有和你共同改动的文件,pull就会报错提示你本地的修改会被远端覆盖(因为pull就是fetch+merge)
  • 场景2 有相同改动时报错解决方法

解决方法1:此时可以采用场景1的方式先commit在pull,然后push
解决方法2:贮藏(git stash),然后在pull,git stash apply,git push

git stash

  • 查看贮藏列表
    git stash list
  • 应用最近一次贮藏
    git stash apply
  • 应用指定贮藏(具体指定那个可以使用git stash list查看)
    git stash apply stash@{2}

推荐一个学习git的小游戏

https://learngitbranching.js.org/

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

推荐阅读更多精彩内容

  • 一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。 下面是我整理的常用...
    Wey的小窝阅读 124评论 0 1
  • 配置 首先是配置帐号信息ssh -T git@github.com # 登陆 github 修改项目中的个人信息 ...
    guanguans阅读 718评论 0 3
  • git 使用笔记 git原理: 文件(blob)对象,树(tree)对象,提交(commit)对象 tree对象 ...
    神刀阅读 3,756评论 0 10
  • git clone git remote add upstream http://... git checkout...
    good__day阅读 431评论 0 4
  • 曾梦想仗剑走天涯 看一看世界的繁华 年少的心总有些轻狂 如今你四海为家 曾让你心疼的姑娘 如今已悄然无踪影 爱情总...
    memore阅读 283评论 0 0