Git 如何知道我';我要重新设定基准了?
有几个地方提到了这一点。如果执行rebase的每个操作中都有Git 如何知道我';我要重新设定基准了?,git,Git,有几个地方提到了这一点。如果执行rebase的每个操作中都有rebase命令,那么这将是一条简单的规则: $ git rebase foobar 但是,我看到它提到了其他命令(即,reset)也可能在幕后执行重基。因此,“thall shall not rebase”规则变得更难遵循,因为用户可能不知道他正在运行的命令将包含一个rebase 用户如何知道哪些命令执行重定以避免重定? 编辑:一个动作,即使给出了公认的答案,也不清楚该动作是否为重基。通常,您需要阅读即将使用的命令的文档,并应用一些
rebase
命令,那么这将是一条简单的规则:
$ git rebase foobar
但是,我看到它提到了其他命令(即,reset
)也可能在幕后执行重基。因此,“thall shall not rebase”规则变得更难遵循,因为用户可能不知道他正在运行的命令将包含一个rebase
用户如何知道哪些命令执行重定以避免重定?
编辑:一个动作,即使给出了公认的答案,也不清楚该动作是否为重基。通常,您需要阅读即将使用的命令的文档,并应用一些常识,同时问自己一个问题: 此操作是否会更改作为本地git存储库的图形
如果您的回答是“是”,则需要检查您是否已推送将要更改的零件。通常,您需要阅读即将使用的命令的文档,并在问自己一个问题时应用一些常识: 此操作是否会更改作为本地git存储库的图形
如果您的回答是“是”,则需要检查您是否推送了将要更改的零件。正如在评论中指出的,实际问题是更改已共享的历史记录(例如:推送) 例如,如果您有:
A -- B -- C
\ L master | origin/master
\
-- D
如果在提交D
时重新设置master
的基址,则
A -- B -- C
\ L origin/master
\
-- D -- B' -- C'
L master
如您所见,如果按下master
,当前origin/master
将丢失
如果您执行git reset--hard HEAD ^,同样的事情也会发生,因为它会改变
A -- B -- C
L master | origin/master
到
正如您所看到的,当您知道一个命令应该做什么时,很容易理解它是否会改变历史
如有疑问,在执行操作后,可以使用gitk--all
可视化分支,以查看本地分支和远程分支是否仍然同步
还有最后一个安全网:Git会阻止你推动一些会改变历史的东西(你可以通过这个推动(
Git push-f
),但至少在你不知道的情况下是不会发生的) 正如评论中所指出的,实际问题是改变已共享的历史(例如:推送)
例如,如果您有:
A -- B -- C
\ L master | origin/master
\
-- D
如果在提交D
时重新设置master
的基址,则
A -- B -- C
\ L origin/master
\
-- D -- B' -- C'
L master
如您所见,如果按下master
,当前origin/master
将丢失
如果您执行git reset--hard HEAD ^,同样的事情也会发生,因为它会改变
A -- B -- C
L master | origin/master
到
正如您所看到的,当您知道一个命令应该做什么时,很容易理解它是否会改变历史
如有疑问,在执行操作后,可以使用gitk--all
可视化分支,以查看本地分支和远程分支是否仍然同步
还有最后一个安全网:Git会阻止你推动一些会改变历史的东西(你可以通过这个推动(
Git push-f
),但至少在你不知道的情况下是不会发生的) reset
不执行重基,问题不在于具体的重基,而在于一般的历史记录更改。但是,即使您事先不知道什么是安全的,什么是不安全的,push
通常会拒绝任何会改变历史的内容(您必须使用--force
来覆盖),因此您确实会收到通知,然后可以决定要做什么。这够好吗?@hvd:谢谢。push
的问题在于,用户只有在完成重基后才知道可能存在问题。我正在寻找一个事先知道的解决方案。我推荐Linus Torvalds,他在其中解释了哪些历史是要重新设置基础的,哪些不是,“你的代码”与“你的历史”有什么不同,从上游合并什么,从下游合并什么。@kostix:这是一篇很棒的帖子,但它只告诉我重新设置基础的内容。它没有告诉我哪些命令容易导致重基。细微的差别。reset
不执行重基,问题不在于具体的重基,而在于一般的历史变化。但是,即使您事先不知道什么是安全的,什么是不安全的,push
通常会拒绝任何会改变历史的内容(您必须使用--force
来覆盖),因此您确实会收到通知,然后可以决定要做什么。这够好吗?@hvd:谢谢。push
的问题在于,用户只有在完成重基后才知道可能存在问题。我正在寻找一个事先知道的解决方案。我推荐Linus Torvalds,他在其中解释了哪些历史是要重新设置基础的,哪些不是,“你的代码”与“你的历史”有什么不同,从上游合并什么,从下游合并什么。@kostix:这是一篇很棒的帖子,但它只告诉我重新设置基础的内容。它没有告诉我哪些命令容易导致重基。这里有细微的差别。