git - `git reset --hard master` 和 `git reset --hard origin/master` 有什么区别?

标签 git github version-control git-reset

我在 Stackoverflow/elsewhere 上尝试了很多链接来正确理解

的行为

git reset --hard option

我知道:

  • 如果它被省略或者它是 origin,则在 origin 上的最近一次提交上完成重置
  • 如果提供了 SHA1 哈希,则会在相应的提交上完成重置。

我不明白的是以下值:

  1. 来源
  2. 来源/主人
  3. 起点/分支

所有似乎都有相同的行为,即它们指向 master 上的最新提交。

请解释上面提供的所有 4 个值选项的意义是什么。

我还想知道如果我在一个特定的分支上,我该如何重置到那个分支上的最后一次提交? 例如,如果我在 v1.2 上,origin/v1.2 仍会将我带到 master 上的最新提交。

最佳答案

首先你需要明白分支和标签名称只是指向散列值的指针,它代表一次提交,如果你说有 4 个选项具有相同的行为,那么第一个合乎逻辑的答案是因为它们都指向同一个提交

  • origin 我不确定这一点,但我认为 origin 本身会解析为 origin/HEAD 我think 将取决于你的 github 设置,在 github 中你设置了一个“默认分支”,origin/head 将解析为 origin/[default_branch],在你的情况下我假设它是 master,所以这就是为什么它与 origin/master 具有相同的效果。

  • HEAD 始终指向当前提交,即您所在的提交,因此 git reset --hard HEAD 将永久删除跟踪中的所有更改文件和暂存文件更改,但不更改提交哈希。

  • origin/master 是自上次获取/pull 以来远程 master 分支中的最后一次提交,每次提交到 master 时,您的本地 master 已更新并且您的 origin/master 也已更新,如果其他人推送到 master 您的 repo 将不知道有更新,除非您执行 git fetch 然后你的 origin/master 将移动到你的 master 之前,或者甚至可能发散。
    运行 git reset --hard origin/master 如果你当前在 master 分支并且 master 在与 origin/master

  • 同步
  • origin/branch 我不确定这代表什么,因为默认情况下没有 origin/branch,所以我猜你创建了一个分支称为 branch 并且碰巧与你的主人在同一个提交中,以确认你可以尝试做一个 git branch 来查看你所有的分支,我猜你会找到一个名为 branch

  • 的分支

要以可视化方式查看所有这些,您可以尝试运行 git log --graph --decorate --all 或者我更喜欢像 gitk 这样的可视化工具,如果你安装了二进制文件,你将运行 gitk --all 来查看所有分支之间的相对关系

关于git - `git reset --hard master` 和 `git reset --hard origin/master` 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29862319/

相关文章:

git - 使用 git 在 Android Studio 项目上进行协作

git - Visual Studio Code 是否有类似于 Sublime text 的 GitGutter 的插件

python - MLWIC : Machine Learning for Wildlife Image Classification in R Issues with Python

git - 如何删除不小心推送的东西

open-source - GitHub Contributing、Pull Requests 与 New Issue 的礼仪

version-control - 将 hg 修订版写入文件的 Gradle 任务

git - 如何在开源项目中 stash 私有(private)信息?

GitFlow 正在将 master 的不需要的方面 merge 到修复完成的开发中

git - 在 Github 中 merge pull 请求中的一些提交

git - E325 : ATTENTION Found a swap file by the name ".git/.COMMIT_EDITMSG.swp"