当我从另一台机器推出时如何更新本地git?

时间:2013-01-11 16:36:21

标签: git bitbucket

我在学校机器上设置了一个git repo,然后在另一台家用机器上克隆了同一个repo。我已经提交并推动了家用机器现在我想更新到学校机器的更改。我该怎么办?我尝试了git remote update,但在检查文件时没有更新。

3 个答案:

答案 0 :(得分:1)

只需在学校机器上执行此命令:

git pull origin master

希望它有所帮助。

答案 1 :(得分:0)

你错了:)

如果您使用的存储库不是学校机器上的裸存储库,则需要

git reset --hard

推送之后,因为你只是更新ref不是工作副本

更好的是使用裸存储库并从其他机器/存储库中拉/推它 Git on server

答案 2 :(得分:0)

由于您使用bitbucket标记了问题,因此我将做出以下假设。如果这些假设中的任何一个不正确,请在您的问题中澄清,我将更新此答案。

  • 总共有三(3)个存储库
    • bitbucket
    • 上的一个
    • 学校机器上bitbucket存储库的克隆
    • 您家庭系统上bitbucket存储库的克隆。
  • 在主页克隆上,步骤类似于:
    • git add <changes>
    • git commit -m '<message>'
    • git push <remote> <branch>
  • 关于学校克隆
    • git remote update

git remote update获取了所有遥控器中的更改,因此如果主存储库推送的更改位于同一个遥控器上,则它们已加载到学校系统的存储库中。

这里的关键是存储库是.git文件夹,因此其中的引用已更新 - 但工作副本不是。要更新工作副本,您需要将提取到本地存储库的更改与工作目录合并。这是通过git merge <options>完成的。


如果我的假设(基于您的标签)不正确且只有两个存储库;学校和家庭。然后,您需要git merge <options>将更改带入您的工作副本,除非您也有本地更改;在这种情况下,如果

,则执行类似于以下操作的操作
git stash
git merge <options>
git stash pop

此时解决从存储和提交中弹出的本地更改之间的任何冲突。

如果您不想在本地副本中保留更改,可以使用git reset --hard将工作副本返回到上次提交的状态。


最后要提醒的是,如果你能避免它,就不要进入非裸存储库 - 而且你通常可以。学校存储库从主存储库中提取(获取/合并)更改比将主存储库推送到学校存储库更好。