【发布时间】:2016-08-03 19:07:49
【问题描述】:
我已经阅读了有关此的其他问题,但我的问题是在本地 git 中丢失文件的特殊情况,没有踪迹。
我克隆了一个存储库:
git clone https://github.com/uruddarraju/kubernetes
cd kubernetes/
我使用以下命令获取项目 kubernetes 的上游:
git remote add upstrm https://github.com/kubernetes/kubernetes
git fetch upstrm
这带来了一堆标签如下:
uruddarraju$ git tag
v1.3.2-beta.0
v1.3.3
v1.3.3-beta.0
v1.3.4
我正在尝试将 v1.3.4 合并到分支 tess 或远程源中
git merge v1.3.4
我必须解决很多合并冲突,但有趣的是,我还看到本地文件系统中现在缺少一个添加到 upstrm/v1.3.4 的新文件,我没有看到该文件在 git 状态下。
这怎么可能?我期待这些文件作为合并的一部分添加,但显然它们不是。
uruddarraju$ ls pkg/genericapiserver/
resource_encoding_config.go
我正在寻找文件 resource_config.go 我放弃了合并并签入 v1.3.4 以验证该文件是否存在于该分支中:
uruddarraju$ git checkout -b merege1.3 v1.3.4
uruddarraju$ ls pkg/genericapiserver
resource_config.go
resource_config_test.go
resource_encoding_config.go
我在两个分支上做了一个 git diff,我清楚地看到文件已经添加到 upstrm/v1.3.4 我在 v1.3.4 上运行了以下内容
uruddarraju$ git diff master --name-status
A pkg/genericapiserver/resource_config.go
A pkg/genericapiserver/resource_config_test.go
A pkg/genericapiserver/resource_encoding_config.go
当我反其道而行之时,在 master 上并与 v1.3.4 进行比较时,我看到了:
uruddarraju$ git diff v1.3.4 --name-status
D pkg/genericapiserver/resource_config.go
D pkg/genericapiserver/resource_config_test.go
D pkg/genericapiserver/resource_encoding_config.go
编辑 1:
合并基础如下图:
uruddarraju$ git merge-base --all HEAD v1.3.4
812b9a47d6625b0fd02af18f9b147720f3c6bfce
编辑 2:
我还看到以下警告:
warning: inexact rename detection was skipped due to too many files.
warning: you may want to set your merge.renamelimit variable to at least 4292 and retry the command.
我显然遗漏了一些东西。任何帮助将不胜感激。
【问题讨论】:
-
您的
HEAD提交和v1.3.4标识的提交的合并基础是什么?也就是说,运行git merge-base --all HEAD v1.3.4。理想情况下,这将打印出单个 Git 哈希,这是合并基础的 ID。如果有多个 ID,事情会变得有点困难,所以让我们先找到它。 -
LM-SJN-00877661:kubernetes uruddarraju$ git merge-base --all HEAD v1.3.4 812b9a47d6625b0fd02af18f9b147720f3c6bfce
标签: git github merge git-merge