我最近在Eclipse上创建了一个项目。我在项目上建立了一个git存储库。将代码推送到GitLab上的新存储库。
我检出(Import
-> Project from Git
)该项目到另一台笔记本电脑,进行了更新,以另一位作者的身份提交,然后将其推回存储库(第二次提交/ revision)。我只是从项目中删除了目标运行时作为更改。
我去了第一台笔记本电脑,想尝试更新/提取我的代码。我从Git Repository
视图-> Remote
-> Fetch
右键单击存储库。我输入了存储库等的路径并获取了存储库。但是,我的项目仍然具有具有目标运行时的旧代码。我知道我只“获取”了存储库,也许没有“拉过”。
所以我很困惑,代码未更新。如果我没记错的话,我再次右键单击存储库,然后单击“签出”。结果就是这样:
“签入”后,我项目上的目标运行时已删除,并像第二次提交一样进行了更新。但是现在有2个分支和2个参考。我不知道我的本地存储库现在处于什么状态。和/但local
master
分支仍处于“初始提交”状态,这会造成混淆吗?..我的代码已更新。.
我只在线阅读了git手册,而我还不能将我的头放在引用等概念上。
我可以删除项目,然后Import
-> Project from Git
,对吧?
但是如果我想知道我的项目(本地存储库)发生了什么以及如何解决这个问题?
Thx
答案 0 :(得分:1)
我对egit及其菜单不熟悉。但是我尝试用可以在控制台中运行的git命令回答您的问题。而且我认为您可以找出哪些egit菜单项与这些命令相对应。
您想在第一个笔记本电脑存储库中提取并更新本地master
。您首先需要git checkout master
,如果您已经在master
,然后在git pull origin master
上,则可以跳过。但是,您改为git fetch origin master
,它只是用新的提交更新了origin/master
。如果git fetch origin master
或git merge FETCH_HEAD
紧随其后,可以使用git merge origin/master
,因为在许多情况下pull = fetch + merge
却没有,
我想您随后做了git checkout origin/master
。检出origin/master
会导致HEAD状态分离。为了简化操作,您可以将分离的HEAD视为无名分支。当您进行新的提交时,此namelss分支将增长。但是除非将这些提交应用于其他分支,否则您将无法在其他分支上看到这些提交。 Git有一些命令来应用提交,包括git merge
,git rebase
,git cherrypick
等。
要解决当前问题,只需运行git checkout master;git pull origin master
。
答案 1 :(得分:0)
因此,让我的回答更加简单。在已分离的头上提交更改,并通过此提交创建分支,然后将其合并在一起并推送至主服务器。
如果您没有在所需的分离头上进行更改,则可以再次下载项目。