初学者在进行Git的多端同步过程中经常出现各个问题
git stash
或者
git stash save "name"
我们可以通过这个命令去访问所有的stash
git stash list
恢复stash的几种方法
恢复最近的stash
git stash pop
恢复指定的stash
git stash apply stash@{n}
stash
将当前工作目录和暂存区的更改(包括未跟踪的文件)保存到 stash
中:
git stash push -u -m "Save local changes before pull"
-u
或 --include-untracked
:将未跟踪的文件也保存到 stash
中。-m "message"
:为 stash
添加一条描述信息,方便后续识别。从远程仓库(如 GitHub)拉取最新的代码,确保本地代码与远程仓库同步:
git pull origin main
origin
:远程仓库的名称(通常是 origin
)。main
:分支名称(根据你的实际分支名称替换)。stash
中的本地更改将之前保存的本地更改从 stash
中恢复:
git stash pop
pop
:恢复最近一次 stash
并删除它。如果在恢复 stash
时发生冲突,Git 会标记冲突文件。你需要手动解决冲突:
<<<<<<<
、=======
、>>>>>>>
)。git add <file>
如果恢复 stash
后有新的更改,或者解决了冲突,需要提交这些更改:
git commit -m "Apply local changes after pull"
将本地更改推送到远程仓库:
git push origin main
origin
:远程仓库的名称。main
:分支名称。比如一不小心出现未追踪文件
我们来看这个错误,他表明在尝试合并(merge)或切换分支时,Git 检测到一些未跟踪的文件(untracked files)会被覆盖。Git 为了保护这些文件,中止了操作。
如果你不需要这些未跟踪的文件,可以手动删除它们,然后继续合并操作。
# 删除未跟踪的文件
rm xxxxx
# 继续合并
git merge <branch_name>
如果你需要保留这些文件,可以先备份它们,然后再删除:
# 备份文件
cp xxxx /path/to/backup/
# 删除未跟踪的文件
rm xxxxx
# 继续合并
git merge <branch_name>
如果你希望保留这些文件并让 Git 跟踪它们,可以先将它们添加到暂存区(staging area),然后再进行合并。
# 添加未跟踪的文件到 Git 跟踪
git add xxxxx
# 提交更改
git commit -m "Add untracked files before merge"
# 继续合并
git merge <branch_name>
如果你不希望 Git 跟踪这些文件,可以将它们添加到 .gitignore
文件中,然后继续合并。
# 将文件添加到 .gitignore
echo "xxxxx.json" >> .gitignore
# 继续合并
git merge <branch_name>
git stash
临时保存未跟踪的文件如果你希望临时保存这些未跟踪的文件,可以使用 git stash
的 -u
或 --include-untracked
选项。
# 保存未跟踪的文件到 stash
git stash -u
# 继续合并
git merge <branch_name>
# 恢复 stash(如果需要)
git stash pop
如果你确定可以覆盖这些未跟踪的文件,可以使用 git clean
命令强制删除它们。
# 强制删除未跟踪的文件
git clean -f
# 继续合并
git merge <branch_name>
如果未跟踪的文件在目录中,可以使用 -d
选项:
# 强制删除未跟踪的文件和目录
git clean -fd
如果你不确定目标分支中是否有同名文件,可以先切换到目标分支查看:
# 切换到目标分支
git checkout <branch_name>
# 查看文件是否存在
ls bughunter/.obsidian/workspace.json
# 切换回原分支
git checkout main
但是如果还不能解决问题
这里还有一个非常强硬的方法
首先通过百度网盘或者u盘什么的,把多端的数据手动同步完成之后
在每一个终端执行,记住每一个终端
强制更新
git push -u origin main --force
强制更新并且覆盖所有历史(最后的方法,非常有效)
git push -u origin main --force-with-lease
git pull origin main
记得备份 git branch backup-branch