7

在开始我的项目之前我忘记切换到一个新分支,现在我需要将我的更改推送到一个新分支(不是主分支),以便另一个人审查我的工作。我的工作已经完成,但保存在我当地的主人那里。

我怎样才能将我的更改移动到一个新的分支中,所以当我推送它时不会与主分支混淆,而是创建一个新的远程分支?

4

3 回答 3

15

首先,既然您已经完成了本地 master 分支的所有工作,请创建一个指向 tip 或本地 master 的新功能分支。

$ git checkout -b newfeature master

然后将主服务器留在服务器中(远程)

$ git checkout master
$ git reset --hard origin/master
于 2012-04-26T13:59:31.393 回答
1

在与 master 相同的位置创建一个新分支。

签出 master,并将您当前的分支硬重置为您想要回退到的提交。

于 2012-04-26T13:50:31.267 回答
0

我不确定发生了什么,但是当我遵循 KurzedMetal 的 git 命令时,它并没有给我想要的结果。

因此,尽管在将硬重置回远程主机以及导出更改的文件之前进行了备份,但除了重新进行更改外,我没有其他选择。导出和备份都毫无价值,因为它们包含与我的本地存储库完全相同的内容,因此我的更改丢失了。我原以为两者都不会改变。

幸运的是,在我开始处理推送问题之前,我已经隐藏了我的更改。
注意:硬重置后新创建的文件不会被删除。

以下是我的修复步骤:

  1. 完成您的更改(仍在master中)
  2. 远程主机中提取新更改并修复任何冲突
  3. TortoiseGit -> Stash save. 输入一条消息以将其与其他存储区分开 -> 好的
  4. TortoiseGit -> Show log. 选择最新的master,然后右键单击并选择Reset,然后Hard option->确定
  5. TortoiseGit -> Create Branch. 输入名称并选中复选框Switch to new branch-> 确定
  6. TortoiseGit -> Stash list. 选择您保存的存储 -> 确定
  7. 现在您会看到不同文件的列表。对于每个文件,比较差异并将更改再次应用于新重置的文件
  8. 完成后,右键单击本地文件夹。你应该看到Git Commit -> "BranchName" ...上面TortoiseGit,选择第一个
  9. 确认要提交的文件,然后输入合适的描述 -> 确定
  10. 现在你准备好了pushTortoiseGit -> Push,检查本地分支是否是您选择的名称。如果不是,那么您忘记在 5 中切换分支,并且必须从 6 继续。

我希望这对其他人有帮助。要记住的事情:当你开始一个新功能/非小改动时切换到一个新分支

于 2012-04-27T09:36:59.260 回答