git - 回到 SourceTree 中的上一个提交

标签 git bitbucket commit git-checkout revert

我是 Git 的新手,我正试图恢复到 SourceTree 中的先前提交。我右键单击要还原到的提交,然后单击 checkout 。它给了我一个提示,说我的工作副本将成为一个独立的头。这是什么意思,这是我应该避免的事情吗?

最佳答案

根据 Git-Tower 的文章:What's a "detached HEAD" in Git?

Understanding how "checkout" works

With the "git checkout" command, you determine which revision of your project you want to work on. Git then places all of that revision's files in your working copy folder.

Normally, you use a branch name to communicate with "git checkout"

$ git checkout development

However, you can also provide the SHA1 hash of a specific commit instead:

$ git checkout 56a4e5c08
Note: checking out '56a4e5c08'.

You are in 'detached HEAD' state...

This exact state - when a specific commit is checked out instead of a branch - is what's called a detached HEAD.

enter image description here

The problem with a detached HEAD

The HEAD pointer in Git determines your current working revision (and thereby the files that are placed in your project's working directory). Normally, when checking out a proper branch name, Git automatically moves the HEAD pointer along when you create a new commit. You are automatically on the newest commit of the chosen branch.

When you instead choose to check out a commit hash, Git won't do this for you. The consequence is that when you make changes and commit them, these changes do NOT belong to any branch. This means they can easily get lost once you check out a different revision or branch: not being recorded in the context of a branch, you lack the possibility to access that state easily (unless you have a brilliant memory and can remember the commit hash of that new commit...).

总结: 从 SourceTree,请 check out 到特定的分支,而不是 check out 到特定的提交。

关于git - 回到 SourceTree 中的上一个提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42523720/

相关文章:

git 克隆失败,错误代码为 "--stdin requires a git repository"

azure - Kudu 不支持 .net core 3.1 : can not autodeploy my . Bitbucket 中的 Net core 3.1 功能

build - Appharbor + Bitbucket 没有触发任何想法吗?

c# - 尽管我没有回滚我的事务,但 SQLite 事务没有成功?

git - git 说文件 "needs update"是什么意思?

python - gitpython 创建 zip 存档

sql - 自动增量 ID 是否可以在提交时从中间事务值更改?

MySQL更新不更新所有记录

c++ - Netbeans 忽略文件

git - 链接 git 钩子(Hook)