Git如何签出分支的提交

use*_*666 14 git

如何查看分支的提交版本git.例如,我的分支Dev有一个提交ad4f43af43e.我该如何查看该提交?不只是一个文件,而是整个分支.我在网上搜索并发现:git checkout <commit>,但它没有指定分支名称

谢谢.

sma*_*ber 16

git checkout <hash>   # non named commit
git checkout <branch_name>  # named commit
Run Code Online (Sandbox Code Playgroud)

上面的两行将HEAD指针放在给定的提交上.您应该知道分支名称是提交,除非您在该分支上添加新提交时它可以进化.

如果您想在分支Dev上设置分支,则ad4f43af43e可以执行此操作

git branch -f Dev ad4f43af43e
Run Code Online (Sandbox Code Playgroud)

小心!这很危险,因为你可能会失去提交


mys*_*dad 9

如果您希望从分支的特定提交中分支出来,请首先确保您在分支机构中,

git checkout dev
Run Code Online (Sandbox Code Playgroud)

现在我想从dev分支检出特定的提交123654到一个新的分支,同时保持头部在主分支上.

git checkout -b new-branch 123654
Run Code Online (Sandbox Code Playgroud)

  • 这很好用,但切换发生了,所以 HEAD 将是“新分支”。 (2认同)

Saj*_*han 6

您可以checkout到commit-sha那时,创建一个新的分支(说feature)从提交。

$ git checkout <commit>
$ git checkout -b feature    # create a new branch named `feature` from the commit


# if you want to replace the current branch (say 'develop') with new created branch ('feature') 
$ git branch -D develop     # delete the local 'develop' branch
$ git checkout -b develop   # create a new 'develop' branch from 'feature' branch 
Run Code Online (Sandbox Code Playgroud)

  • @user1615666:*所有* Git 分支都是本地的。(即使你的“远程跟踪分支”,比如 `origin/master`,实际上都是本地的!当你运行 `git fetch` 时,它们只是自动 *更新* 以匹配 `origin`。把 `fetch` 想象成“Tell我的 Git 通过互联网电话调用另一个 Git,并获取其他 Git 为我的 Git 所做的任何更新。”同时,`git push` 是“让我的 Git 调用同一个其他 Git,而不是*获取*东西,*给*他们东西并要求他们更新他们的分支。”) (2认同)