我可以在现有提交下方进行 git 提交,而不在下一次提交中保留其任何内容吗? (只是为了让历史上的代码)
Can I make a git commit below existing commits without keeping any of its content in the next commit? (just to have the code in history)
我曾经和我的团队一起做一个项目,在我们搬到 git 之前我们使用 svn 进行版本控制,现在 svn 的历史早已不复存在。我有我们开始使用的原始资源,我希望它显示在 git 历史记录中,这样我就可以看到我们从 git 或 IDE 所做的更改。
为了能够做到这一点,我必须能够在不保留任何内容的情况下将原始资源置于现有提交之下。
历史现在的样子:
- 添加自述文件
- 添加新来源
- 改变 1
- 变2
- ...
我希望它看起来像:
- 添加自述文件
- 添加旧来源
- 添加新来源
- 改变 1
- 变2
- ...
我们还删除或重命名了许多文件,我不希望它们属于存储库的当前状态。
我能做的最好的事情就是检查新分支上的自述文件提交,将旧源代码放在它上面,然后使用他们的策略将主分支合并到分支中以覆盖文件。
我可以将旧源视为第二次提交,然后在最后一次更改之上进行合并提交。它保留了已删除或重命名的文件,但不显示现有文件的历史记录。
是否可以在不必重建整个存储库的情况下做到这一点?
我不太明白你想要什么....但如果我理解正确的话,你想在新源之前添加旧源......并且你在旧源和新源之间移动了很多文件消息来源,对吗?
好的....这样做:
git checkout -b temp revision1
// put the _old_ sources here
git add .
git commit -m "Old sources"
git checkout revision2 # where you have the new sources
git reset --soft temp # set the branch pointer in "old sources keep all files the way they are, everything that changed will be in index... even moved files
git commit -m "new sources¨
# let's move temp branch's pointer
git branch -f temp
git checkout temp
# now we replicate the other changes from master (master, right?)
git cherry-pick revision2..master
# if you like the result
git branch -f master # set master over here
git checkout master
git branch -d temp
大功告成
我曾经和我的团队一起做一个项目,在我们搬到 git 之前我们使用 svn 进行版本控制,现在 svn 的历史早已不复存在。我有我们开始使用的原始资源,我希望它显示在 git 历史记录中,这样我就可以看到我们从 git 或 IDE 所做的更改。
为了能够做到这一点,我必须能够在不保留任何内容的情况下将原始资源置于现有提交之下。
历史现在的样子:
- 添加自述文件
- 添加新来源
- 改变 1
- 变2
- ...
我希望它看起来像:
- 添加自述文件
- 添加旧来源
- 添加新来源
- 改变 1
- 变2
- ...
我们还删除或重命名了许多文件,我不希望它们属于存储库的当前状态。 我能做的最好的事情就是检查新分支上的自述文件提交,将旧源代码放在它上面,然后使用他们的策略将主分支合并到分支中以覆盖文件。 我可以将旧源视为第二次提交,然后在最后一次更改之上进行合并提交。它保留了已删除或重命名的文件,但不显示现有文件的历史记录。
是否可以在不必重建整个存储库的情况下做到这一点?
我不太明白你想要什么....但如果我理解正确的话,你想在新源之前添加旧源......并且你在旧源和新源之间移动了很多文件消息来源,对吗?
好的....这样做:
git checkout -b temp revision1
// put the _old_ sources here
git add .
git commit -m "Old sources"
git checkout revision2 # where you have the new sources
git reset --soft temp # set the branch pointer in "old sources keep all files the way they are, everything that changed will be in index... even moved files
git commit -m "new sources¨
# let's move temp branch's pointer
git branch -f temp
git checkout temp
# now we replicate the other changes from master (master, right?)
git cherry-pick revision2..master
# if you like the result
git branch -f master # set master over here
git checkout master
git branch -d temp
大功告成