git - 如何存储本地存储库和远程存储库之间的更改

标签 git github

我想存储本地存储库和远程 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/

相关文章:

git - 是否可以只将更改后的文件部署到 AWS Elastic Beanstalk 应用程序而不是上传我的整个源代码?

git - 如何说 HEAD~20 如果存在,否则先提交

java - 在 Eclipse 中导入克隆的 git 项目会导致一些修改的文件

git - "git checkout -"是做什么的?

github - 如何发布github页面?

git - 搞砸了主 git 分支......无法弄清楚我需要恢复什么

git - 如何修复 GIT 错误 : HEAD: invalid reflog entry xxxxxxxxxxxxxxxx

GitHub 桌面 : "This file is empty"

通过终端的 GIT checkout 分支

java - 如果提交不包含某些问题,如何禁止提交