如何获取带有提交号的代码快照,但合并后忘记了分支?

问题描述 投票:0回答:1

我们使用 git 维护代码库。但有以下分支:

  1. 大师
  2. release_branch_1
  3. release_branch_2

我们定期合并这三个分支。但一年后我们需要调查一个bug,我们可以找到git更改号

941504fd85b0fede0675b1e934df1aa4763a0390

但是所有三个分支都包含此更改,我们忘记了从哪个分支构建二进制文件。

那么是否可以得到那个时间点的代码快照呢?

{commit number}
唯一标识是快照还是
{branch + commit number}
对唯一标识 sanpshot?

git merge
1个回答
2
投票

{commit number}
是快照的唯一标识还是
{branch + commit number}
对唯一标识快照?

2016:前者:要获取该提交编号的快照,只需 checkout 您在该提交的存储库:

git checkout 941504fd85b0fede0675b1e934df1aa4763a0390

分支可以发展、重命名或删除,但提交是不可变的。


如果您的错误调查导致您进行一些提交,最好使用关联的分支检出该提交,如hlovdal评论下面

git checkout -b my_snapshot 941504fd85b0fede0675b1e934df1aa4763a0390

或者,如果您已经直接签出提交(并且位于分离的 HEAD 中):

git branch my_snapshot 941504fd85b0fede0675b1e934df1aa4763a0390

注意:现在(自 2019 年起)正确的命令是

git restore

顾名思义,

git restore
...恢复文件(在工作树和/或索引中),与切换分支的
git switch
相反。 (虽然旧的
git checkout
可以两者兼得,因此令人困惑)

在您的情况下,用于恢复快照内容...

git restore

git restore --source=941504fd85b0fede0675b1e934df1aa4763a0390 --staged --worktree -- .

或者,缩写形式:

git restore -s 941504fd -SW -- .

用于创建并切换到新分支...

git switch
:

git switch -c my_snapshot 941504fd85b0fede0675b1e934df1aa4763a0390
© www.soinside.com 2019 - 2024. All rights reserved.