Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在分支合并到分支后重新创建git提交_Git_Git Hash - Fatal编程技术网

在分支合并到分支后重新创建git提交

在分支合并到分支后重新创建git提交,git,git-hash,Git,Git Hash,我无法访问笔记本电脑,因为我只将合并的分支(推到主分支上),但忘记了更新分支本身 因此,我尝试了以下小实验: $ mkdir g $ cd g $ git init $ echo 1 >> README.md $ git add README.md $ git commit -m"First commit" -- README.md $ git checkout -b b1 $ echo 2 >> README.md $ git commit -m"Second co

我无法访问笔记本电脑,因为我只将合并的分支(推到主分支上),但忘记了更新分支本身

因此,我尝试了以下小实验:

$ mkdir g
$ cd g
$ git init
$ echo 1 >> README.md
$ git add README.md 
$ git commit -m"First commit" -- README.md 
$ git checkout -b b1
$ echo 2 >> README.md
$ git commit -m"Second commit" -- README.md 
$ git checkout master
$ git merge b1
$ git checkout b1
$ git reset --hard HEAD~
$ git cherry-pick 365163b00fee76cdc6d3e34b139b0ed42b184437
上述操作不会以相同方式重新创建commit 365163b00fee76cdc6d3e34b139b0ed42b184437,而是创建另一个(d6debaa050c5)

从现有提交到分支上重新创建提交(不访问reflog)的正确命令是什么


对于我的特殊需要,我可以检查我是否有以下信息:

$ git show --pretty=fuller 365163b00fee76cdc6d3e34b139b0ed42b184437
commit 365163b00fee76cdc6d3e34b139b0ed42b184437
Author:     Mathieu Malaterre <example@example.org>
AuthorDate: Tue Feb 25 14:02:06 2020 +0100
Commit:     Mathieu Malaterre <example@example.org>
CommitDate: Tue Feb 25 14:02:06 2020 +0100

    Second commit

diff --git a/README.md b/README.md
index d00491fd7e5b..1191247b6d9a 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,2 @@
 1
+2
$git show--pretty=fuller 365163b00fee76cdc6d3e34b139b0ed42b184437
提交365163b00fee76cdc6d3e34b139b0ed42b184437
作者:Mathieu Malaterre
作者日期:周二2月25日14:02:06 2020+0100
提交:马修·马拉特尔
承诺日期:周二2月25日14:02:06 2020+0100
第二次提交
diff——git a/README.md b/README.md
索引d00491fd7e5b..1191247b6d9a 100644
---a/README.md
+++b/README.md
@@ -1 +1,2 @@
1.
+2
  • 分支b1未更改,因此父级sha1是正确的
  • 提交信息正确(消息、作者、提交者和时间戳)

您永远无法完全重新创建完全相同的提交哈希。尽管散列不同,但内容可以相同

以下信息全部用于确定提交哈希:

  • 提交的源树(分解到所有子树和 水滴)
  • 父提交sha1
  • 作者信息(带时间戳)
  • 提交者信息(对,这些是不同的!还有时间戳)
  • 提交消息

(请参阅)。

您永远无法完全重新创建完全相同的提交哈希。尽管散列不同,但内容可以相同

以下信息全部用于确定提交哈希:

  • 提交的源树(分解到所有子树和 水滴)
  • 父提交sha1
  • 作者信息(带时间戳)
  • 提交者信息(对,这些是不同的!还有时间戳)
  • 提交消息

(请参阅)。

从技术上讲,您可以复制原始提交,包括其原始时间戳、父提交哈希值等,从而恢复原始提交。但要做到这一点,您必须拥有原始提交。那么,您没有进行新的提交,您只是昨天再次提交了原始提交,就在此时。:-)从技术上讲,您可以复制原始提交,包括其原始时间戳、父提交散列等,从而获得原始提交。但要做到这一点,您必须拥有原始提交。那么,您没有进行新的提交,您只是昨天再次提交了原始提交,就在此时。:-)