我想存储本地存储库和远程 origin/master 之间的所有更改。同时在本地存储库中进行了一些提交,同时在远程存储库中进行了一些其他更改。
- 我想 stash 本地和远程之间的差异。
- 丢弃所有本地提交
- 使本地存储库与远程同步。
- 应用我的存储更改。
如何使用 git 命令实现此目的?
最佳答案
I want to stash all the changes between local repository and remote origin/master.
“stash”在 Git 中有特殊含义,git stash
将未提交的更改 放入一个特殊的提交中,以便稍后检索。当您有一些尚未准备好提交的工作,但您需要对存储库执行某些操作时使用它,例如 checkout 另一个分支或推或 pull 。对于这个答案的其余部分,我将使用“stash”来表示 git stash
。
There are some commits made in the local repository at the same time some other changes made in remote repository.
这是正常情况。
I want to stash the differences between local and remote. Discard all the local commits
这些步骤不是必需的。 Git 可以解决这个问题。见下文。
Bring the local repository to in sync with remote.
您可以使用 git fetch origin
获取最新版本的远程存储库(假设远程存储库名为 origin
)。这是安全的,不会修改任何本地分支。
Apply my stash changes.
无需将您的本地提交 移开。 Git 可以将您的本地工作与远程 merge 。但是,如果您有未提交的工作,您会想要将其 stash 起来。 git stash save
会将您未提交的工作保存起来以备后用。
获取后,您可以git merge origin/master
将您的工作与远程 merge 或git rebase origin/master
将所有更改放在远程之上。
您可以在单个命令中执行获取和 merge/ rebase 。要获取和 merge ,请使用 git pull origin master
。要获取和 rebase ,请使用 git pull --rebase origin master
。
现在您已经是最新的了,您可以git stash pop
来恢复您 stash 的更改。
git pull --rebase
是您应该使用远程工作更新本地分支的正常方式。很多 merge 只是更新远程会导致历史困惑, rebase 使一切保持良好和线性。你不需要告诉它远程和分支,Git 通常可以为你解决这个问题。正常的工作流程如下所示。
git stash save
如果您有未提交的工作。git pull --rebase
从远程获取更新并应用它们git stash pop
恢复您未提交的工作。
关于git - 如何存储本地存储库和远程存储库之间的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33069752/