1

我有一个带有主分支和开发分支的项目。所有更改都应在开发分支中提交。我不小心将其提交到了 master 分支并推送到了 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
4

2 回答 2

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

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

于 2013-09-09T09:41:32.137 回答
0

您可能有不知道master但知道的本地文件development。如果您不怕丢失对这些本地文件所做的更改,可以在-f结帐时添加强制标志:

git checkout -f development

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

于 2013-09-09T08:20:09.177 回答