我有一个 git 存储库,用于存储我经常使用的模板文件,几天前我检查了最新版本并对这些模板文件进行了本地更改。
我刚刚对模板文件主存储库进行了更改,现在我想签出我的主分支的最新版本,但我不想删除我的本地更改。
如何将主分支中的更改合并到我的工作副本中?
要充分利用 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
来获取更改)。
您始终可以将本地更改保存在存储中,提取最新更改,然后再次应用保存的更改。
git stash -- save your local changes
git pull -- get latest changes from remote
git stash pop -- apply your saved changes
我来到这里想知道如何git merge
在工作副本中进行本地操作,而无需对分支进行任何提交。答案是:
git merge --squash the-other-branch
这将暂存合并的文件(就像它们已添加 一样git add
),但不进行任何提交。
也有一个--squash
选项git pull
,它大概做了类似的事情。