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 Amend - Fatal编程技术网

Git 修改旧邮件是否安全?

Git 修改旧邮件是否安全?,git,git-amend,Git,Git Amend,我正在跟踪文档以修改已推送的提交消息。我现在有我的本地分支机构,其中包含修改后的信息,以及修改后的所有承诺的副本 我确信其他人已经做出了这些承诺 推我当地的分公司安全吗?会给其他人带来什么后果?如果您修改了任何提交,则意味着您已经重写了该分支的历史记录。注意,仅仅更改提交消息就意味着Git创建了一个新的提交来代替旧的提交。我不知道您是否使用了交互式的rebase、筛选器分支或git提交-修改,但它不会改变很多情况 推送此分支的结果是,其他使用此分支的人在尝试拉送时可能会得到合并提交。其原因见下图

我正在跟踪文档以修改已推送的提交消息。我现在有我的本地分支机构,其中包含修改后的信息,以及修改后的所有承诺的副本

我确信其他人已经做出了这些承诺

推我当地的分公司安全吗?会给其他人带来什么后果?

如果您修改了任何提交,则意味着您已经重写了该分支的历史记录。注意,仅仅更改提交消息就意味着Git创建了一个新的提交来代替旧的提交。我不知道您是否使用了交互式的rebase、筛选器分支或git提交-修改,但它不会改变很多情况

推送此分支的结果是,其他使用此分支的人在尝试拉送时可能会得到合并提交。其原因见下图:

remote: A -- B -- C -- E       # you rewrote D to C
local:  A -- B -- D -- E
当您的一位同事尝试拉取时,Git会发现B提交是本地和远程分支之间的共同祖先。它将首先尝试用C-E快进本地分支,但随后意识到这也是不可能的,因为本地分支已经发散,并且在B上有自己的提交集。因此,Git将使用远程更改创建合并提交。但这将包括提交C和D,这可能导致奇怪

发生这种情况的唯一例外是自commit B或更早版本以来没有拉取分支的人。在这种情况下,这样的人不会注意到你重写了那件事,因为他的当地历史一开始就不知道这件事

注意:如果您希望继续,您的同事可能希望执行以下操作:

git fetch origin                 # update tracking branches
git reset --hard origin/master   # reset local master to remote (effectively overwrite)
如果您修改了任何提交,则意味着您已经重写了该分支的历史。注意,仅仅更改提交消息就意味着Git创建了一个新的提交来代替旧的提交。我不知道您是否使用了交互式的rebase、筛选器分支或git提交-修改,但它不会改变很多情况

推送此分支的结果是,其他使用此分支的人在尝试拉送时可能会得到合并提交。其原因见下图:

remote: A -- B -- C -- E       # you rewrote D to C
local:  A -- B -- D -- E
当您的一位同事尝试拉取时,Git会发现B提交是本地和远程分支之间的共同祖先。它将首先尝试用C-E快进本地分支,但随后意识到这也是不可能的,因为本地分支已经发散,并且在B上有自己的提交集。因此,Git将使用远程更改创建合并提交。但这将包括提交C和D,这可能导致奇怪

发生这种情况的唯一例外是自commit B或更早版本以来没有拉取分支的人。在这种情况下,这样的人不会注意到你重写了那件事,因为他的当地历史一开始就不知道这件事

注意:如果您希望继续,您的同事可能希望执行以下操作:

git fetch origin                 # update tracking branches
git reset --hard origin/master   # reset local master to remote (effectively overwrite)

这篇文档中的信息非常清楚:不要包含任何您已经推送到中央服务器的提交-它会把其他人搞得一团糟。不是吗?这篇文档中的信息非常清楚:不要包含任何您已经推送到中央服务器的提交-这会把其他人搞得一团糟。不是吗?所以。。现在修改消息已经太晚了。我可以接受。@Elist您当然可以更改消息,但您需要让您的团队知道。如果你有一个足够严密的阴谋,你可以改写历史并逃脱惩罚。但一般来说,您应该避免重写公共共享分支的历史记录。我实际上不太明白-为什么git不能促进对消息的无缝修改,这将保留历史记录,只更改消息?这样的更改不会造成伤害,因此可以认为是快进的,并且可以在获取存储库后应用。Git提交被视为实际发生情况的记录。更改提交消息可能被解释为一种伪造。想象一下一家对冲基金或高频交易公司,由于糟糕的代码而损失了一大笔钱。现在想象一下,如果工程师们可以回去删除一些有罪的提交消息。这就是Git需要进行新提交的原因,这对于提交内容来说是完全正确的。我认为这个信息不太重要。。但我还是可以接受,所以。。现在修改消息已经太晚了。我可以接受。@Elist您当然可以更改消息,但您需要让您的团队知道。如果你有一个足够严密的阴谋,你可以改写历史并逃脱惩罚。但总的来说,您应该避免重写公共共享分支的历史记录。我实际上不太明白——为什么git不能促进无缝连接
对消息的修改,哪些将保留历史记录而只更改消息?这样的更改不会造成伤害,因此可以认为是快进的,并且可以在获取存储库后应用。Git提交被视为实际发生情况的记录。更改提交消息可能被解释为一种伪造。想象一下一家对冲基金或高频交易公司,由于糟糕的代码而损失了一大笔钱。现在想象一下,如果工程师们可以回去删除一些有罪的提交消息。这就是Git需要进行新提交的原因,这对于提交内容来说是完全正确的。我认为这个信息不太重要。。不过,我还是可以接受的。