Going back to previous commit in SourceTree

谁说胖子不能爱 提交于 2019-12-23 13:00:58

问题


I am new to Git, and I was trying to revert back to a previous commit in SourceTree. I right clicked on the commit I was going to revert to and then clicked checkout. It gave me a prompt saying that my working copy would become a detached head. What does this mean and is this something I should avoid?


回答1:


As Per Git-Tower's Article : 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.

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...).

Summary : From SourceTree, Kindly Checkout to Particular Branch Instead of Checking out to Particular Commit.




回答2:


The issue seems not exactly related to git, but specific to the git client / provider you are using ( bitbucket I suspect).

I would suggest you to use the command line client, instead of web UI to learn git better.

In detached head state, whatever changes you make (and commit) gets detached from the commit tree, and you need additional work to put that commit back to the commit tree. Normally we don't make changes in detached head state, it is used for re-arranging the commit tree. But it is worth experimenting in detached state.



来源:https://stackoverflow.com/questions/42523720/going-back-to-previous-commit-in-sourcetree

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!