当前位置: 首页 > news >正文

上海高端建站网站百度网站站长工具

上海高端建站网站,百度网站站长工具,深圳居家办公最新通知,中国制造网属于b2b吗文章目录 简介前置概念.git目录objects目录refs目录HEAD文件 resetreflog 与 reset --hardrevert(撤销指定提交)stashdiff工作区与暂存区差异暂存区与HEAD差异工作区与HEAD差异其他比较 restore、checkout(代码撤回)merge、rebase、cherry-pick 简介 本文将介绍Git几个核心概念…

文章目录

  • 简介
  • 前置概念
    • .git目录
    • objects目录
    • refs目录
    • HEAD文件
  • reset
  • reflog 与 reset --hard
  • revert(撤销指定提交)
  • stash
  • diff
    • 工作区与暂存区差异
    • 暂存区与HEAD差异
    • 工作区与HEAD差异
    • 其他比较
  • restore、checkout(代码撤回)
  • merge、rebase、cherry-pick

简介

本文将介绍Git几个核心概念,和最常用的几个内容操作命令:

  1. reset
  2. diff
  3. restore、checkout
  4. stash
  5. reflog
  6. revert
  7. cherry-pick(merge、rebase)

前置概念

首先我们来看一下几个非常重要的前置概念

.git目录

git目录说明

git init

我们执行上面命令就会生成一个.git目录

git 工作区、暂存区、本地仓库

【工作区】add就到【暂存区】commit就到【本地仓库】

objects目录

git objects目录
objects目录中保存的是add到暂存区和commit到本地仓库的文件

refs目录

git refs目录

HEAD文件

HEAD是一个文本文件,你们内容是HEAD当前指向的分支:

ref: refs/heads/feature-view

reset

我们首先来看一下我们最常用的reset操作。

git reset操作示意图

reset是重置,他重置的是commit

git reset [–soft | --mixed | --hard] HEAD

  1. –mixed:默认参数,撤销commit,所有commit和没有commit的代码放到工作区
  2. –soft:撤销commit,所有commit和没有commit的代码放到暂存区
  3. –hard:撤销commit,丢弃所有commit、工作区、暂存区代码
# head表示当前版本,head^等价于head~1表示回退所有内容到上一个版本
git reset head^# 回退2个版本
git reset head~2# 将tree.txt这个文件的版本到上一个版本
git reset head^ tree.txt# 回退到指定commit,commit-id:4889036387
git reset 4889036387

我们最最常用的reset的2个操作:

  1. 感觉自己的commit有点问题,想重新commit,这个也可以用git commit --amend
  2. 自己push之前有提交,导致push失败,pull之前要reset,这里可以用–soft参数,这样如果没有冲突就不用再add了

reset多个版本的这种操作不建议做,除非没有push到远程仓库,或者只有你一个人在提交代码。

如果修改了远程仓库的commit,通常push是不行的,必须使用git push -f。

git push -f是一个非常危险的操作,会导致push之前,其他人push的新代码丢失

git提示可以使用,是让我们知道自己在干什么,而不是告诉我们git push不行,用git push -f 吧。

一般来说,规范的团队都会把git push -f给禁用掉,不然一个人骚操作,代码丢了,可能啥证据都没有。

reflog 与 reset --hard

如果不小心执行了reset --hard,有机会补救吗?

git reset --hard head~2

答案是还能抢救一下:

首先:

git reflog

git reflog

再使用git reset --hard回退到reset的上一个版本

git reset --hard 8ca4549

commit的内容回来了,但是工作区和暂存区的内容掉了,找不回了

revert(撤销指定提交)

revert是用来将某次的commit的内容,提取出来到工作区。

这样就可以重新编辑,然后再一次提交。

主要使用场景就是:发现自己某一次提交有点问题,但是在这次提交之前已经有其他人提交了,怎么办呢?

可以用revert

# 查看提交记录
git log --oneline
# 撤销指定的提交
git log revert b1c305d

git revert

revert并不会修改指定的commit,只会根据指定commit做逆操作

可以checkout到指定commit,看到内容并没有少:

git checkout -b feature-view b1c305d

revert相当于将指定的commit合并到当前的head,还可能冲突。

所以,通常来说还不说直接改。唯一的作用可能就是记不清楚的commit的内容的时候,可以revert能自动帮你做。

stash

stash最常用的场景2个:

  1. 我们切分支的时候,有时候有修改不能切,就可以stash暂存
  2. pull代码冲突,就可以先stash 再pull
# 默认暂存
git stash# 添加暂存提示信息
git stash save "暂存提示信息"# 查看暂存了哪些内容
git stash list# 查看最上面的暂存修改了哪些文件
git stash show
# 查看第2个暂存修改了哪些文件
git stash show stash@{1}# 查看最上面的暂存修改的具体内容
git stash show -p 
# 查看第2个暂存修改的具体内容
git stash show  stash@{1}  -p# 应用最上面的暂存,不删除
git stash apply
# 应用第2个暂存
git stash apply stash@{1} # 应用最上面暂存,并删除(没有冲突才删除)
git stash pop 
# 应用第2个暂存,并删除(没有冲突才删除)
git stash pop stash@{1}# 删除最上面暂存
git stash drop
# 删除第2个暂存
git stash drop stash@{1}# 删除所有暂存
git stash clear

diff

工作区与暂存区差异

git diff输出信息说明

git diff
git diff b.txt# 暂存区的文件在objects中,可以通过下面的命令查看
git cat-file -p 8fec8c3
# 工作区的对象还没有在objects中,会提示找不到对象
git cat-file -p 04a9f41# 可以通过HEAD查看已经commit的对象
git cat-file -p HEAD:b.txt
git cat-file -p d1d06ad

暂存区与HEAD差异

暂存区(stage)HEAD是当前分支最新的commit

git diff --cached
git diff --cached b.txt

工作区与HEAD差异

HEAD是当前分支最新的commit(通常就是master),也可以使用指定的commit-id

git diff HEAD
git diff HEAD b.txt# 工作区与指定commit的差异
git diff commit-id

其他比较

# 查看两个commit之间的差异
git diff commit-id1 commit-id2# 查看不同分支的文件差异
git diff branch-name1:file-path branch-name2:file-path

restore、checkout(代码撤回)

推荐使用restore,checkout还是让他去切分支吧。

restore是有递进关系:

  1. 可以从暂存区撤回到工作区使用–staged参数(相当于add的逆操作)
  2. 可以直接丢弃工作区的修改
# 丢弃工作区的修改
git restore a.txt
# 等价于
git checkout a.txt
# 丢弃工作区和暂存区所有修改,不能指定文件,指定文件就等价于git checkout filename.txt
git checkout -f# 将暂存区回退到工作区
git restore --staged a.txt

merge、rebase、cherry-pick

merge、rebase、cherry-pick主要是操作commit:

  1. merge合并代码,注意合并解决冲突就可以
  2. rebase,优化commit,注意修改的开始commit之后没有其他人的提交就可以(如果提示需要git push -f时一定要注意)
  3. cherry-pick是从其他分支挑选commit到当前分支

这里我们重点说一下cherry-pick,比如一个任务我已经开发了一段时间了,但是临时需要发一个修复版本,但是修复版本使用了我开发这段时间的代码,这么办呢?

这个时候就可以使用cherry-pick。

git cherry-pick说明
如果有冲突,先解决冲突:
git 解决冲突
继续cherry-pick:
git cherry-pick continue

# 首先切到指定分支
git checkout b1
# 查看需要pick哪些提交
git log --oneline# 切回到pick分支
git checkout master# cherry-pick指定的commit
git cherry-pick 1f54b01 0fed6dd# 如果有冲突手动解决冲突,然后add
git add .# 继续cherry-pick处理commit信息
git cherry-pick --continue
http://www.khdw.cn/news/60360.html

相关文章:

  • 张家港做政府网站的公司国外b站推广网站
  • 安徽有几家做网站天津网络关键词排名
  • 基于网站的网络营销方法有哪些新站seo竞价
  • 网站建设哪家服务好网页制作成品模板网站
  • 延安免费做网站公司国内做seo最好公司
  • 网站上广告动图是怎么做的百度投放广告一天多少钱
  • 网站如何做百度搜索优化网络营销专业学校排名
  • 设计网站公司多少钱站长工具搜索
  • 不断推进门户网站建设2021近期时事新闻热点事件简短
  • 烟台建设银行网站投放广告的渠道有哪些
  • 上海大公司seo外包
  • 网站托管运营所需资料排名优化关键词
  • 做网站做app什么专业最新实时新闻
  • frontpage制作个人网站 技巧公司网站建设开发
  • 投票网站怎么做站长工具ip地址查询
  • 网页搜索快捷键西安seo霸屏
  • 适应移动端网站模板网站设计公司官网
  • 营销网站建设解决方案百度竞价推广后台
  • 泰州企业自助建站系统营销的主要目的有哪些
  • 网站建设难点和重点怎样注册网站免费注册
  • 建设app下载官网旺道seo营销软件
  • 做兼职写小说网站网站怎么优化seo
  • 男女一起做暖暖网站谷歌推广方案
  • 铜陵app网站做招聘搜索推广营销
  • 沈阳世纪兴网站制作百度免费注册
  • 建设银行网站怎么能转账北京建站工作室
  • 淘宝入驻网站建设seo查询百科
  • wordpress产品展示主题seo入门到精通
  • 免费b站推广入口20232022新闻热点10条
  • 没有网站可以做百度排名吗安卓优化大师手机版下载