0

我在我们的 Git 存储库中添加了一些代码。但是,另一个团队删除了我的新文件和更改并提交了一个版本,而我的代码已经消失。我试图回到我的旧提交并重新合并我的更改以将它们恢复,但这不起作用。我想有一个更新版本的代码被删除的事实意味着 repo 不想再接受该代码了。

如何带回我的旧代码,然后将其重新引入 repo?

4

3 回答 3

3

Git 不会阻止您的文件被重新添加。相反,听起来您正在尝试合并作为当前分支提示的祖先的提交。这是 Git 中的无操作,因为该提交已经合并。

听起来您想对删除代码的更改进行部分还原。

假设您知道删除更改的提交标识符:

git revert --no-commit $COMMIT

这将反向应用该特定提交并分阶段进行更改。不要提交,因为这会撤消所有更改。首先,您必须取消该提交中引入的合法更改。

检查git status然后重置您不想使用还原的每个文件git reset $FILE。这将取消暂存对该文件所做的任何更改。(它不会恢复工作目录中的文件。)

如果您需要部分还原文件(删除该文件中的一些更改,但不删除其他更改),请使用git reset --patch $FILE,它将提示您对该文件所做的每个更改。放弃您希望从提交中保持原样的每个更改。

在任何时候,您都可以使用git diff --cached. 当差异反映已删除文件的恢复以及在错误提交中错误地进行的任何其他更改时,提交结果。

于 2013-08-27T18:18:48.713 回答
2

Git 中没有任何东西会阻止代码因为之前被添加和删除而被重新添加。你只需要做出改变,git add他们,git commit他们。

于 2013-08-27T18:13:21.527 回答
0

您可以简单地cherry-pick介绍您的代码的提交:

mkdir test
cd test
git init
echo "foo" > foo.txt
echo "bar" > bar.txt
git add foo.txt; git commit foo.txt -m "added FOO"
git add bar.txt; git commit bar.txt -m "added BAR"
git rm  foo.txt; git commit foo.txt -m "removed FOO"
# the next line will recreate the deleted 'foo.txt' 
#      by cherry-picking the commit that created it
git cherry-pick HEAD~2
于 2013-08-27T18:19:58.083 回答