Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.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 - Fatal编程技术网

Git 如何知道我';我要重新设定基准了?

Git 如何知道我';我要重新设定基准了?,git,Git,有几个地方提到了这一点。如果执行rebase的每个操作中都有rebase命令,那么这将是一条简单的规则: $ git rebase foobar 但是,我看到它提到了其他命令(即,reset)也可能在幕后执行重基。因此,“thall shall not rebase”规则变得更难遵循,因为用户可能不知道他正在运行的命令将包含一个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:这是一篇很棒的帖子,但它只告诉我重新设置基础的内容。它没有告诉我哪些命令容易导致重基。这里有细微的差别。