我被告知在特定时间点查看我们的项目是否已提交。我有一个长度超过20个字符的特定提交代码/哈希(在URL末尾的那个,不确定正确的术语)。
我可以看到存储库上的提交更改,但是如何在我的桌面上打开项目并实际处理提交时存在的项目?
我被告知git checkout head
可以提供帮助,但我尝试git checkout head < commit code/hash here >
并在终端中收到一条消息说&#34;错误,pathspec与git已知的任何文件都不匹配。&# 34;
答案 0 :(得分:2)
首先需要将存储库重置为给定的提交。如果您想从那里开始工作,那么在该提交中创建分支可能会有所帮助:
git checkout -b mybranch <commit>
如果你没有创建一个分支,你将最终进入一个detached state
,这通常会让你难以使用(如果你碰巧忘记了实际的提交ID,很容易丢失你的工作...... )。
如果您使用的是图形存储库历史记录浏览器(如gitk
),您还可以:
gitk
:右键单击提交消息 - &gt; 创建新分支)< / LI>
gitk
:右键单击分支标签 - &gt;&#34; 查看此分支)答案 1 :(得分:1)
关于不同方式的完整解释可以在这里找到:
What is HEAD
and to checkout specpfic commit ore reset the repository
git checkout
强> git checkout
git checkout <commit_id>
git checkout -b <new branch> <commit_id>
git checkout HEAD~X // x is the number of commits t go back
这将检查指向所需提交的新分支。 此命令将签出到给定的提交。 此时,您可以创建一个分支,并从此开始工作。
# Checkout a given commit.
# Doing so will result in a `detached HEAD` which mean that the `HEAD`
# is not pointing to the latest so you will need to checkout branch
#in order to be able to update the code.
git checkout <commit-id>
# create a new branch forked to the given commit
git checkout -b <branch name>
git reset HEAD --hard <commit_id>
强> “移动”你的头回到所需的提交。
# This will destroy any local modifications.
# Don't do it if you have uncommitted work you want to keep.
git reset --hard 0d1d7fc32
git worktree add <new_path>
git worktree
将创建2个单独的工作文件夹,彼此分开,同时指向同一个存储库。
这将允许您对enw工作树上的任何经验进行操作,而不会对存储库本身产生任何影响。
以下是有关如何创建新工作树的示例及其结果: