Git rebase 并不总是创建新的提交并更改 SHA-1 代码?
Git rebase does not always create new commits and change SHA-1 codes?
当我想用在 bitbucket 中添加的提交更新我的代码时,我所做的是检查分支 A。从源中获取代码。并将 origin/A 的更改重新设置在 A 之上。在这种情况下,它不会创建具有不同哈希值的新提交。它重复我们在 Bitbucket 上的相同哈希值。但是我们都知道 rebase 会删除该特定分支上的所有提交,并在我们当前的提交之上添加相同的内容提交。那么,为什么我们没有不同的 SHA-1?
因为当您变基时 - 您将 remote/origin 中不存在的当前更改的基数更改为当前 remote/origin 中的基数。基本上这意味着 - 从 < from > 获取所有内容并将其放入我当前的分支,但将我当前的工作放在历史上所有内容的顶部,以保留提交顺序和线性历史记录。
Git 仅在现有提交的父级更改时创建新提交。在这种情况下,您不需要。据推测,您的本地提交 A
是从 origin/A
复制的提交的祖先,因此您实际上是通过在 A
之上重新设置 origin/A
来进行快进合并.或者更确切地说,您只是将 A
推进为 origin/A
引用的相同提交。从图形上看,你在 rebase
之前
A origin/A
* -- * -- * -- * -- * -- * -- *
和变基之后
origin/A, A
* -- * -- * -- * -- * -- * -- *
没有提交发生变化;您只是更改了 A
引用的内容。
当我想用在 bitbucket 中添加的提交更新我的代码时,我所做的是检查分支 A。从源中获取代码。并将 origin/A 的更改重新设置在 A 之上。在这种情况下,它不会创建具有不同哈希值的新提交。它重复我们在 Bitbucket 上的相同哈希值。但是我们都知道 rebase 会删除该特定分支上的所有提交,并在我们当前的提交之上添加相同的内容提交。那么,为什么我们没有不同的 SHA-1?
因为当您变基时 - 您将 remote/origin 中不存在的当前更改的基数更改为当前 remote/origin 中的基数。基本上这意味着 - 从 < from > 获取所有内容并将其放入我当前的分支,但将我当前的工作放在历史上所有内容的顶部,以保留提交顺序和线性历史记录。
Git 仅在现有提交的父级更改时创建新提交。在这种情况下,您不需要。据推测,您的本地提交 A
是从 origin/A
复制的提交的祖先,因此您实际上是通过在 A
之上重新设置 origin/A
来进行快进合并.或者更确切地说,您只是将 A
推进为 origin/A
引用的相同提交。从图形上看,你在 rebase
A origin/A
* -- * -- * -- * -- * -- * -- *
和变基之后
origin/A, A
* -- * -- * -- * -- * -- * -- *
没有提交发生变化;您只是更改了 A
引用的内容。