如何在本地存储库和远程存储库之间存储更改

时间:2015-10-11 20:22:55

标签: git github

我想隐藏本地存储库和远程源/主服务器之间的所有更改。在远程存储库中,在本地存储库中进行了一些提交,同时进行了一些其他更改。

  • 我想隐藏本地和远程之间的差异。
  • 放弃所有本地提交
  • 使本地存储库与远程同步。
  • 应用我的存储更改。

如何使用git命令实现此目的?

2 个答案:

答案 0 :(得分:14)

  

我想隐藏本地存储库和远程源/主服务器之间的所有更改。

“stash”在Git中具有特殊含义,git stash未提交的更改放入特殊提交中以便稍后检索。当你有一些尚未准备好提交的工作时使用它,但你需要对存储库做一些事情,比如checkout另一个分支或推或拉。对于本答复的其余部分,我将使用“stash”来表示git stash

  

在远程存储库中,在本地存储库中进行了一些提交,同时进行了一些其他更改。

这种情况很正常。

  

我想隐藏本地和远程之间的差异。   放弃所有本地提交

这些步骤不是必需的。 Git可以解决这个问题。见下文。

  

使本地存储库与远程同步。

使用git fetch origin获取远程存储库的最新版本(假设远程名称为origin)。这是安全的,不会修改任何本地分支。

  

应用我的藏匿更改。

无需移动本地提交。 Git可以将您的本地工作与遥控器合并。但是,如果您有未提交的作品,那么您将要隐藏它。 git stash save会将你未提交的作品暂时搁置一段时间。

获取后,您可git merge origin/master将您的工作与遥控器合并,或git rebase origin/master将所有更改合并到遥控器上。

您可以在单个命令中执行提取和合并/ rebase。要获取并合并使用git pull origin master。要获取并重新使用git pull --rebase origin master

现在您已达到最新状态,您可以git stash pop恢复隐藏的更改。

git pull --rebase是您应该通过远程工作更新本地分支的正常方式。很多合并只是更新遥控器将导致混乱的历史,变基使一切保持良好和线性。你不需要告诉它远程和分支,Git通常可以为你解决这个问题。正常的工作流程看起来像这样。

  • git stash save如果您有未提交的作品。
  • git pull --rebase从遥控器获取更新并应用
  • git stash pop恢复您未提交的作品。

答案 1 :(得分:3)

git stash会将您的更改存储在脏工作目录中

git stash pop从隐藏列表中删除单个隐藏状态,并将其应用于当前工作树状态之上。

git diff master将显示差异。

要查看更多隐藏选项:git stash --help

修改

为修改后的问题编辑:

  1. 我想隐藏本地和远程之间的差异。

  2. 放弃所有本地提交

  3. 使本地存储库与远程同步。

  4. 应用我的藏匿更改。

  5. 首先,数字2将与数字4冲突。因此,我将解释如何通过存储来更新远程数据:

    存储您的更改。这将从当前工作目录中删除它们。 git stash

    从远程拉出更改 git pull origin <branch>

    重新弹出您的更改。 git stash pop

    注意:我建议您安装合并工具,以便合并冲突。我更喜欢P4Merge。如果出现合并冲突: git mergetool

    如果您想知道如何单独进行这些操作:

    1. 我想隐藏本地和远程之间的差异。 git stash

    2. 放弃所有本地提交 我只是做git stash而忘了我的藏匿处。我不知道这是否是首选。如果您需要,我认为您可以“删除”您的藏匿更改。

    3. 使本地存储库与远程同步。 git stash git pull origin <branch> git stash pop`

    4. 应用我的存储更改。 如果您想将您的藏匿处保存在存储列表中: git stash apply 如果要从存储列表中删除存储: git stash pop

    5. 你的一切。希望这有帮助