GitHub多端同步不小心失误导致的连环报错的处理方法

初学者在进行Git的多端同步过程中经常出现各个问题

我们可以通过创建一个临时副本解决他
在这里插入图片描述

git stash

或者

git stash save "name"

我们可以通过这个命令去访问所有的stash

git stash list

恢复stash的几种方法

恢复最近的stash
git stash pop
恢复指定的stash
git stash apply stash@{n}

操作流程

1. 保存本地更改到 stash

将当前工作目录和暂存区的更改(包括未跟踪的文件)保存到 stash 中:

git stash push -u -m "Save local changes before pull"
  • -u--include-untracked:将未跟踪的文件也保存到 stash 中。
  • -m "message":为 stash 添加一条描述信息,方便后续识别。

2. 拉取远程仓库的最新代码

从远程仓库(如 GitHub)拉取最新的代码,确保本地代码与远程仓库同步:

git pull origin main
  • origin:远程仓库的名称(通常是 origin)。
  • main:分支名称(根据你的实际分支名称替换)。

3. 恢复 stash 中的本地更改

将之前保存的本地更改从 stash 中恢复:

git stash pop
  • pop:恢复最近一次 stash 并删除它。
  • 如果有冲突,Git 会提示你解决冲突。

4. 解决冲突(如果有)

如果在恢复 stash 时发生冲突,Git 会标记冲突文件。你需要手动解决冲突:

  1. 打开冲突文件,找到冲突标记(<<<<<<<=======>>>>>>>)。
  2. 根据需要修改文件,保留正确的代码。
  3. 保存文件后,将解决冲突的文件标记为已解决:
git add <file>

5. 提交更改

如果恢复 stash 后有新的更改,或者解决了冲突,需要提交这些更改:

git commit -m "Apply local changes after pull"

6. 推送到远程仓库

将本地更改推送到远程仓库:

git push origin main
  • origin:远程仓库的名称。
  • main:分支名称。

但是还是出现了一些问题
GitHub多端同步不小心失误导致的连环报错的处理方法_第1张图片

未追踪文件

比如一不小心出现未追踪文件
我们来看这个错误,他表明在尝试合并(merge)或切换分支时,Git 检测到一些未跟踪的文件(untracked files)会被覆盖。Git 为了保护这些文件,中止了操作。

1. 备份并删除未跟踪的文件

如果你不需要这些未跟踪的文件,可以手动删除它们,然后继续合并操作。

# 删除未跟踪的文件
rm xxxxx

# 继续合并
git merge <branch_name>

如果你需要保留这些文件,可以先备份它们,然后再删除:

# 备份文件
cp xxxx /path/to/backup/

# 删除未跟踪的文件
rm xxxxx

# 继续合并
git merge <branch_name>

2. 将未跟踪的文件添加到 Git 跟踪

如果你希望保留这些文件并让 Git 跟踪它们,可以先将它们添加到暂存区(staging area),然后再进行合并。

# 添加未跟踪的文件到 Git 跟踪
git add xxxxx

# 提交更改
git commit -m "Add untracked files before merge"

# 继续合并
git merge <branch_name>

3. 忽略未跟踪的文件

如果你不希望 Git 跟踪这些文件,可以将它们添加到 .gitignore 文件中,然后继续合并。

# 将文件添加到 .gitignore
echo "xxxxx.json" >> .gitignore

# 继续合并
git merge <branch_name>

4. 使用 git stash 临时保存未跟踪的文件

如果你希望临时保存这些未跟踪的文件,可以使用 git stash-u--include-untracked 选项。

# 保存未跟踪的文件到 stash
git stash -u

# 继续合并
git merge <branch_name>

# 恢复 stash(如果需要)
git stash pop

5. 强制覆盖未跟踪的文件

如果你确定可以覆盖这些未跟踪的文件,可以使用 git clean 命令强制删除它们。

# 强制删除未跟踪的文件
git clean -f

# 继续合并
git merge <branch_name>

如果未跟踪的文件在目录中,可以使用 -d 选项:

# 强制删除未跟踪的文件和目录
git clean -fd

6. 检查目标分支的文件

如果你不确定目标分支中是否有同名文件,可以先切换到目标分支查看:

# 切换到目标分支
git checkout <branch_name>

# 查看文件是否存在
ls bughunter/.obsidian/workspace.json

# 切换回原分支
git checkout main

最有效的方法

但是如果还不能解决问题
这里还有一个非常强硬的方法
首先通过百度网盘或者u盘什么的,把多端的数据手动同步完成之后
在每一个终端执行,记住每一个终端

1.强制更新Github
强制更新
git push -u origin main --force
强制更新并且覆盖所有历史(最后的方法,非常有效)
git push -u origin main --force-with-lease
2.重新拉取
git pull origin main

记得备份 git branch backup-branch

你可能感兴趣的:(github)