git(原理、使用)和visual studio中git工具的使用
·
git

git工作原理

clone 是“从无到有”地完整复制一个远程仓库,而 fetch 是“从有到更新”地同步远程仓库的最新变更
pull=fetch+merge
创建本地代码仓库和远程代码仓库(云校)
先有远程仓库,直接使用克隆存储库(拉取别人的代码)
步骤:
- 输入ssh
- 创建一个空文件夹(作为本地代码仓库)

先创建本地仓库上传到云端(自己代码上传)
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 冲突通常发生在以下两种情况:
- 同一文件的同一区域被不同分支修改:当两个分支对同一个文件的相同行或相邻行进行了不同的修改时,Git 无法自动合并,就会标记为冲突。
- 一个分支删除了某段代码,而另一个分支修改了它:例如,分支 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 无法判断你是想保留修改还是执行删除,于是爆发冲突。
更多推荐
所有评论(0)