我将本地文件添加到git repo(git add .
)中并提交。
然后使用git rm *
删除文件并再次提交(第二次提交)。该删除了本地和远程文件。
是否热衷于从git(从第一次提交)将文件恢复到同一本地文件夹?
谢谢。
答案 0 :(得分:5)
自从提交以来,本地文件甚至不存在于分支HEAD上的文件系统中都没有关系,因为它是Git历史记录的一部分。要从先前的提交中检索文件,您可以尝试将其检出:
git checkout abc123 -- path/to/some/file.ext
其中abc123
是较早提交的SHA-1哈希。如果您不知道SHA-1
哈希是什么,只需从bash中运行git log
,然后找到较早的提交以及该提交的哈希即可。
编辑:
如果您确实想将整个分支还原为某个较早的提交,则通常安全的方法是通过git revert
。因此,继续上面的示例,如果您想还原最新的提交abc123
,则可以尝试:
git revert abc123
这将在分支的顶部添加一个 new 提交,但是它将在功能上撤销先前的HEAD提交所做的任何操作。这应该使项目中的所有文件都保持其早期状态。
答案 1 :(得分:2)
export const AppContext = React.createContext<Array<[AppState, Dispatch<AppAction>]> | null>(null);
将使分支返回一次提交,并相应地更新工作树(还原文件)。
这时,如果您已经推送了先前的状态,则只需使用git reset --hard HEAD^
推送到远程。
但是,如果您处于HEAD分离状态,则将无法正常工作,您必须将其签出(请参阅Tim的回答)。
答案 2 :(得分:2)
如果您仅提交已删除的文件,则至少有两个选择:
创建一个新的提交以还原旧的提交
git revert HEAD
git push
将分支重置为上一次提交。
git reset --hard HEAD
git push -f
请注意,第二个选项完全具有破坏性。如果您在上一次提交中添加了任何其他更改,则所有这些更改也将撤消。另外,如果您与同一分支上的另一个团队成员一起工作,那么git push -f
会给他们带来麻烦。 这只能用作万不得已的方法,或者如果您确定不会为他人弄乱。
答案 3 :(得分:1)
要返回提交git reset HEAD~1
,然后将其推送到源git push -f origin branch_name