git 常用操作

回退相关操作

工作区

命令 含义
git checkout -- file.txt 丢弃 file.txt 中的修改
git reset --hard 重设暂存区所有文件并且还原工作区所有修改

暂存区

命令 含义
git reset 重设暂存区所有文件
git reset HEAD 撤销最新一次的 add 状态
git reset file.txt file.txt 的放入工作区
git reset --hard 重设暂存区所有文件并且还原工作区所有修改

版本区

  • HEAD => 当前版本
  • HEAD^ => 上一个版本
  • HEAD^^ => 上上一个版本
  • HEAD~100 => 上一100个版本
命令 含义
git revert HEAD 撤销最新一次的 commit ,分支没有改动文件才能执行(存在该commit记录)
git reset <commit> 删除最新一次的 commit 并且重设暂存区所有文件 (不存在该commit版本号)
git reset HEAD~2 将当前分支倒退两个提交(高危操作)
git reset --hard HEAD^ 回退上一个版本

删除文件

命令 含义
rm file.txt 删除文件
git checkout -- file.txt 撤销删除 (未commit之前)
git clean -n 查看那些未被跟踪文件会被移除
git clean -f 移除当前目录下未被跟踪的文件
git clean -df 移除未跟踪的文件以及目录
git clean -f <path> 移除未跟踪的文件,但限制在某个路径下
git clean -xf 移除当前目录下未跟踪的文件,以及 Git 一般忽略的文件

创建与合并分支

命令 含义
git checkout -b dev 创建并且切换到dev分支
git checkout -b hotfix dev 基于dev分支创建一个hotfix分支
git checkout dev 切换到dev分支
git branch 查看所有的分支
git branch -d dev 删除dev分支(当前分支无法自行删除)
git branch -D dev 强制删除分支(用于未合并分支)
git merge dev 将dev分支合并到当前分支

远程仓库的操作

命令 含义
git remote -v 查看远程仓库的详细信息
git remote add remote-name URL 添加远程仓库
git push origin master 将内容提交到远程仓库 origin 的 master 分支上
git remote rm origin 将远程仓库 origin 删除
git remote rename origin pb 将远程仓库 origin 改为 pb
git clone URL 克隆一个远程仓库,这里的URL是远程仓库的地址
git pull origin 将远程仓库中更新的数据拉到本地
git pull origin dev 拉取远程仓库dev分支到本地
git push origin aaa 将 aaa 分支推送到远程仓库
git pull --rebase URL git rebase 代替 git merge 合并本地分支
git push --force 强制推送

git commit

命令 含义
git commit --amend 和上一次 commit 合并,并在该基础上编辑commit信息
git commit --amend --no-edit 和上一次 commit 合并, 不编辑信息
git commit -a -m "some modified" git add -A && git commit -m 'some modified'

git rebase

<base> 是可以使任何类型的提交引用(ID/分支名/标签/HEAD)

参考文档1

参考文档2

  • 什么是 git rebase(变基==改变基线)
    • 变基是将分支移到一个新的基提交的过程, 产生的是一个快速向前的合并以及完美的线性历史
    • rebase 就好像是说「我想将我的更改建立在其他人的进展之上」
    • 绝不要在公共的分支上使用它
  • git rebase <base> => git merge <base> 相似
  • git rebase --continue => 解决冲突后可执行的命令
  • git rebase --abort => 终止rebase的行动,并且所在分支会回到rebase开始前的状态。
  • git rebase -i <base> => 交互式
    • fixup
    • startq
    • squash

git reflog

Git 用引用日志这种机制来记录分支顶端的更新

  • git reflog => 显示本地仓库的引用日志
  • git reflog --relative-date => 用相对的日期显示引用日志
  • git reset --hard 0254ea7 配合使用

注: 引用日志提供的安全网只对提交到本地仓库的更改有效,而且只有移动操作会被记录

其他操作

  • git log --oneline => 简洁的显示 log 记录

报错处理

  • fatal: Unable to create 'project_path/.git/index.lock': File exists.
    • 删除该分支 => rm -f .git/index.lock
  • error: failed to push some refs to <URL>
    • 第一种解决方式:
      • 强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容 => git push -f
    • 第二种解决方式:
      • 这条命令等于合并远程分支,合并完成之后同目录会出现README.md目录 => git pull --rebase origin master
  • fatal: remote origin already exists
    • 先删除远程 Git 仓库 => git remote rm origin
    • 再添加远程 Git 仓库 => git remote add origin <URL>
      • 如果执行 git remote rm origin 还报错的话
      • 我们可以手动修改 gitconfig 文件的内容 => vi .git/config
      • 把 [remote “origin”] 那一行删掉就好了。
  • error: src refspec master does not match any
    • 引起该错误的原因是,目录中没有文件,空目录是不能提交上去的
    • touch README => git add README => git commit -m 'first commit' => git push origin maste
  • git reset --hard 命令导致目录下所有文件全部被清除。
    • 首先用 git reflog 命令查找到对应的sha值,如:cd7b575
    • 通过“git reset --hard cd7b575”
      • 注意:第二步操作有时会报错, 如: fatal: Unable to create 'D:/chenjunjun/.git/index.lock': File exists.
      • 需要手动删除.git目录下的index.lock文件
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容

  • 获取与创建项目 创建仓库的途径有:在本地已有的目录,初始化一个新的;克隆复制一份别人的项目。 git init 在...
    daking阅读 6,568评论 3 48
  • 常用命令: 查看、添加、提交、删除、找回,重置修改文件 git help # 显示command的help gi...
    even_cheng阅读 284评论 0 3
  • 这段时间的忙碌,再一次印证了我的承压能力——在单位还能撑着死磕,出了大门就想泪奔。 好巧不巧地看到咪蒙的推文《职场...
    杨木子js阅读 386评论 0 4
  • 进入第二周,大家是不是开始解读报告了呢? 还记得任博老师教我们的第一句吗?——这份报告很好! 然后如何入手?和大家...
    阳菌阅读 471评论 0 1
  • 今天是艳阳天,就想起家了。家中巴掌大蓝天是让我感到最舒服的。 高三时,不管每次在学校压力多大,内...
    亮亮呀阅读 198评论 0 0