我在学校机器上设置了一个 git repo,然后在另一台家用机器上克隆了相同的 repo。我已经提交并推送了家用机器,现在我想将更改更新到学校机器。我应该怎么办?我试过git remote update
了,但是当我检查文件时它没有更新。
3 回答
你做错了:)
如果您使用的存储库不是学校机器上的裸存储库,则需要
git reset --hard
推送到它之后,因为您只是更新 ref 不是工作副本
更好的是使用裸存储库并从 服务器上的其他机器/存储库 Git拉/推到它
只需在您的学校机器上执行此命令:
git pull 起源大师
希望能帮助到你。
既然你用 标记了这个问题bitbucket
,我将做出以下假设。如果这些假设中的任何一个不正确,请在您的问题中澄清,我将更新此答案。
- 共有三 (3) 个存储库
- 一上
bitbucket
bitbucket
学校机器上存储库的克隆bitbucket
您的家庭系统上的存储库的克隆。
- 一上
- 在家庭克隆上,步骤类似于:
git add <changes>
git commit -m '<message>'
git push <remote> <branch>
- 在学校克隆
git remote update
获取所有远程中的git remote update
更改,因此如果主存储库推送的更改位于同一个远程,则它们已加载到学校系统的存储库中。
这里的关键是存储库是.git
文件夹,因此其中的 refs 已更新——但工作副本没有。为了更新工作副本,您需要将提取到本地存储库的更改与工作目录合并。这是通过git merge <options>
.
如果我基于您的标签的假设不正确并且只有两个存储库;学校和家。然后您需要git merge <options>
将更改带入您的工作副本,除非您也有本地更改;在这种情况下,请执行类似于以下的操作 if
git stash
git merge <options>
git stash pop
此时解决从存储和提交中弹出的本地更改之间的任何冲突。
如果您不想将更改保留在本地副本中,您可以使用git reset --hard
.
最后要注意的是,如果可以避免,请不要推入非裸存储库 - 通常可以。学校存储库从主存储库中提取(获取/合并)更改比主存储库推送到学校存储库要好得多。