4

我有一个 git 存储库,用于存储我经常使用的模板文件,几天前我检查了最新版本并对这些模板文件进行了本地更改。

我刚刚对模板文件主存储库进行了更改,现在我想签出我的主分支的最新版本,但我不想删除我的本地更改。

如何将主分支中的更改合并到我的工作副本中?

4

3 回答 3

8

要充分利用 git 的合并(或变基)策略,您可以将更改提交到本地存储库,然后拉取。拉取导致远程和本地存储库之间的合并,这可能是快进或递归合并,具体取决于上游更改。您甚至可能想要为此创建一个新分支(如果需要,您可以在不影响主分支的情况下将其推送到原点)。

存储可以在这里为您提供帮助,但是您冒着在拉取后无法应用存储的风险。

简单的例子:

git add .
git commit -m 'My local template changes'
git pull origin master # fix any conflicts

新分支示例:

git checkout -b newbranch
git add .
git commit -m 'My local template changes'
git pull origin master # fix any conflicts

后者将远程更改合并master到您的本地newbranch,但请记住,在这种情况下,您的本地副本master仍将落后(即,如果您随后执行了 a git checkout master,您仍然需要 agit pull来获取更改)。

于 2012-05-21T20:10:23.147 回答
4

您始终可以将本地更改保存在存储中,提取最新更改,然后再次应用保存的更改。

git stash     -- save your local changes
git pull      -- get latest changes from remote
git stash pop -- apply your saved changes
于 2012-05-21T20:07:31.163 回答
0

我来到这里想知道如何git merge在工作副本中进行本地操作,而无需对分支进行任何提交。答案是:

git merge --squash the-other-branch

这将暂存合并的文件(就像它们已添加 一样git add),但不进行任何提交。

也有一个--squash选项git pull,它大概做了类似的事情。

于 2021-11-23T15:01:21.437 回答