我有一个从远程存储库分叉的repo。我做了一些更改,远程存储库已更新,现在我想从远程存储库中提取所有更改,而不关心本地存储库中的任何内容。以前我一直在删除我的本地存储库,然后做一个简单的fork和clone。必须有一个更好的方法来做到这一点。什么是神奇的命令?
答案 0 :(得分:4)
如果我理解正确,你想丢弃你当地分支机构的提交(如果你已经提出)。如果是这种情况,那么你想要:
# fetch updated branch(es) from origin
git fetch origin
# reset, including your work tree, to origin's master branch
# make sure you have your master branch checked out first!
# and also that you don't mind throwing away local commits or
# uncommitted modifications
git reset --hard origin/master
答案 1 :(得分:1)
一些假设:master
是旧分支,您可以在其中进行一些更改。现在other
是来自远程{{1}}的新结账。
origin
使用
git fetch origin
git checkout -b other origin/master
你可以比较两个分支。
最后git diff other..master
你合并它们。这里另一个有用的工具是cherry-pick,你只能将一些有趣的提交合并到一个分支
中git checkout other
git merge master
答案 2 :(得分:0)
也许我的回答有帮助
"fetch --all" in a git bare repository doesn't synchronize local branches to the remote ones
答案 3 :(得分:0)
一种简单的方法是分支,如下所示:
git commit -m "All my latest stuff I don't care about"
git branch newstuff refs/remotes/origin/master
git pull
现在你已经拥有了所有新东西。当然这是假设你想保留旧东西。
答案 4 :(得分:0)
(考虑您的分支是master
,远程名称为origin
)
首先使用以下内容更新您的origin
git fetch origin
现在,如果您自上次更新后未提交,则可以直接执行此操作:
git rebase master origin/master
如果您完成了一些提交,则快进 rebase将无效。在这种情况下,你可以这样做:
git branch -d master (to remove your local master branch)
git checkout -b master origin/master
合并前的差异:
如果您想在执行merge
之前查看更改内容:
git fetch origin (always to bring the changes from the remote)
git diff master origin/master