虚拟项目学习git/github原理与基本操作9

[Github项目安装]基于深度学习的原神自动钓鱼实现记录 基于深度学习的原神自动钓鱼实现记录与环境搭建bug解决方案 阅读详情

继续在原来的项目的基础上继续推进,我们在原来合并了master和featurex1的基础上,继续推进两步master分支。


然后我们推进featurex1分支两步。

这个时候featurex1分支的分支图如图所示:



然后,我们想把featurex1的内容合并到master分支中,假设已经测试通过了所有的featurex1分支中的内容。

watkins@watkins:~/watkins/finance$ git merge featurex1 
Merge made by the 'recursive' strategy.
 funciton3 |    2 ++
 1 file changed, 2 insertions(+)
watkins@watkins:~/watkins/finance$ 

这次没有出现fast-forward,因为两个分支的快照不存在谁是谁的父节点的情况了,而是分析两个分支的共同的父节点,创建新的快照。

这个时候我们的分支图如图所示:



的开发历史是从更早的地方开始分叉的。由于当前 master 分支所指向的 commit (C4)并非想要并入分支(iss53)的直接祖先,Git 不得不进行一些处理。就此例而言,Git 会用两个分支的末端(C4 和 C5)和它们的共同祖先(C2)进行一次简单的三方合并计算



两个分支的开发过程中,可能同时修改了同一个文件,所以有的时候这种情况合并分支会存在冲突,需要手动的解决这些冲突以后才能进行合并。

冲突的合并

有时候合并操作并不会如此顺利。如果你修改了两个待合并分支里同一个文件的同一部分,Git 就无法干净地把两者合到一起(译注:逻辑上说,这种问题只能由人来解决)。如果你在解决问题 #53 的过程中修改了hotfix 中修改的部分,将得到类似下面的结果:

$ git merge iss53
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

Git 作了合并,但没有提交,它会停下来等你解决冲突。要看看哪些文件在合并时发生冲突,可以用 git status 查阅:

[master*]$ git status
index.html: needs merge
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#	unmerged:   index.html
#

任何包含未解决冲突的文件都会以未合并(unmerged)状态列出。Git 会在有冲突的文件里加入标准的冲突解决标记,可以通过它们来手工定位并解决这些冲突。可以看到此文件包含类似下面这样的部分:

<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
  please contact us at support@github.com
</div>
>>>>>>> iss53:index.html

可以看到 ======= 隔开的上半部分,是 HEAD(即 master 分支,在运行 merge 命令时检出的分支)中的内容,下半部分是在 iss53 分支中的内容。解决冲突的办法无非是二者选其一或者由你亲自整合到一起。比如你可以通过把这段内容替换为下面这样来解决:

<div id="footer">
please contact us at email.support@github.com
</div>

这个解决方案各采纳了两个分支中的一部分内容,而且我还删除了 <<<<<<<,=======,和>>>>>>> 这些行。在解决了所有文件里的所有冲突后,运行 git add 将把它们标记为已解决(resolved)。因为一旦暂存,就表示冲突已经解决。如果你想用一个有图形界面的工具来解决这些问题,不妨运行 git mergetool,它会调用一个可视化的合并工具并引导你解决所有冲突:

$ git mergetool
merge tool candidates: kdiff3 tkdiff xxdiff meld gvimdiff opendiff emerge vimdiff
Merging the files: index.html

Normal merge conflict for 'index.html':
  {local}: modified
  {remote}: modified
Hit return to start merge resolution tool (opendiff):

如果不想用默认的合并工具(Git 为我默认选择了 opendiff,因为我在 Mac 上运行了该命令),你可以在上方”merge tool candidates(候选合并工具)”里找到可用的合并工具列表,输入你想用的工具名。我们将在第七章讨论怎样改变环境中的默认值。

退出合并工具以后,Git 会询问你合并是否成功。如果回答是,它会为你把相关文件暂存起来,以表明状态为已解决。

再运行一次 git status 来确认所有冲突都已解决:

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	modified:   index.html
#

如果觉得满意了,并且确认所有冲突都已解决,也就是进入了缓存区,就可以用 git commit 来完成这次合并提交。提交的记录差不多是这样:

Merge branch 'iss53'

Conflicts:
  index.html
#
# It looks like you may be committing a MERGE.
# If this is not correct, please remove the file
# .git/MERGE_HEAD
# and try again.
#

如果想给将来看这次合并的人一些方便,可以修改该信息,提供更多合并细节。比如你都作了哪些改动,以及这么做的原因。有时候裁决冲突的理由并不直接或明显,有必要略加注解。

分支管理

到目前为止,你已经学会了如何创建、合并和删除分支。除此之外,我们还需要学习如何管理分支,在日后的常规工作中会经常用到下面介绍的管理命令。

git branch 命令不仅仅能创建和删除分支,如果不加任何参数,它会给出当前所有分支的清单:

$ git branch
  iss53
* master
  testing

注意看 master 分支前的 * 字符:它表示当前所在的分支。也就是说,如果现在提交更新,master 分支将随着开发进度前移。若要查看各个分支最后一次 commit 信息,运行 git branch -v:

$ git branch -v
  iss53   93b412c fix javascript issue
* master  7a98805 Merge branch 'iss53'
  testing 782fd34 add scott to the author list in the readmes

GitHub高效学习Python:从开源项目到实战技能提升 开源项目是现代编程学习的重要资源,通过阅读真实代码理解编程原理是提升开发能力的有效途径。GitHub作为全球最大的代码托管平台,汇聚了海量Python项目资源,为学习者提供了从基础语法到高级应用的完整学习路径。在软件工程实践中,通过参与开源项目可以学习企业级开发规范,掌握版本控制、代码审查等核心技能。对于Python开发者而言,GitHub不仅是代码仓库,更是技术社区和实战训练场。本文基于Python学习和开源协作的热点需求,详细介绍如何利用GitHub上的优质资源,包括cpython源码、requests 阅读详情

相关推荐

深度学习项目实战:用Git Clone快速复现GitHub热门模型(附Pycharm配置指南)

本文提供了一份详尽的深度学习项目实战指南,教你如何高效复现GitHub热门模型。内容涵盖从项目预检、使用git clone克隆仓库,到在Ubuntu系统上构建隔离的Python虚拟环境、解决依赖冲突,并详细介绍了如何在PyCharm中配置远程解释器进行开发与调试,旨在帮助开发者系统性地解决环境配置难题,快速让模型跑起来。

weixin_28837817的博客 397

github代码复现/github项目部署/Github项目环境配置/跑通github项目/python机器学习跑通

github代码复现/github项目部署/Github项目环境配置/跑通github项目/python机器学习跑通。

2501_90824910的博客 2324

深入理解Git与GitHub:原理与实战指南

在软件开发的历史长河中,版本控制系统经历了从集中式向分布式的发展。最初,开发者们依赖于简单的文件备份和手动合并来跟踪代码变更。这种方法很快暴露出诸多问题,例如版本冲突、历史记录丢失、多人协作困难等。集中式版本控制系统(CVCS),如CVS和Subversion,试图解决这些问题,将所有代码维护在单一的服务器上。尽管这种集中式的做法提高了团队协作的效率,但其缺点也显而易见。任何对服务器的依赖都可能成为单点故障,一旦服务器发生故障,整个开发进程将被迫停滞。

weixin_28888459的博客 991

虚拟项目学习git/github原理与基本操作2

假设我们的虚拟项目是某财务系统,计算某个公司的纳税额等信息。 先在github中创建一个这个项目的repo, 命名为finance. 创建好这个repo以后,github给出了一些基本的命令如下: Create a new repository on the command line touch README.md git init git add README.md git commit

Work Hard, Play Harder! 2219

逆向分析TikTok的Cronet网络库:定位libsscronet.so并Hook关键SSL函数

本文深入探讨了逆向分析TikTok的Cronet网络库的技术细节,重点介绍了如何定位libsscronet.so并Hook关键SSL函数。通过Java到Native的调用链路追踪、So库定位策略和SSL验证函数的动态Hook技巧,帮助开发者突破定制化网络库的协议加密防护,实现流量解密和协议分析。

weixin_27875131的博客 970

利用ArcGIS创建渔网计算渔网内土地利用占比划分中国北方农牧交错带

依据土地利用数据,根据参考文献划分要求,利用ArcGIS创建渔网对地物进行重分类,划分农业带、牧业带以及农牧交错带。

m0_60672527的博客 3059

虚拟项目学习git/github原理与基本操作7

项目的分支管理 Git 中的分支,其实本质上仅仅是个指向 commit 对象的可变指针。Git 会使用 master 作为分支的默认名字。在若干次提交后,你其实已经有了一个指向最后一次提交对象的 master 分支,它在每次提交的时候都会自动向前移动。 如果你没有指定当前的分支的名字,git会自动的使用master作为当前的分支的名字,并且有个指针指向当前的工作的分支,每次提交项目

Work Hard, Play Harder! 1533

IAP板卡远程升级(串口网口都可)+Ymodem+AES对bin文件加密+pc软件+板卡相互烧录

还是决定记录一下,毕竟这个东西我也搞了挺久的,遇到一些棘手的,或者是因为我很粗心遇到的问题也和大家分享一下,。 板卡核心是 STM32F103RCT6,256kflash 前言 开始看这个远程升级的时候,我是一头雾水的,原子哥的教程里面也有说到过iap,有了一个大概的了解,我想不明白的是,通过串口下载的方式把hex文件下载到flash,和把bin文件下载到flash难道不是拉一根线,下载一个文件嘛,(初入职场的我并没有考虑到安全这个问题)如果直接将hex文件给到客户那边,风险是非常大...

那可真是太开心了的博客 5371

虚拟项目学习git/github原理与基本操作1

本人为了更好的学习git的基本操作,利用github给提供的良好的服务,通过一个虚拟项目来熟练git的基本操作与原理。 1. Git基础知识 在git中每一次版本信息都是对所有文件的一次快照,保存了指向这个快照的索引。 对于任何一个文件,git内部只有三种状态,已提交(committed),已修改(modified)和已暂存(staged). 已提交表示该文件已经被

Work Hard, Play Harder! 2156

[系统安全] 一.什么是逆向分析、逆向分析基础及经典扫雷游戏逆向

娜璋AI安全之家于2020年8月18日开通,将专注于Python和安全技术,主要分享Web渗透、系统安全、CVE复现、威胁情报分析、人工智能、大数据分析、恶意代码检测等文章。真心想把自己近十年的所学所做所感分享出来,与大家一起进步。 系统安全系列作者将深入研究恶意样本分析、逆向分析、攻防实战等,通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步。第一篇文章先带领大家学习什么是逆向分析,然后详细讲解逆向分析的典型应用,接着通过OllyDbg工具逆向分析经典的游戏扫雷,再通过Cheat Engin

杨秀璋的专栏 2万+

RK3588 固定hdmiin的dev/videoX节点

RK3588 固定hdmiin的dev/videoX节点

目前从事linux驱动开发,多交流多学习吧 2050

虚拟项目学习git/github原理与基本操作5

首先查看一下我们当前项目的提交历史,可以使用git log $ git log watkins@watkins:~/watkins/finance$ git log commit f2f51bd6eefdd115ec4be37540f97dfb81828ad1 Author: weixingstudio Date: Thu Jan 3 13:32:15 2013 +0800

Work Hard, Play Harder! 1944

XDMA流传输模式

XDMA 流传输模式(Streaming DMA)​ 是 Xilinx FPGA 通过 PCIe 与主机进行 ​实时流式数据传输 的核心机制,

浩瀚之水的专栏 3435

虚拟项目学习git/github原理与基本操作8

假设目前我们的项目状态是这样的,如下图所示,分支的情况,当前已经把其他的分支都合并到了master分支。 接下来的操作都以上面图中最新的master分支为基础进行,前面的都不去讨论。 现在我们将master分支向前推进两步,分别添加写别的功能,在function2中。 如果不推送到远端的话,远端仓库的HEAD指针会比当前工程的指针落后一步。 所以把工程推送到远端。 然后再

Work Hard, Play Harder! 1747

MATLAB从入门到精通-APP调用simulink中的参数,并且修改,将结果返回到APP中

本次案例为以下微分方程: 其中方程的初始值为: Step1:搭建simulink文件,如下图所示: 初始值配置在积分模块中,如下图所示: Step2:制作app 操作视频: ,时长01:11 代码: 本文包括APP如何回调simulik中d的参数,以及把simulink中的仿真结果输出到APP中的绘图界面中。 核心代码如下: ...

wenyusuran的专栏 3042

Openlayers 教程 02 - 地图添加 WKT WKB GeoJson 格式的点线面数据

WebGIS 开发中,对于数据量不是很大的场景,可以直接从数据库读取数据,通过创建点线面要素(Feature),然后添加到矢量图层(vectorLayer)中,在地图上展示。添加点线面的方法可以封装一下,方便使用。...

非科班Java出身GISer的博客 3854

虚拟项目学习git/github原理与基本操作3

获得远端仓仓库的代码,使用git clone  $ git clone git://github.com/schacon/grit.git 你可能已经注意到这里使用的是 clone 而不是 checkout。这是个非常重要的差别,Git 收取的是项目历史的所有数据(每一个文件的每一个版本),服务器上有的数据克隆之后本地也都有了。实际上,即便服务器的磁盘发生故障,用任何一个克

Work Hard, Play Harder! 1265

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

虚拟项目学习git/github原理与基本操作6

在系统发布新版本或者有里程碑式的重大版本变化的时候,我们往往习惯给软件加个tag. 用来做标注与说明,同时tag的使用也比冗长的版本号要方便得多。 $ git tag 使用上面的命令可以查看当前系统的所有的tag. watkins@watkins:~/watkins/finance$ git tag v0.1 watkins@watkins:~/watkins/fin

Work Hard, Play Harder! 1460

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

虚拟项目学习git/github原理与基本操作4

新建一个新的文件,作为项目的第一个正式文件,因为当前我们的项目中已经包含一个README文件,这个时候做了一次项目的提交,所以我们现在项目的一个版本记录了当前版本的所有文件的镜像,我们称为C1。 查看当前项目状态: git status 会给出当前项目中的文件的状态,是未跟踪,还是已经修改没暂存,或者已经暂存,或者已经提交等状态。 watkins@watkins:~/w

Work Hard, Play Harder! 1546

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Linux 下建立 Git 与 GitHub 的连接并克隆到本地

Linux 下建立 Git 与 GitHub 的连接 Git 是一款开源的分布式版本控制系统,而 GitHub 是依托 Git 的代码托管平台。 GitHub 利用 Git 极其强大的克隆和分支功能,使得社区成员能够自由地参与到开源项目中去。 不过,在开始学习之前,你需要一个 GitHub 账号,以及一台能联网的 Linux 虚拟机。 ====准备工作==== 安装 Git ...

井底之蛙 2万+

虚拟项目学习git/github原理与基本操作10

衍合 把一个分支整合到另一个分支的办法有两种:merge(合并) 和 rebase(衍合)。在本章我们会学习什么是衍合,如何使用衍合,为什么衍合操作如此富有魅力,以及我们应该在什么情况下使用衍合。 简单的说衍合就是把当前的分支的变化在另外的一个分支上重演一次。 在我们以前的项目的基础上,把 master分支向前推进两步。 因为我在自己练习的时候已经将featur

Work Hard, Play Harder! 1317

windows 虚拟环境Django项目提交到GitHub总结

在写了很多次项目之后,今天突然决定重新写,并边写边提交到GitHub,简单总结一下经验,以及中间出现的一些错误。 由于之前没有经验,所以事先在GitHub上新建了仓库。正由于这一步,所以导致了后续的一系列事情。 由于之前在Windows系统上面提前安装了pip,所以个人建议,对于学习python,安装pip真的非常重要 一、创建虚拟环境         由于个人使用的是python3.6 ...

wuda19920215的博客 1007

GitHub克隆远程项目到本地(可以克隆指定文件夹)以及从本地上传文件到GitHub(Linux和Windows均可,对虚拟机也适用)

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。我们在上面浏览时,有时会发现一些对我们很有用的源代码或者文件。

代码背包客的博客 5124

利用GitHub高效学习Python:从环境搭建到项目实战的完整指南

开源协作是现代软件开发的核心实践,其原理在于通过版本控制系统(如Git)和代码托管平台(如GitHub)实现全球开发者的分布式协作与知识共享。这一模式的技术价值在于提供了海量、实时、高质量的真实项目代码库,极大地降低了学习门槛并加速了工程能力的培养。在Python学习领域,GitHub的应用场景尤为广泛,学习者可以通过阅读、运行和修改开源项目,将理论知识转化为解决实际问题的能力。本文聚焦于如何系统性地利用GitHub进行Python学习,涵盖了虚拟环境配置、Git操作、项目搜索与评估、代码深度阅读、以及从模

weixin_30780649的博客 362

如何在虚拟机Linux下克隆github上的项目

如何在虚拟机Linux下克隆github上的项目 博主情况 刚入门虚拟机 Linux+Centos7 具体操作 在终端键入git clone https://github.com/Tencent/ncnn.git 后面这个链接,在其他的博客中,是这样的https://github.com/Tencent/ncnn 可以看到少了个.git,虽然也可以,但是博主亲测,速度很慢 我想这些博主应该是直...

Jesse_zwj的博客 5520

GitHub实战:Python学习者的代码阅读与项目拆解指南

在编程学习过程中,理解代码结构与工程实践是提升开发能力的关键环节。通过阅读和分析真实项目代码,开发者可以深入掌握模块化设计、异常处理机制以及测试驱动开发等核心原理。这种基于实战的学习方法,能够帮助学习者跨越从理论到实践的鸿沟,快速积累解决实际问题的经验。特别是在Python生态中,结合GitHub这一平台,学习者可以接触到大量使用流行框架如Django、Flask以及数据处理库如Pandas的优质项目。通过系统性地拆解项目,例如从环境配置、依赖管理到核心逻辑分析,学习者不仅能巩固语法知识,更能领悟工程化思维

virusswb的专栏 300
上一篇: 虚拟项目学习git/github原理与基本操作8
下一篇: 虚拟项目学习git/github原理与基本操作10
watkins
博客等级 码龄18年 1277粉丝 246原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值