更改分支使我的新文件仅显示在旧文件上

时间:2013-10-17 19:43:49

标签: git branch

我已将我正在工作的分支从'master'切换到'stable'分支,进行了修改并提交/推送到该分支。切换回'master'并开始为软件实现新功能。但是当我尝试添加修改时,只有已修改或删除的文件才会添加到存储库中。我创建的新内容并没有显示出来!

所以我将所有文件复制到计算机中的新位置,再次将分支切换到'稳定',令我惊讶的是我的新文件!我删除了这些文件以确保没有在该分支中进行任何修改,切换回“master”,从备份中复制文件并且没有出现新文件。

我已经做了一千次了,这是第一次发生这种情况。我使用SourceTree,但为此我也尝试了git bash(我对它并不了解)。

发生什么事了?为什么我的新文件“附加”到“稳定”分支?我该如何解决这个问题?

提前致谢。

更新
我已经在另一个文件夹中复制了相同的存储库以查看是否有效,但我没有成功。问题仍然存在。

3 个答案:

答案 0 :(得分:1)

根据我对您的问题的理解,您在一个分支(stable)上修改,添加和提交了文件,当您切换到另一个分支(master)时,您无法找到您master分支的更改。

要解决此问题,您需要将分支稳定合并到分支主数据中。 git跟踪每个分支对跟踪文件的更改,并查看对另一个分支中的一个分支所做的更改,您需要明确告诉它合并这些更改。

假设您的所有代码都在分支中运行代码并且您已经隐藏了新的更改(使用git stash),您可以使用

将稳定分支合并到主分支中
git checkout master
git merge stable

如果您已经进一步处理并提交了一些常见文件并且您的分支已经分歧,这可能会引发一些合并冲突,因此您可能需要手动解决这些冲突。

修改

OP在他的评论中说git add . --force为他工作。

这意味着,master分支上的.gitignore模式之一忽略了master分支的所有本地更改。我建议将两个分支中的.gitignore文件相互映射(全部),并确定导致问题的模式。

来自git add man page

默认情况下,git add命令不会添加被忽略的文件。如果在命令行中显式指定了任何被忽略的文件,git add将失败并显示一个被忽略的文件列表。由Git执行的目录递归或文件名通配所达到的忽略文件(在shell之前引用你的globs)将被默默忽略。 git add命令可用于使用-f(强制)选项添加被忽略的文件。

答案 1 :(得分:0)

尝试使用

  

git add fileName

当你在主分支上时,来自git bash的

命令,用于所有新文件。

答案 2 :(得分:0)

如果您使用SourceTree,有一种更方便的方法将文件添加到git。您只需按顶部按钮栏上的添加或添加/删除按钮即可。