我有一个使用Git进行版本控制的项目。
它基于一个开源项目,不是用Git管理的。
我从正式版本(比如版本1.0)开始,我从项目网站下载(作为zip文件)。
在我的存储库中,我添加了一些文件,修改了其他文件,删除了一些文件。
然后,开源项目发布了一个新版本(比如2.0)。我下载了zip文件,我想将它与我的开发同步。
在这个简单的例子中,我的软件开发版包含3个文件:
内容:
toto 1
toto 2
toto 3
内容:
line 1
line 2
line 30
版本2.0还包含三个文件:
内容:
line 1
line 2
line 3
内容:
line 1
line 20
line 3
要将我的开发版本与新版本合并,我会执行以下操作:
git checkout -b v2.0
git add -A .
git commit -m "v2.0"
git checkout master
git merge v2.0
控制台输出如下:
Updating 54cf5a5..14725f2
Fast-forward
modified.txt | 4 ++--
new_dev.txt | 3 ---
new_release.txt | 3 +++
3 files changed, 5 insertions(+), 5 deletions(-)
delete mode 100644 new_dev.txt
create mode 100644 new_release.txt
问题是:
我做错了什么?
有没有更好的方法来实现这一目标?
答案 0 :(得分:2)
我会按照这个工作流程来处理没有被Git版本化的远程项目:
git init
git add
所有项目文件,提交,然后git push origin master
git checkout -b yourBranch
从原始项目创建新分支您现在可以在yourBranch
中完成所有工作,就像在任何其他功能分支中一样。您无法通过Git回馈远程项目,因此您可能不会合并回master
。在更新分支时,您可以尝试以下
git checkout master
切换到master
分支git add
,然后git commit
git checkout yourBranch
git merge master
这个策略应该有效,但有一点需要注意。随着时间的推移,您将面临远程项目的进一步分歧的风险,远程项目不知道您的更改。它可以达到将master
的最新变化引入的点,然后合并可能会引发一些丑陋的合并冲突。最好的长期解决方案可能是找到一种方法,使用Git或其他版本控制工具在两个方向上为远程项目做出贡献。