我们使用 git 维护代码库。但有以下分支:
我们定期合并这三个分支。但一年后我们需要调查一个bug,我们可以找到git更改号
941504fd85b0fede0675b1e934df1aa4763a0390
。
但是所有三个分支都包含此更改,我们忘记了从哪个分支构建二进制文件。
那么是否可以得到那个时间点的代码快照呢?
{commit number}
唯一标识是快照还是 {branch + commit number}
对唯一标识 sanpshot?
是快照的唯一标识还是{commit number}
对唯一标识快照?{branch + commit number}
2016:前者:要获取该提交编号的快照,只需 checkout 您在该提交的存储库:
git checkout 941504fd85b0fede0675b1e934df1aa4763a0390
分支可以发展、重命名或删除,但提交是不可变的。
如果您的错误调查导致您进行一些提交,最好使用关联的分支检出该提交,如hlovdal评论下面:
git checkout -b my_snapshot 941504fd85b0fede0675b1e934df1aa4763a0390
或者,如果您已经直接签出提交(并且位于分离的 HEAD 中):
git branch my_snapshot 941504fd85b0fede0675b1e934df1aa4763a0390
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