Git-如何在两个单独的文件夹中的两个单独的分支上工作,并毫无问题地推送到公共源

Git-如何在两个单独的文件夹中的两个单独的分支上工作,并毫无问题地推送到公共源,git,tortoisegit,Git,Tortoisegit,我目前在两个独立的分支中有两个版本的软件。一个版本有重大更改(重命名了一些文件夹、重命名了一些文件、删除了许多文件) 我希望能够在这两个版本上工作-例如,在master中进行错误修复,将其推送到origin,或者将其合并到另一个分支中 我只是试着这么做,有点困惑。我在master中修复了错误,并将其推到了最前面。我把master拉到另一个分支文件夹中。这似乎也在融合。我推了推结果 现在,如果我在主文件夹中做了另一个更改,并尝试推送所有分支,我会收到与其他分支相关的投诉“更新被拒绝,因为推送的分支

我目前在两个独立的分支中有两个版本的软件。一个版本有重大更改(重命名了一些文件夹、重命名了一些文件、删除了许多文件)

我希望能够在这两个版本上工作-例如,在master中进行错误修复,将其推送到origin,或者将其合并到另一个分支中

我只是试着这么做,有点困惑。我在master中修复了错误,并将其推到了最前面。我把master拉到另一个分支文件夹中。这似乎也在融合。我推了推结果

现在,如果我在主文件夹中做了另一个更改,并尝试推送所有分支,我会收到与其他分支相关的投诉“更新被拒绝,因为推送的分支提示位于其远程对应项的后面”

然后,我试图将另一个分支拉入主文件夹,但这导致了一个可怕的合并,我最终得到了错误的分支。我想我已经恢复了,但我仍然无法从主文件夹中推送

显然,我误解了与陆龟合作的正确方式,有人能告诉我应该如何进行吗

git分行-vv的

in master folder:
  CodeFirst             3b4d37b [origin/CodeFirst] Show 25 entries in DataTables if the screen is big enough.
  CodeFirstWebFramework be03722 Added DocumentMemo to report fields.
  SilverstreamMerge     778b791 default.js merge
* master                6c1254c [origin/master] Prevent Download button appearing twice in reports.

in branch (CodeFirstWebFramework) folder
* CodeFirstWebFramework 08b9117 Merge branch 'master' of //router/var/svn/AccountServer into CodeFirstWebFramework
  master                b7994b3 [origin/master: behind 2] Validate Schedule.RepeatFrequency

in origin (upstream repo on another machine)
  CodeFirst             3b4d37b Show 25 entries in DataTables if the screen is big enough.
  CodeFirstWebFramework 08b9117 Merge branch 'master' of //router/var/svn/AccountServer into CodeFirstWebFramework
  SilverstreamMerge     778b791 default.js merge
* master                6c1254c Prevent Download button appearing twice in reports.

我认为我(错误地)期望
pull
命令将所有分支机构的所有修订从上游回购复制到本地回购。是否有命令可以执行此操作?

有一个名为“cherry-pick”的Git方法:如果您在一个分支中有一个提交,您可以在另一个分支上应用此提交。尝试使用此方法,但如果提交包含由于重命名而不存在的文件,我认为此方法将不起作用(我认为没有可行的解决方案)

切换到要应用提交的分支,在Ortoisegit中打开存储库的日志(在Ortoisegit上下文菜单中显示日志)。在左上角选择所有分支或应用提交的分支。找到提交,右键单击它,选择此提交。如果成功,不要忘记推送:)

有一种称为“cherry pick”的Git方法:如果在一个分支中有一个提交,那么可以在另一个分支上应用该提交。尝试使用此方法,但如果提交包含由于重命名而不存在的文件,我认为此方法将不起作用(我认为没有可行的解决方案)

切换到要应用提交的分支,在Ortoisegit中打开存储库的日志(在Ortoisegit上下文菜单中显示日志)。在左上角选择所有分支或应用提交的分支。找到提交,右键单击它,选择此提交。如果成功,不要忘记推送:)

听起来你有两个repo的克隆-一个签出到
主机
,另一个签出到
某个分支
。这是在本地保留两个分支的更“明显”的方法,它不一定有任何问题,但它确实意味着您有两个本地分支引用集

如果是这种情况,您可能需要考虑<代码> git工作树< /代码>作为选项。有了它,您可以将第二个工作树附加到单个本地repo,这样每个树都可以签出到不同的分支,而无需复制存储库的其他方面(如ref列表)。这可以让一切保持同步变得更简单


就你的情况而言。。。这对我来说似乎并不明显;了解您使用的确切命令可能会有所帮助。一般来说,我可以说当
推送
失败并显示错误消息时,
可能会有所帮助(或者,如果您担心在不知道原因的情况下这样做,请先执行
获取
,然后检查每个分支的本地和远程引用之间的差异).

听起来您有两个repo的克隆-一个签出到
master
,另一个签出到
某个分支
。这是在本地保留两个分支的更“明显”的方法,它不一定有任何问题,但它确实意味着您有两个本地分支引用集

如果是这种情况,您可能需要考虑<代码> git工作树< /代码>作为选项。有了它,您可以将第二个工作树附加到单个本地repo,这样每个树都可以签出到不同的分支,而无需复制存储库的其他方面(如ref列表)。这可以让一切保持同步变得更简单


就你的情况而言。。。这对我来说似乎并不明显;了解您使用的确切命令可能会有所帮助。一般来说,我可以说,当
推送
失败并显示错误消息时,
可能会有所帮助(或者,如果您担心在不知道原因的情况下这样做,请先执行
获取
,然后检查每个分支的本地和远程引用之间的差异)。

谢谢,我知道cherry pick-但是,就我所知,它不符合我的要求。我通常在这部分过程中使用rebase。但我的问题是如何让我的主文件夹进入允许推送到远程的状态-我想以某种方式用远程的git信息更新主文件夹中的另一个分支,而不改变文件夹中的源文件,也不进行任何合并或重设。谢谢,我知道cherry pick-但是,据我所知,它不符合我的要求。我通常在这部分过程中使用rebase。但我的问题是如何让主文件夹进入允许推送到远程的状态-我想用远程的git信息更新主文件夹中的另一个分支,而不改变文件夹中的源文件,或者进行任何合并或重基。您是否可以在存储库中执行
git branch-vv
,并粘贴结果?将母版合并到您的功能分支中不会出现任何损坏母版的问题,因此您描述它的方式应该是