Git合并意外提交到开发分支

时间:2013-09-09 08:03:49

标签: git version-control github

我有一个带有主分支和开发分支的项目。所有更改都应在开发分支中提交。我意外地致力于主分支并将其推送到Github。开发分支中需要此提交。由于很难撤消上次推送,我认为将此提交合并到开发分支然后将开发分支合并回主分支可能是个好主意。

如果我这样做:

git fetch origin
git branch

我明白了:

* master

如果我这样做:

git checkout development

我明白了:

error: The following untracked working tree files would be overwritten by checkout:
(all kinds of files)
Aborting

2 个答案:

答案 0 :(得分:1)

由于您在更改分支之前要清除私有文件,我建议您首先在新克隆中修复该情况:

git clone https://username@github.com/username/reponame anewclone
cd anewclone
git checkout -b development --track origin/development
git merge master
git checkout master
git merge development
git checkout development
git push origin development
git push origin master

然后,您可以考虑原始仓库中与第二个克隆中的开发索引不同的文件:

cd anewclone
git --work-tree=/path/to/first/clone status

那将使用你的第二个克隆,但使用第一个克隆的工作树,并允许你添加任何丢失的文件。

答案 1 :(得分:0)

您可能拥有master未知的本地文件,但development已知。如果您不害怕丢失对这些本地文件所做的更改,则可以将强制标记-f添加到结帐:

git checkout -f development

我会查看git抱怨的文件(如果让你感觉更安全,请将它们保存在一个单独的文件夹中),以及它们可能来自哪里。