我在Git存储库中添加了一些代码。但是,另一个团队删除了我的新文件和更改,并提交了一个版本,我的代码消失了。我已经尝试回到我的旧提交并重新合并我的更改以将其恢复,但这不起作用。我认为有一个更新版本的代码被删除意味着repo不再想接受该代码。
如何恢复旧代码,然后将其重新引入仓库?
答案 0 :(得分:3)
Git不会阻止重新添加您的文件。相反,它听起来像是在尝试合并作为当前分支提示的祖先的提交。这是Git中的无操作,因为该提交已经合并。
听起来您想要部分还原删除代码的更改。
假设您知道删除更改的提交标识符:
git revert --no-commit $COMMIT
这将反向应用该特定提交并进行更改。不要提交,因为这会撤消所有更改。首先,您必须取消该提交中引入的合法更改。
选中git status
,然后使用git reset $FILE
重置您 想要还原的每个文件。这将取消暂存该文件中所做的任何更改。 (它将不恢复工作目录中的文件。)
如果您需要部分还原文件(删除该文件中的某些更改而不删除其他文件),请使用git reset --patch $FILE
,这将提示您在该文件中进行的每项更改。放弃您 希望保持原样的每项更改。
您可以随时使用git diff --cached
查看当前提交的更改内容。当diff反映已删除文件的恢复以及在错误提交中错误地进行的任何其他更改时,提交结果。
答案 1 :(得分:2)
Git中没有任何内容可以阻止代码重新添加,因为之前已添加和删除了代码。您只需进行更改git add
,然后git commit
。
答案 2 :(得分: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