首先,我是Web开发的新手,所以如果我犯了任何明显的错误,请告诉我。
所以我决定,如果我想开始制作网站,我可能需要学习Git和GitHub。
我目前了解如何初始化存储库,暂存和提交并将其全部推送到GitHub页面。我现在正在努力的是恢复旧提交的过程。所以假设我已经做了两次提交,分别叫做commit 1,commit 2。
如果我在提交2我怎么回去提交1?我可以回去提交一个更改代码提交更改并仍然返回提交2后?在提交之间移动时,代码和文件会发生什么特别的情况。
请随便跟我说话,就像一个5岁的老人,他与Git和命令行无关。先谢谢你们。
答案 0 :(得分:1)
您可以使用reset
命令浏览历史记录。看它有多容易,首先让我们创建两个文件:
$ touch a
$ touch b
让我们提交其中一个:
$ git add a
$ git co -m "First commit"
[master d263314] First commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a
让我们提交另一个:
$ git add b
$ git co -m "Second commit"
[master 16aa86a] Second commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 b
现在让我们查看历史记录:
$ git log --oneline
16aa86a Second commit
d263314 First commit
38df137 Initial commit
正如您所看到的那样,有三个提交,并且它们具有哈希代码以进行distingush它们。
有一个特殊的指针指向历史记录之上的提交。它被称为HEAD
。当提交a
文件时,HEAD指向此提交,但是当提交第二个文件时,HEAD开始指向第二次提交。
reflog
命令可帮助您跟踪HEAD指向的历史记录。
$ git reflog
16aa86a HEAD@{0}: commit: Second commit
d263314 HEAD@{1}: commit: First commit
38df137 HEAD@{2}: commit (initial): Initial commit
为了摆脱最近的提交,你需要在之前的一次提交中使用HEAD点。这是reset
命令出现的时间。
$ git reset --hard HEAD@{1}
HEAD is now at d263314 First commit
小心,所有未分段的数据都会丢失。我们来看看历史:
$ git log --oneline
d263314 First commit
38df137 Initial commit
但是有可能不仅跳转到之前的提交之一,也可以跳转到任何提交,让我们回到第二次提交:
$ git reset --hard 16aa86a
HEAD is now at 16aa86a Second commit
让我们查看历史记录:
$ git log --oneline
16aa86a Second commit
d263314 First commit
38df137 Initial commit
正如您所见,历史记录已恢复
花点时间阅读amazing book我保证你会成为一名经验丰富的Git用户