什么是从远程仓库获取所有更改的git命令?

时间:2011-04-11 21:15:48

标签: git

我有一个从远程存储库分叉的repo。我做了一些更改,远程存储库已更新,现在我想从远程存储库中提取所有更改,而不关心本地存储库中的任何内容。以前我一直在删除我的本地存储库,然后做一个简单的fork和clone。必须有一个更好的方法来做到这一点。什么是神奇的命令?

5 个答案:

答案 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)

答案 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