我想隐藏本地存储库和远程源/主服务器之间的所有更改。在远程存储库中,在本地存储库中进行了一些提交,同时进行了一些其他更改。
如何使用git命令实现此目的?
答案 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
为修改后的问题编辑:
我想隐藏本地和远程之间的差异。
放弃所有本地提交
使本地存储库与远程同步。
应用我的藏匿更改。
首先,数字2将与数字4冲突。因此,我将解释如何通过存储来更新远程数据:
存储您的更改。这将从当前工作目录中删除它们。
git stash
从远程拉出更改
git pull origin <branch>
重新弹出您的更改。
git stash pop
注意:我建议您安装合并工具,以便合并冲突。我更喜欢P4Merge。如果出现合并冲突:
git mergetool
如果您想知道如何单独进行这些操作:
我想隐藏本地和远程之间的差异。
git stash
放弃所有本地提交
我只是做git stash
而忘了我的藏匿处。我不知道这是否是首选。如果您需要,我认为您可以“删除”您的藏匿更改。
使本地存储库与远程同步。
git stash
git pull origin <branch>
git stash pop`
应用我的存储更改。
如果您想将您的藏匿处保存在存储列表中:
git stash apply
如果要从存储列表中删除存储:
git stash pop
你的一切。希望这有帮助