git从入门到放弃

yealxxy yealxxy     2022-12-03     701

关键词:

git重要命令

一、本地操作

主要操作:

  • git branch 分支:分支管理,创建分支
  • git checkout 分支:切换分支
  • git checkout – 文件:放弃修改文件,.放弃所有文件

  • git merge 分支:合并分支,在 Git 中合并两个分支时会产生一个特殊的提交记录,它有两个父节点。翻译成自然语言相当于:“我要把这两个父节点本身及它们所有的祖先都包含进来。”
  • git rebase 分支:Rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。Rebase 的优势就是可以创造更线性的提交历史。

  • 提交树概念:HEAD 是一个对当前检出记录的符号引用 —— 也就是指向你正在其基础上进行工作的提交记录。HEAD 总是指向当前分支上最近一次提交记录。可以通过git checkout切换到每个提交记录。
  • 分离head:分离的 HEAD 就是让其指向了某个具体的提交记录而不是分支名。常见是这种形式:HEAD -> master -> C1
  • git checkout 提交(hash值):分离的 HEAD 就是让其指向了某个具体的提交记录而不是分支名,切换到具体的某一个提交记录。
  • ^相对引用:使用相对引用的话,你就可以从一个易于记忆的地方(比如 bugFix 分支或 HEAD)开始计算。使用 ^ 向上移动 1 个提交记录;使用 ~ 向上移动多个提交记录,如 ~3。(可以支持链式操作,^可以在父亲上进行选择)
  • git checkout master^:master的第一个父节点,还可以使用master ^ ^,master~3等等。
  • git branch -f master HEAD~3:使用相对引用最多的就是移动分支。可以直接使用 -f 选项让分支指向另一个提交。
  • git reset HEAD~1:git reset 向上移动分支,原来指向的提交记录就跟从来没有提交过一样。
  • git revert HEAD~1: 创建一个新的提交覆盖掉已经修改的部分。

  • 自由修改提交树
  • git cherry-pick <提交号>…抓取提交:将一些提交复制到当前所在的位置(HEAD)下面的话, Cherry-pick 是最直接的方式了。
  • cheryy-pick比价适合知道hash值,如果不知道的话用交互式rebase:然后对于每个提交进行操作,在vim的文件中操作。

  • 技巧
  • 提交一个记录:在测试分支上选择想要的提交进入主分支,cherry-pick
  • 修改中间的提交记录:git rebase -i 将提交重新排序,commit --amend 来进行一些小修改,git rebase -i 来将他们调回原来的顺序,最后我们把 master 移到修改的最前端。
  • 修改中间的提交记录: git checkout master,git cherry-pick 需要修改的提交,git commit --amend,git cherry-pick其他需要的提交

  • 标签和描述
  • 标签git tag v1 c1:可以永远指向某个提交记录的标识呢,比如软件发布新的大版本,或者是修正一些重要的 Bug 或是增加了某些新特性,比分支更好的可以永远指向这些提交的方法。
  • 描述离你最近的锚点(也就是标签): __g

1,git commit --amend:修改

  • 作用:通过创建一个新的提交替换当前分支的提示
  • 重复提交时候可以当做一次提交

2,git rebase:变基

  • 作用一:合并分支:这个合并与git merge不同。merge后git提交的历史会变成多条,rebase会使得提交历史比较干净;作用方向也不同,git merge other 是当前分支主动去合并其他分支,git rebase target是将当前分支改变分支到目标;后续合并操作的方向也不同。
  • 作用二:提交清理。当提交很多东西后,不利于code review ,可以用git rebase -i HEAD~4合并4个提交。

3,git checkout:检出

  • 作用一:切换分支,git checkout other分支
  • 作用二:分离head:切换提交位置,git checkout 提交id(关联.git/HEAD文件)

4,撤销提交

  • 方法一:本地撤销,git reset HEAD^,回到上一个提交
  • 方法二:远端撤销,git revert HEAD^,采用一个新的提交覆盖当前的提交

5,git branch -f master head~3

  • 作用:强制修改分支位置,强制将分支指向head的前三个提交

6,git cherry-pick 提交:

  • 作用:整理提交,选择想要的commit到当前的分支
  • 与git rebase -i head^很像,但是原理不同,rebase是交互式提交,更改信息,这个是抓取提交。

7,git tag tagname commit

  • 作用:给commit设置一个标签名。
  • 标签:它们并不会随着新的提交而移动,用来表示一个特定的位置,一般是一个里程碑的进步。
  • 可以通过标签访问提交的版本。

8,git describe

  • 作用:描述离你最近的锚点(也就是标签)
  • 帮你在提交历史中移动了多次以后找到方向
  • 返回:__g,标签名,距离多少commit,指定提交的值

9 当使用git merge时会合并几个commit,这个时候会有多个父亲,使用git checkout head^2

  • 作用:选择哪一个父亲
  • 相对引用:^选择哪一个父亲,~选择前面第几个提交。

二、远端操作

1,远程分支与本地分支的不同

  • 远程分支:o/master,检出时自动进入分离 HEAD 状态,因为不能直接在这些分支上进行操作。
  • 在本地分支提交会直接作用。

2,git fetch:获取(单纯的下载数据)

  • 作用:从远程仓库下载本地仓库中缺失的提交记录
  • 作用:更新远程分支指针(如 o/master)
  • 注意:并不会改变你本地仓库的状态。它不会更新你的 master 分支,也不会修改你磁盘上的文件。

3,git pull:抓取数据并合并

  • 作用:抓取数据,并进行合并
  • 等价于:get fetch,git cherry-pick o/master;git rebase o/master;git merge o/master

4,git push:上传并合并

  • 作用:负责将你的变更上传到指定的远程仓库,并在远程仓库上合并你的新提交记录。
  • 所有分支都将会更新。

5,如何完成一次正常的push

  • 简单方式:git fetch;git rebase o/master;git push
  • 其他方式:git fetch;git merge o/master;git push
  • 直接方式:git pull;git push

6, 远程追踪

  • 方式一:创建一个本地分支,关联到远程的分支:git checkout -b foo o/master
  • 方式二:git branch -u o/master 本地分支

7,git push origin master:git push

  • 作用:切到本地仓库中的“master”分支,获取所有的提交,再到远程仓库“origin”中找到“master”分支,将远程仓库中没有的提交记录都添加上去。
  • 同时指定了提交记录的来源和去向,与当前位置一点关系都没有了。
  • 本地与目的地不同名:git push origin :

8,git fetch参数

  • 形式一:git fetch origin foo
  • 形式二:git fetch origin foo~:bar

9,删除远端分支

  • git push origin :foo(target)
  • git fetch origin :foo(target)与之不同,会在本地创建新的分支

10,命令分解:

  • git pull origin foo : git fetch origin foo; git merge o/foo
  • git pull origin bar~1:bugFix : git fetch origin bar~1:bugFix; git merge bugFix

git入门到放弃(代码片段)

git基础入门Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。git的安装下载地址注意:不要安装在中文目录... 查看详情

《java从入门到放弃》文章目录

...,等相关内容都写完后,再按学习顺序来整理。《Java从入门到放弃》入门篇:XMLHttpRequest的基本用法《Java从入门到放弃》入门篇:Struts2的基本访问方《Java从入门到放弃》入门篇:Struts2的基本访 查看详情

java从入门到放弃

 (1)Java入门变量与注释 用户输入if语句java中的循环while 查看详情

深度学习:从入门到放弃

https://zhuanlan.zhihu.com/p/22976342 首发于深度学习:从入门到放弃写文章登录 FCN学习:SemanticSegmentation余俊1年前感谢@huangh12 @郑途 @麦田守望者对标签图像生成的研究和讨论,这几天研究了一下,补充如下。-------------------... 查看详情

[资源]深度学习从入门到放弃

Relationship:  MachineLearning---->DeepLearning                           ---->DeepReinforcementLearning[LearningRoadMap]              ReinforcementLearningPapers:  DeepLearningPapersReadin 查看详情

vue从入门到放弃(代码片段)

----------------------------------------------------点击这里《专栏目录》查看更多--------------------------------------------------------------------------------------------------------点击这里《专栏目录》查看更多---------------- 查看详情

vue从入门到放弃(代码片段)

----------------------------------------------------点击这里《专栏目录》查看更多--------------------------------------------------------------------------------------------------------点击这里《专栏目录》查看更多---------------- 查看详情

vue从入门到放弃(代码片段)

----------------------------------------------------点击这里《专栏目录》查看更多--------------------------------------------------------------------------------------------------------点击这里《专栏目录》查看更多---------------- 查看详情

积分从入门到放弃

这部分重新从定积分学了1,lnx的导数就是x^(-1)=1/x那么求∫(1/x)dx=ln|x|+C 2,初值问题.就是求∫f(x)dx=F(x)+C求C.  查看详情

凸优化从入门到放弃(目录)

...课程时候的笔记和心得,其中应用篇没有学习。凸优化从入门到放弃00-凸优化引言01-凸集02-凸函数(暂无)03-凸优化问题(暂无)04-对偶(暂无)05-无约束优化算法(暂无)06-等式约束优化算法(暂无)07-内点法(不等式约束优... 查看详情

visualstudioformac从入门到放弃1

MAC 第一步:从微软官网下载:https://www.visualstudio.com/vs/visual-studio-mac/第二步:安装软件过程出现Itwasnotpossibletocompleteanautomaticinstallation.Thismightbeduetoaproblemwithyournetwork,proxyserversoranunsolvablei 查看详情

kubelet从入门到放弃:拓扑管理(上)

<Kubelet从入门到放弃>系列将对Kubelet组件由基础知识到源码进行深入梳理。上一篇zouyee带各位看了CPU管理的相关内容,其中提及拓扑管理,本文将对此进行详细剖析,拓扑管理在Kubernetes1.18时提升为Beta。TopologyManager功能可实现C... 查看详情

观察者模式(从放弃到入门)

观察者模式(从放弃到入门)观察者模式从放弃到入门需求1错误示范需求2观察者模式认识观察者模式需求3Java中自带的观察者模式思考源码ObservableObserver解析一些体会今天分享第二个模式,观察者模式。相信作Android... 查看详情

webpack从入门到放弃之路

公司的中流砥柱要走啦!!!!我要接手这些摊子啦!!!!!硬着头皮上吧!/(ㄒoㄒ)/~~第一部分:webpack使用部分第二部分:自动化部署部分第三部分:前端视频部分tobecontinue… 查看详情

初识pytorch:从安装到入门,从入门到放弃(代码片段)

目录PyTorch安装配置安装验证PyTorchPyTorch是Facebook团队于2017年1月发布的一个深度学习框架,虽然晚于TensorFlow,也没有TensorFlow火,但目前已经与TensorFlow奇虎相当。而且PyTorch采用了Python语言的接口,可以说它才是Pytho... 查看详情

[补档][从入门到放弃]——网络流学习索引

...啊喂) 最长的博文2017-7-29大佬讲课笔记网络流——从入门到放弃没错,就是它==各种题解的索引搭配飞行员士兵占领王者之剑happiness切糕餐巾血帆海盗 查看详情

vue从入门到放弃(代码片段)

vue2.0创建项目命令:(base)goldwater@hujinshuivue%cnpminstall-gvue-cli(base)goldwater@hujinshuivue%vueinitwebpackvue2.0-demo?Projectnamevue2.0-demo#项目名称?ProjectdescriptionAVue.jsproject#项目描述?Au 查看详情

深度学习---从入门到放弃pytorch基础(代码片段)

深度学习—从入门到放弃(一)pytorchTensor类似于numpy的array,pandas的dataframe;在pytorch里的数据结构是tensor,即张量tensor简单操作1.Flattenandreshape###Originalz:tensor([[0,1],[2,3],[4,5],[6,7],[8,9],[10,11]])Flatte 查看详情