【问题标题】:How to merge or rebase in git when the directory structure changed?目录结构发生变化时如何在git中合并或变基?
【发布时间】:2016-09-14 21:08:32
【问题描述】:

我提前道歉。我对 git 很陌生,我刚刚接手了一个存储在 git 中的项目。

这是我的情况 - 我接手的项目的目录结构在我的组织中不是标准的。

我用新的 dir 结构创建了新的分支,我使用了 git mv。我需要使分支名称成为标准。已经有一个具有标准名称但目录结构错误的分支。

我正在开发一个名为“develop”的分支,它具有我们想要的目录结构。我主要了解合并,但我还不太了解变基。本质上我需要让其他非标准分支完全像“开发”分支。

由于目录结构发生变化,合并不起作用,我已经尝试过。

我如何简单地使其他分支完全像“开发”?

更新:

我意识到只要不推到远程,我就可以练习。

之前,我选择了其中一个分支来更改目录结构(“test”分支):

cd 到要移动文件的目录

键入此命令(这表示您要更改的当前目录结构)

git mv OldDir1/OldDir2/* .

注意最后的句号,紧跟在 OldDir2/* 之后的空格

提交并推送。注意:这将删除每个文件的历史记录。

我之前也对“开发”分支进行了此操作。

现在,两个分支(开发、测试)都有新的目录结构。

然后:

git checkout 开发 git结帐测试 git rebase 开发

此时,它无法解析 podfile 和 podfile.lock 文件。

Sourcetree 显示 pull (2) 和 push(前面的提交次数)。

我尝试了几件事,但无法让 sourcetree 从开发中获取 podfile,它一直想从测试分支中获取 podfile。

直到我解决了 pull (2),也就是提到的两个 podfile,它才会推送。

我终于拉了两个 podfile 并提交/推送,即使它们已经过时了。

我会更改它们并推送。

这完成了我想要的,我检查了几个文件以了解最近的更改,以确保“测试”与“开发”是最新的。

【问题讨论】:

    标签: git github merge rebase


    【解决方案1】:

    对于定义明确且运行良好的项目,这不是您想要做的事情,但您可以简单地检查您的主分支并将您所做的复制到您的“开发”分支。

    我真的不明白为什么您不能将“开发”合并到您的“主”分支中,但是如果您有合并冲突,可能会将这些冲突拉到您的“开发”分支中,解决(这可能会很糟糕很多)冲突,重新合并到 master 也可能是一个解决方案。您可以在本地执行所有这些操作,而无需将任何内容推送到您的原点,因此只要您不推送到原点,它就是“安全的”。如果您确信该结构是您想要的,您可以推送到“原点”,您的更改将对从事该项目的其他人可见。

    【讨论】:

    • 谢谢,我迟到了,但对新手(当时)的建议很好。
    猜你喜欢
    • 2020-08-23
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 2021-10-09
    • 2017-03-09
    相关资源
    最近更新 更多