mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3
717 字
2 分钟
解决 Github 同步复刻上游仓库时冲突的问题
2022-03-20

假如 Fork 来的仓库中文件的内容发生了变更,此时想要同步复刻上游仓库就无法通过 Fetch upstream(提取上游)下拉菜单一键实现了。具体情况表现为下拉菜单中只存在 Open pull request 选项而没有 Fetch and merge(提取并合并)。要解决这个问题,需要用到 Git,它是一个免费开源的分布式版本控制器。

找到对应系统版本的安装包来安装 Git,安装完成后能找到三个相关工具,分别是 Git CMD、Git GUI 和 Git Bash,这里只需要用到 Git Bash

配置 Git Bash#

首次使用 Git Bash 需要先设置一个用户,这样远程仓库就能知道是谁对仓库做了修改。

git config --global user.name "Username"
git config --global user.email "email@example.com"

如果使用了 --global 选项,那么该命令只需要运行一次,之后无论在 Git 做任何操作, Git 都会使用该信息。若想针对特定项目使用不同的用户名与电子邮件时,可以只在那个项目目录下运行没有 —global 选项的命令来配置。

配置本地仓库#

接着使用 git clone 从现有 Git 仓库中拷贝需要同步复刻的项目。

git clone <repo> <directory>

这里的 <repo> 就是远程仓库地址,可以在 Github 仓库页面的 Code - Clone 选项中找到,一般使用 HTTPS 链接即可;而 <directory> 则是选择该仓库在本地存放的路径。

解决 Merge 冲突#

仓库成功克隆到本地之后,就可以开始同步复刻上游仓库的命令了,在 Git Bash 中依次输入如下命令:

# 拉取上游仓库的更改
git fetch upstream
# 检查你的项目的默认分支(通常是 main)
git checkout main
# 合并上游的更改
git merge upstream/main

这时命令行便会输出存在冲突的文件,通常表现为:

CONFLICT (content): Merge conflict in path/to/file.txt
Automatic merge failed; fix conflicts and then commit the result.

接下来需要做的,就是在本地用文本编辑器打开存在冲突的文件,仔细检查该文件的内容,Git 已经用符号标记出了冲突的位置,从 <<<<<<< HEAD======= 是未修改之前文件内容,而从 =======>>>>>>> upstream/main 则是上游仓库修改之后的内容。

选择想要保存的内容,然后删除其余被标记的内容,标记符号也要一并删除,最后别忘记保存。

Push 至远程仓库#

回到 Git Bash,依次输入如下命令来提交更改后的文件,并将本地仓库全部推送到远程仓库。其中 xxx 是对于此次提交修改的说明,依据情况填写即可。

git add path/to/file.txt
git commit -m "xxx"
git push

最后在 Github 仓库页面便可以检查到这次通过 Git Bash 的修改,同时 Fetch upstream 菜单中应该会提示 No new commits to fetch. Enjoy your day! 代表同步复刻已经全部完成。

解决 Github 同步复刻上游仓库时冲突的问题
https://champhoon.xyz/posts/note/git-fetch-upstream/
作者
澄沨
发布于
2022-03-20
许可协议
CC BY-NC-SA 4.0
相关文章 智能推荐
1
解决小米手机在 fastboot 模式下不被 Windows 识别的问题
偽技術开发日常 小米手机可能会出现在 Windows 开机状态下连接 ADB 调试非常正常,然而一启动到 fastboot 模式,电脑就完全不能识别到手机的存在的问题——这里说的「不能识别」并非是不兼容的驱动程序所导致,而是在设备管理器里找不到一丝一毫手机的影子。造成这一问题的原因似乎是 Windows 注册表的缺失。
2
在 KOReader 上显示直排文本
偽技術开发日常 为了持续精进日语水平,也为了一并练习阅读直排文本时的速度,在下最近开始了阅读日文原版轻小说的计划。虽然在下手头上不缺纸质的阅读材料,但是作为一名不折不扣的电子书爱好者,电子版的轻小说自然也是不可缺少的。不过,当在下在尝试把直排电子书导入 Kindle 阅读时,却发现了一个重大问题,KOReader 似乎并不支持显示直排文本……
3
MIUI 下观看 Netflix 等流媒体时 Widevine DRM L1 认证失效之解决
偽技術开发日常 由于 Netflix 丰富的内容和优秀的影像画质技术,在下算是 Netflix 的中度用户之一——在 Windows 端,无论处于网页中还是 UWP 应用中,它都表现得相当出色,但是一到了在下的小米 10 上,就开始频繁出现掉 Widevine DRM L1 认证的情况——可小米 10 是明明白白支持 Widevine DRM L1 的,在 Netflix 官方的支持列表中也赫然在列,如今使用起来却出现这种状况,实在令人一头雾水。

目录