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

3

我有一个从远程仓库fork的代码库,我进行了一些更改,而远程仓库也更新了。现在我想拉取远程仓库中的所有更改,不需要关心本地仓库中任何内容。以前我通常是删除本地代码库,然后简单地fork和克隆。肯定有更好的方法来完成这个操作。有什么神奇的命令吗?


这里的大多数答案都建议拉取(pull),也就是合并。如果你愿意删除你的代码仓库,我敢肯定那不是你想要的。 - Cascabel
没错,我不在意合并。reset --hard 就是我要的。谢谢! - chum of chance
5个回答

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
一些假设:`master` 是旧的分支,在这里你提交了一些更改。现在 `other` 是从远程 `origin` 检出的最新版本。
git fetch origin
git checkout -b other origin/master

使用

git diff other..master

你可以比较这两个分支。最后使用

git checkout other
git merge master

你可以将它们合并。另一个有用的工具是cherry-pick,你可以使用它将一些有趣的提交合并到分支中。

git cherry-pick <commit>

能否将命令添加到 diff 中,然后合并这两个分支? - Chris K


0
一个简单的方法是使用分支,像这样:
git commit -m "All my latest stuff I don't care about"
git branch newstuff refs/remotes/origin/master 
git pull

现在你已经拥有了所有的新东西。当然,这是假设你想保留旧的东西。


0

(假设您的分支是master,远程命名为origin

首先使用以下命令更新您的origin

git fetch origin

如果您自上次更新以来没有提交过更改,则可以简单地执行以下操作:

git rebase master origin/master

如果您已经有了一些提交记录,则此快进式合并将无法正常工作。在这种情况下,您可以执行以下操作:

git branch -d master (删除本地主分支)

git checkout -b master origin/master


合并前差异比较:

如果你想在执行merge之前查看改动,可以执行以下操作:

git fetch origin(总是从远程获取最新的更改)

git diff master origin/master


Git不会轻易删除已检出的分支。您的变基也没有达到您预期的效果 - 它使用主分支作为基础。我想您的意思是 git rebase origin/master master。但当然,我不会使用变基,只需使用 git merge --ff-only origin/master - Cascabel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接