我对您使用的命令有点困惑。 HEAD通常是 git 用来跟踪当前在工作目录中的提交的标签。该git fetch命令需要远程或远程提交配置来了解您想要获取的内容。使用git fetch HEAD将指示HEAD您的存储库中的远程。该命令没有错误地工作很奇怪。
例如: git fetch HEAD在我当前正在工作的存储库中导致以下错误
fatal: 'HEAD' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
该命令git remote将列出所有遥控器,同时git remote --verbose将包括遥控器的地址。您可以使用它来查看您是否定义了远程HEAD以及您的朋友存储库的远程地址是什么?
但是,我的问题放在一边,以帮助消除您的困惑。该git fetch ...命令只更新远程引用——而不是你的本地引用。
为了清楚起见,请查看存储库中的 .git 文件夹(默认情况下它是隐藏的,因此您可能需要取消隐藏它)。您会发现类似于以下的文件夹结构
working directory
|=>.git
| |=>objects <= contains data for each commit
| |=>refs
| |=>heads
| |-master <= file containing current commit of local master branch
| |=>remotes
| |=>origin
| |-master <= file containing current commit of remote origin's master branch
|-FETCH_HEAD <= file updated by `git fetch`, contains info of what was fetched
假设您签出 master 分支,git checkout master--git 将更改您的工作目录以匹配 'objects' 文件夹中的提交数据,该数据与 '.git/refs/heads/master' 文件中的提交值匹配。
如果您这样git fetch origin master做,“.git/refs/remotes/origin/master”文件将更新为远程源上主分支的提交——并且该提交所需的所有提交数据都被下载并放置在“对象”中文件夹。
这里重要的一点是git fetch不会更新您的工作目录反映已签出的本地分支,并且git fetch永远不会更新本地分支。
需要使用git merge ...或git rebase ...来master使用origin/master. 根据选项和配置(是默认设置) ,git pull ...同时执行git fetch ...and either git merge ...or 。git rebase ...git merge ...
在所有这些解释之后,您希望能够查看从您的朋友存储库中获取的内容(如果有的话)。该git branch -avv命令将列出所有本地和远程分支,以及提交号,对于本地分支,它正在跟踪哪个远程分支。
要查看分支如何相互关联,我发现使用工具绘制存储库树图很有帮助。有几个可供选择,但我发现git log命令足够了;比如git log --all --graph --oneline --decorate。公平的警告,对于大型存储库来说,这可能会很长并且令人费解。--simplify-by-decoration通过添加参数可以获得更短的输出。
总结一下:是否可以在家修复它取决于存储库中的信息。上述命令;git remote --verbose,git branch -avv并且git log ...应该让您了解存储库的当前状态。从那里您可以确定是否需要做更多的事情来使用git mergeor获取本地分支中的数据git rebase。
与往常一样,如果您遇到麻烦,请回复您所学到的内容。