Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git将除第一次提交之外的所有提交推送到远程repo_Git_Github_Version Control - Fatal编程技术网

Git将除第一次提交之外的所有提交推送到远程repo

Git将除第一次提交之外的所有提交推送到远程repo,git,github,version-control,Git,Github,Version Control,我将要实现的是将所有提交(我的更改)推送到公共回购,除了第一个提交(初始代码库) A-B-C-D-E 我只想推出一个新的远程回购 B-C-D-E 有可能吗?如果您希望第一次修订的项目内容是B中的内容,您可以这样做: git checkout --orphan new-branch B git commit -m "new first revision" # use a proper comment git cherry-pick B..E # replicate revisi

我将要实现的是将所有提交(我的更改)推送到公共回购,除了第一个提交(初始代码库)

A-B-C-D-E

我只想推出一个新的远程回购

B-C-D-E


有可能吗?

如果您希望第一次修订的项目内容是B中的内容,您可以这样做:

git checkout --orphan new-branch B
git commit -m "new first revision" # use a proper comment
git cherry-pick B..E # replicate revisions C, D and E
然后,
new branch
就有了您所期待的历史

如果您尝试使用交互式重新基址删除第一个修订版,则在B上修改的所有文件上可能会出现来自A的冲突。例如,如果A列出了所有或大部分文件,则B修改的任何文件都会出现冲突(应用C、D和E时可能会出现其他冲突),由于文件不存在,git将尝试在rebase上应用B。。。无论如何,这不是最难解决的问题。。。。但我提供的食谱完全忽略了这个问题

PS

另一种通过交互式重基实现的方法是运行:

git rebase -i --root
# revision A, the first one, leave it with a pick
# but ask to squash the second one B
# C, D and E, leave them with a pick
# save and exit
# git will stop so you can set the comment that will be left on the first revision,
# if I'm not wrong, and will show you the first and second revision comment
# set the right comment, save and exit
# rebase will continue and you will get a branch like what you are asking for
PS2所以我认为,这个要求与问题推断的有点不同(阅读对这个答案的评论)


这应该行得通

如果您希望第一次修订的项目内容是B中的内容,您可以这样做:

git checkout --orphan new-branch B
git commit -m "new first revision" # use a proper comment
git cherry-pick B..E # replicate revisions C, D and E
然后,
new branch
就有了您所期待的历史

如果您尝试使用交互式重新基址删除第一个修订版,则在B上修改的所有文件上可能会出现来自A的冲突。例如,如果A列出了所有或大部分文件,则B修改的任何文件都会出现冲突(应用C、D和E时可能会出现其他冲突),由于文件不存在,git将尝试在rebase上应用B。。。无论如何,这不是最难解决的问题。。。。但我提供的食谱完全忽略了这个问题

PS

另一种通过交互式重基实现的方法是运行:

git rebase -i --root
# revision A, the first one, leave it with a pick
# but ask to squash the second one B
# C, D and E, leave them with a pick
# save and exit
# git will stop so you can set the comment that will be left on the first revision,
# if I'm not wrong, and will show you the first and second revision comment
# set the right comment, save and exit
# rebase will continue and you will get a branch like what you are asking for
PS2所以我认为,这个要求与问题推断的有点不同(阅读对这个答案的评论)


这应该行得通

我尝试过几种方法(没有深入了解到底发生了什么),但它无助于执行
git-rebase-interactive
remove-a-then-push。简单的回答是不,你不能这样做。更长的答案是,生成的存储库将是Git所称的浅层存储库。Git确实有浅层的存储库,但您不能使用
Git push
创建一个,因此简短的回答是“不”。我尝试了几种方法(没有深入了解实际发生的情况),但它无助于执行
Git rebase interactive
删除一个then push。简短的回答是不,您不能这样做。更长的答案是,生成的存储库将是Git所称的浅层存储库。Git确实有浅层的存储库,但您不能使用
Git push
创建一个存储库,因此简短的回答是“不”。谢谢,但如果我看得对的话——通过这种方法,新分支将具有“第一次修订的项目内容是B中的内容”,因此它实际上包含了所有项目代码库。我想把我的改变和其他的区别开来。这可能吗?那么,澄清一下,如果没有整个代码库,就没有办法只推动更改?你可以。。。。。但tje要求与问题的内容略有不同。让我试着给你一个方法,更新我的答案。哦,我的坏。。。在我的理解中,“commit=content”,但现在我意识到它们是不同的术语。在git中,commit实际上是项目内容的快照,但通常我们指的是来自其父版本的修改所应用的更改,具体取决于上下文。在您的案例中,不清楚您是否只想保留在B中修改过的文件,直到EThank you,但如果我看得对的话——通过这种方法,新分支将具有“第一次修订的项目内容是B中的内容”,因此它实际上包含了所有项目代码库。我想把我的改变和其他的区别开来。这可能吗?那么,澄清一下,如果没有整个代码库,就没有办法只推动更改?你可以。。。。。但tje要求与问题的内容略有不同。让我试着给你一个方法,更新我的答案。哦,我的坏。。。在我的理解中,“commit=content”,但现在我意识到它们是不同的术语。在git中,commit实际上是项目内容的快照,但通常我们指的是来自其父版本的修改所应用的更改,具体取决于上下文。在您的情况下,不清楚您是否只想将在B中修改的文件保留到E