Git切换到主分支并将未跟踪的文件带来

11

当我在feature_branch上工作时,我发现整个网站有一个bug需要修复。我想将bug修复提交到主分支master,而不是我的feature_branch。由于修复涉及添加一些新文件,因此当我尝试切换到master分支时,系统会中止操作并警告我未跟踪的文件将被覆盖。

那么我该如何切换到master分支并将未跟踪的文件带入呢?


2
这个警告听起来像是你的主分支中已经有一些与你未跟踪的文件同名的文件。 - Paŭlo Ebermann
3个回答

27

有些地方似乎不对。一般来说,当你切换分支时,未跟踪的文件会自动带到新分支中而不需要任何提示。这就是为什么它们被称为“未跟踪”。但是,你说未跟踪的文件将被覆盖。这意味着你在新分支中创建了一个已经存在于主分支中的“未跟踪文件”。这意味着你必须决定要保留哪个文件。这不是让git执行某些操作的问题,而是你没有清楚地表达你想要它做什么。

假设你想解决两个相同文件的冲突,你可以执行以下操作:

git checkout feature_branch
git stash
git checkout master
git stash pop

然后解决将会出现的冲突。


4

解决这个问题的一个方法是将您的更改隐藏起来,然后在主分支上恢复它们。

  1. 确保您已经提交了与此错误修复无关的所有其他更改
  2. 运行git stash save "bug fix for master"
  3. git checkout master
  4. git stash pop
  5. 解决由stash pop引起的任何冲突
  6. 将此修复提交到master
  7. 切换回您的特性分支

0

我能想到的最简单的解决方案是制作您未跟踪/修改的文件的本地副本。然后检出您的主分支,从那里重新上传并添加提交。如果有任何冲突,git 将通知您,您可以在那时合并。


与上述解决方案建议使用Git stash相同,这只是一种手动的方式。 - pal4life

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接