网易工程师 Ruheng 一文教你轻松学会 Git

别再为通讯发愁了!手把手你用PCAN-View调试Kinco步科伺服电机的CANopen 本文详细介绍了如何使用PCAN-View工具调试Kinco步科伺服电机的CANopen通讯,从环境搭建到实战演练,涵盖硬件连接、软件配置及故障排除。通过具体案例和代码示例,帮助工程师快速掌握伺服电机通讯控制技术,解决工业设备通讯难题。 阅读详情

在日常工作中,经常会用到Git操作。但是对于新人来讲,刚上来对Git很陌生,操作起来也很懵逼。本篇文章主要针对刚开始接触Git的新人,理解Git的基本原理,掌握常用的一些命令。

Git工作流程

640?wx_fmt=png

以上包括一些简单而常用的命令,但是先不关心这些,先来了解下面这4个专有名词。

  • Workspace:工作区

  • Index / Stage:暂存区

  • Repository:仓库区(或本地仓库)

  • Remote:远程仓库

工作区

程序员进行开发改动的地方,是你当前看到的,也是最新的。

平常我们开发就是拷贝远程仓库中的一个分支,基于该分支进行开发。在开发过程中就是对工作区的操作。

暂存区

.git目录下的index文件, 暂存区会记录 git add添加文件的相关信息(文件名、大小、timestamp...),不保存文件实体, 通过id指向每个文件实体。可以使用 git status查看暂存区的状态。暂存区标记了你当前工作区中,哪些内容是被git管理的。

当你完成某个需求或功能后需要提交到远程仓库,那么第一步就是通过 git add先提交到暂存区,被git管理。

本地仓库

保存了对象被提交 过的各个版本,比起工作区和暂存区的内容,它要更旧一些。

git commit后同步index的目录树到本地仓库,方便从下一步通过 git push同步本地仓库与远程仓库的同步。

远程仓库

远程仓库的内容可能被分布在多个地点的处于协作关系的本地仓库修改,因此它可能与本地仓库同步,也可能不同步,但是它的内容是最旧的。

小结

  1. 任何对象都是在工作区中诞生和被修改;

  2. 任何修改都是从进入index区才开始被版本控制;

  3. 只有把修改提交到本地仓库,该修改才能在仓库中留下痕迹;

  4. 与协作者分享本地的修改,可以把它们push到远程仓库来共享。

下面这幅图更加直接阐述了四个区域之间的关系,可能有些命令不太清楚,没关系,下部分会详细介绍。

640?wx_fmt=png

常用Git命令

640?wx_fmt=png

网上找了个图,别人整理的一张图,很全很好,借来用下。下面详细解释一些常用命令。

HEAD

640?wx_fmt=png

在掌握具体命令前,先理解下HEAD。

HEAD,它始终指向当前所处分支的最新的提交点。你所处的分支变化了,或者产生了新的提交点,HEAD就会跟着改变。

add

640?wx_fmt=png

add相关命令很简单,主要实现将工作区修改的内容提交到暂存区,交由git管理。

640?wx_fmt=png

commit

640?wx_fmt=png

commit相关命令也很简单,主要实现将暂存区的内容提交到本地仓库,并使得当前分支的HEAD向后移动一个提交点。

640?wx_fmt=png

branch

640?wx_fmt=png

涉及到协作,自然会涉及到分支,关于分支,大概有展示分支,切换分支,创建分支,删除分支这四种操作。

640?wx_fmt=png

关于分支的操作虽然比较多,但都比较简单好记。

merge

640?wx_fmt=png

merge命令把不同的分支合并起来。如上图,在实际开放中,我们可能从master分支中切出一个分支,然后进行开发完成需求,中间经过R3,R4,R5的commit记录,最后开发完成需要合入master中,这便用到了merge。

640?wx_fmt=png

一般在merge之后,会出现conflict,需要针对冲突情况,手动解除冲突。主要是因为两个用户修改了同一文件的同一块区域。如下图所示,需要手动解除。

640?wx_fmt=png

rebase

640?wx_fmt=png

rebase又称为衍合,是合并的另外一种选择。

在开始阶段,我们处于new分支上,执行 git rebase dev,那么new分支上新的commit都在master分支上重演一遍,最后checkout切换回到new分支。这一点与merge是一样的,合并前后所处的分支并没有改变。 git rebase dev,通俗的解释就是new分支想站在dev的肩膀上继续下去。rebase也需要手动解决冲突。

rebase与merge的区别

现在我们有这样的两个分支,test和master,提交如下:

      D---E test	
     /	
A---B---C---F master

在master执行 git merge test,然后会得到如下结果:

      D--------E	
     /          \	
A---B---C---F----G   test, master

在master执行 git rebase test,然后得到如下结果:

A---B---D---E---C'---F'   test, master

可以看到,merge操作会生成一个新的节点,之前的提交分开显示。而rebase操作不会生成新的节点,是将两个分支融合成一个线性的提交。

如果你想要一个干净的,没有merge commit的线性历史树,那么你应该选择git rebase 如果你想保留完整的历史记录,并且想要避免重写commit history的风险,你应该选择使用git merge

reset

640?wx_fmt=png

reset命令把当前分支指向另一个位置,并且相应的变动工作区和暂存区。

640?wx_fmt=png

revert

640?wx_fmt=png

git revert用一个新提交来消除一个历史提交所做的任何修改。

revert与reset的区别

640?wx_fmt=png

  • git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。

  • 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,减少冲突。但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入,产生很多冲突。关于这一点,不太理解的可以看这篇文章。

  • git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。

push

上传本地仓库分支到远程仓库分支,实现同步。

640?wx_fmt=png

其他命令

640?wx_fmt=png

本文作者 Ruheng 是来自网易的 Android 工程师,点击「阅读原文」,给作者点个赞?

640?wx_fmt=png

关注「码洞」,老钱带你码出个未来

Decoder如何工作、Transformer如何训练、以及exposure bias问题 1、结合图文描述Decoder中各个模块是什么,以及是如何工作的。2、transformer是如何训练的。3、exposure bias问题造成的原因及解决方法 阅读详情

相关推荐

自动驾驶大模型---小米&华科的ORION端到端方案

本文介绍了小米汽车与华中科技大学联合开发的ORION自动驾驶端到端方案。该框架创新性地将视觉语言模型(VLM)与自动驾驶系统结合,包含QT-Former特征提取模块、大语言模型(LLM)推理模块和生成式规划器三大核心组件。通过视觉感知与语言理解的深度融合,ORION能更准确地理解人类指令并生成合理轨迹,同时提升系统的可解释性。实验证明,该方案在准确性、泛化能力和决策透明度方面均有显著优势。ORION框架为自动驾驶技术提供了新思路,有望推动行业向更安全、智能的方向发展。

智能汽车人的博客 1981

GitGit常用命令

git init在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹. git clone获取一个url对应的远程Git repo, 创建一个local copy.一般的格式是git clone [url].clone下来的repo会以url最后一个斜线后面的名称...

猫巳的博客 668

北斗导航 | 卫星导航接收机原理(基础)

卡尔曼滤波,最小二乘,伪距,芯片,模组,接收机,捕获,跟踪,RTK,RTD,PPP,SPP,多普勒,DOP,灵敏度,热启动,冷启动,PNT,北斗发展,MEO,IGSO,GEO,ICD,导航电文,载波,载噪比

尘世冰封的专栏 2290

Git有这一篇就够了

在日常工作中,经常会用到Git操作。但是对于新人来讲,刚上来对Git很陌生,操作起来也很懵逼。本篇文章主要针对刚开始接触Git的新人,理解Git的基本原理,掌握常用的一些命令。 一、Git工作流程 以上包括一些简单而常用的命令,但是先不关心这些,先来了解下面这4个专有名词。 Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓

perry_Fan 4936

Git 实现原理,你真的了解吗?

诞生的原因最初版本的git 诞生于Linus和他的团队在开发Linux内核的过程中。一开始,Linus和他的团队选用的版本控制工具是BitKeeper(一款非开源,但是有条件免费的产品)...

程序IT圈 983

amend用法 git 信息_看了这篇,我确定你已经彻底搞懂Git

版本控制版本控制就是记录项目文件的历史变化。它为我们查阅日志,回退,协作等方面提供了有力的帮助。版本控制一般分为集中化版本控制和分布式版本控制。集中化主要的版本数据都保存服务端。分布式版本数据分散在多端。GitGit属于分布式版本控制,也是现在比较流行的一种版本管理工具。Git项目有三个区块:工作区 / 暂存区 / 版本库工作区存放从版本库提取出来的文件,供我们编辑修改;暂存区保存了下一次要提交的...

weixin_39621819的博客 1103

敏捷团队Git分支版本管理策略| TBD++ Flow

​简介 随着Git的普及,为了更高效地进行团队协作开发,人们通过经验总结研究出了几套适用于各种团队和项目的分支管理策略,上篇文章我们讲解了 Git Flow 代码版本管理策略,它对版本控制较为严格,主要适合开发团队规模较大、开发周期较长,可达几周至几个月的项目,同时,文章提供了版本管理方案图及必要的讲解。 接下来将介绍Git 分支管理策略:TBD++ Flow,该版本管理策略整合了其他策略的优点,适合敏捷开发团队,开发周期长、快速迭代均适用。先看一下工作流图。 TBD++ Flow 工作流图 TBD++

技术管理修行 2567

git合并分支时,忽略某个文件或者某个文件下的文件

合并时的坑 会遇到修改了,但是不成功的原因: gitattribute方法生效是有条件的,跟文件的修改顺序有关系,只有先修改的往后来修改的合并的时候才会生效 参考地址:https://blog.csdn.net/dunegao/article/details/103122360?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control&depth_1-utm_source=di

这里是迷阵的博客耶 3399

git merge 时忽略配置文件文件

日常开发时经常会遇到某些配置文件,不希望在branch merge时被包含在内。 怎么处理?步骤如下: 步骤一:定义一个虚拟的合并策略,全局配置不依赖任何项目任何分支 git config --global merge.ours.driver true 步骤二:在你项目中根目录(与.gitignore同级)添加一个配置文件.gitattributes 注意这个".gitattributes"在必须要放到merge的目标branch中,而不是源branch。 步骤三:在.gitattri

rav009的专栏 2205

git分支合并时忽略特定文件

分支合并忽略特定文件步骤 在项目根目录下新建文件.gitattributes,然后文件中写入需要忽略的文件名 + merge=ours, 一个文件占一行 例: 忽略config.xml 文件 config.xml merge=ours 如果设置了没有起效,在根目录下运行命令行 进行config配置 git config merge.ours.driver true .gitattributes该文件主要是用于设置git对特定文件进行配置属性的,还可进行其他的配置 ...

工作中学习,学习中进步 1267

gitGitHub IDEA拒绝合并git项目

gitGitHub git是一个版本控制工具 github是一个用git做版本控制的项目托管平台。 使用git上传项目到github 一、创建github repository(仓库) 二、安装git客户端 https://git-scm.com/ 官网下载,安装,一路默认安装完成。 绑定用户:打开git-bash.exe,因为Git是分布式版本控制系统,所以需要填写用户名...

小沐的博客 695

git merge 排除文件

文件来指定合并策略。你可以设置一个自定义合并策略来忽略特定文件的合并。然后,定义一个自定义的合并策略。在Git中,如果你想在合并时排除特定文件,你可以使用。首先,在仓库的根目录下创建或编辑。

ben_grf的博客 724

Hello Git(二)——Git内部实现机制

一、Git仓库内部实现简介 Git本质上是一个内容寻址(content-addressable)的文件系统,根据文件内容的SHA-1哈希值来定位文件。Git核心部分是一个简单的键值对数据库(key-value data store)。向Git数据库插入任意类型的内容,会返回一个键值,通过返回的键值可以在任意时刻再次检索(retrieve)插入的内容。通过底层命令hash-object可以将任意数据保存到.git目录并返回相应的键值。 Git包含一套面向版本控制系统的工具集,包括高级命令和底层命令。高级命

天山老妖 1539

Git分支合并(merge)时忽略某个文件或者目录

Git分支合并(merge)时忽略某个文件或者目录 前言 ​ 最近使用VUE开发构建了项目,因为打包发布引发了一场小意外,就是不同分支的dist文件夹合并时发生冲突,而且有时先打包后合并的分支,导致两个分支实际发布的是同一套代码,导致乌龙事件的发生,虽然很快找到了问题,但是还是有些尴尬,本文主要记录如何在合并分支时忽略某些文件或者目录。 操作步骤 1. 定义虚拟的合并策略 git config --global merge.ours.driver true 其他配置可参考 Git配置 2. 编辑规

蜀道难,难于上青天。 6810

git 修改commit_动图详解常用的git命令

1.git mergegit merge用于将一个分支(branch)的修改应用到另一个分支(branch)上。git merge包含两种类型:fast-forward和no-fast-forward。1.1 Fast-Forward merge当目标分支(branch)相对于源分支(branch)没有额外的修改时,git不会创建额外的commit,直接进行merge。1.2 No-Fa...

weixin_39884877的博客 402

轻松GitGithub入门

本文详细的介绍了版本控制系统、Git以及GitHub的原理与使用方法,能够比较好的帮助新手入门GitGitHub

qq_44075108的博客 4070

git merge合并忽略某些文件

通常git上都有两三个分支,release,debug。。。,每个分支有些配置是不一样的,这样的话当你merge时就要避免这些文件, 那如何避免呢,好大坑啊。 新建一个 .gitattributes这个文件用于指定非文本文件的对比合并方式。 假如你要避免这个文件,config.xml,哪如何操作呢。 1, 需要添加一个 merge driver: git config --g...

LoveMyLife 1万+

Git忽略文件的几种方法,以及.gitignore文件的忽略规则

【代码】在.gitconfig 文件中引用忽略配置文件。

CVPR收割机的博客 3万+

多分支merge忽略文件合并

在项目根目录下使用以下命令设置全局merge操作的策略。

qq_52030824的博客 2414

git cherry-pick命令使用

用途:重新生成commitID,在原先其他分支或者本地分支的其他commit之上,然后git push到远端1、在分支A重新提交我在分支B做的一次功能修改,并在分支A提交。2、另一种情况在分支A(在未跟新代码的情况下修改了好几个功能,本地有好几个commit提交),我不能向远端用(git push origin 本地分支 远程分支),我往往会用先用git reset --HARD 到最新merge...

冰夫子的博客 6907

git 中的rebase 与cherry-pick实战

遇到的问题 ## 在项目中遇到这样的一个问题   master分支包含记录:base1,test1,test2,test3,test4   dev分支是基于master的base1后开发的,base1,dev1,dev2,dev3,现在怎么把dev1,dev2,dev3的代码同步到同主分支上? 思路有2个 1) perry-pick,打开idea,选择主分支上对应的记录,点击perry-pick,...

mingtiandexia的专栏 2142

vhdr格式运动意象脑电图EEG数据集下载

该数据集包含运动意象脑电图 (EEG) 数据,该数据由 ELKH 自然科学研究中心 (TTK) 记录。在 9 名自愿健康受试者的帮助下,总共进行了 25 项实验。对于 EEG 数据记录,遵循 10-20 国际惯例,使用 64 通道 ActiChamp 放大器系统(Brain Products GmbH,Gliching,德国)与 actiCAP EEG 帽一起使用。 POz 用作参比电极,因此有 63 个电极可用于数据采集。在实验准备过程中,测量了脑电图电极的阻抗并保持在30kΩ以下,并将其阻抗值与记录的脑电图文件一起保存。受试者坐在 LG Flatron L204WT-SF 20 英寸宽屏液晶显示器前,观看距离约为 70-130 厘米。对于实验地点,我们使用了配备法拉第笼屏蔽的房间,但也使用了没有电屏蔽的普通房间。通过使用常规的、非屏蔽的房间,我们的目标是创造一个与 Cybathlon 比赛中类似的环境。原始脑电图信号是用 BrainVision Recorder 程序(版本:1.22.0001)记录的,无需额外的软件或硬件过滤器。

FSP-BayTrail.zip_BayTrail_VBIOS_and_BSF_fsp_intel FSP_intel-fsp

Intel BayTrail平台的固件支持包,用于开发bios,coreboot等引导系统。

上一篇: 滴滴工程师图文并茂带你深入理解 TCP 握手分手全过程
下一篇: 每个阿里程序员都必须搞懂的Maven基础知识
codehole_
博客等级 码龄7年 33粉丝 132原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值