git

git工作原理

clone 是“从无到有”地完整复制一个远程仓库,而 fetch 是“从有到更新”地同步远程仓库的最新变更

pull=fetch+merge

创建本地代码仓库和远程代码仓库(云校)

先有远程仓库,直接使用克隆存储库(拉取别人的代码)

步骤:

  1. 输入ssh
  2. 创建一个空文件夹(作为本地代码仓库)

先创建本地仓库上传到云端(自己代码上传)

1.云校上新建代码库

2.复制SSH密钥

3.创建本地存储库

4.创建本地代码仓库

5.点击创建并推送。

Git更改视图

visual studio中按钮和指令对应

1.提取:fetch

2.拉取:pull

3.推送:push

4.同步:拉取并推送

visual studio按钮将工作目录代码推送到远程

1.先将暂存到暂存区(add)需要推送的才添加到缓存区,新添加的文件未暂存就是未跟踪。

2.输入提交的记录

3.提交到本地仓库(commit)

4.推到远程仓库(push)

提交记录

云校上提交可以查看远程仓库的提交记录

本地仓库查看提交

分支

使用分支来进行不同版本的工程管理

当本地仓库中创建了一个分支,推送后远程仓库也会新建立一个分支。

当选择不同的分支对应的解决方案资源管理器中代码也会改变

合并

分支冲突

Git 冲突通常发生在以下两种情况:

  1. 同一文件的同一区域被不同分支修改:当两个分支对同一个文件的相同行或相邻行进行了不同的修改时,Git 无法自动合并,就会标记为冲突。
  2. 一个分支删除了某段代码,而另一个分支修改了它:例如,分支 A 删除了某几行代码,而分支 B 修改了这几行代码,Git 无法判断是应该保留修改还是执行删除,也会产生冲突。

Git 的“三方合并”机制

当你在分支 A 执行合并分支 B 时,Git 并不是简单地拿 A 和 B 来比对,而是同时找出这三个版本:

  • (共同祖先):你们两个分支在分道扬镳之前,最后一次共同的那个提交。
  • (当前分支):你所在的分支 A 的最新代码。
  • (目标分支):你要合并进来的分支 B 的最新代码。

Git 会将这三个版本放在一起进行三方比对

1. 打印("Hello")
2. 打印("World")

场景一:分支 A 删除,分支 B 修改

  • 分支 A 现在的代码:1. 打印("Hello") (第2行没了)
  • 分支 B 现在的代码:1. 打印("Hello"),2. 打印("Git") (第2行改了)

Git 会分别拿 A 和 B 去跟 Base(祖先) 对比:

  • Git 看分支 A:“A 把第2行删掉了,这是 A 相对于祖先的动作。”
  • Git 看分支 B:“B 把第2行改成了 Git,这是 B 相对于祖先的动作。”
  • 结论:A 的动作是“删除”,B 的动作是“修改”。这两个动作作用在了同一个目标(第2行)上,产生了意图冲突!Git 无法判断你是想保留修改还是执行删除,于是爆发冲突。
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐