【问题标题】:Stash / Commit before Pull Not to Lose Local Files在拉取之前存储/提交不会丢失本地文件
【发布时间】:2015-10-28 12:04:15
【问题描述】:

如果远程和本地存储库都有更改,我无法将本地存储库与 GitHub 上的远程存储库同步。因此,例如,如果我还没有开始开发某个功能,那么在开始之前我可以通过简单地运行来同步

git pull origin master

这是一个简单的。但是,当我在本地开发一项功能时,假设我的同事已将新功能推送到遥控器,因此遥控器也发生了变化。我尝试在拉取之前完成提交和存储的同步。所以那些代码,

git add .
git commit -m "message"
git pull origin master

git stash save "message"
git pull origin master
git stash pop

这两种方法最终都覆盖了我的本地更改,因此不是将远程更改放在本地 master 分支的顶部,而是覆盖了我的本地文件并且本地更改消失了。

我做错了什么?我指的是许多有关 git 的文档,但我无法做到这一点。

谢谢,

【问题讨论】:

    标签: git github git-pull


    【解决方案1】:

    假设您正在处理my_branch,并在那里进行了一些更改。现在你的同事推送到 master,你需要更新你的:

    git stash
    git checkout master
    git pull
    

    您的 master 已与更改同步。

    现在你想继续处理my_branch,所以你

    git checkout my_branch
    

    现在您应该 stash pop 进行更改:

    git stash pop
    

    如果没有检测到冲突,合并将自动进行。否则,系统会要求您解决这些问题。

    【讨论】:

    • 因此,正如我所见,我遇到的问题是存储和拉入 master 分支。这真的很有意义。所以,我尝试了你的方式。不幸的是,这次 repo 上的新功能没有出现在我的本地 repo 上。在最后一个命令“stash pop”之后,我需要像“git merge master”这样的东西吗?
    • 当然,您需要合并远程主服务器的更改。
    • 非常感谢!让我试试,我会写回结果。
    • 我假设,因为我在弹出存储后尝试过,它会给出错误提示“您需要提交或存储”。所以,我再次隐藏并运行“git merge master”。它起作用了,但是在我尝试再次存储 pop 之后,它尝试在遇到冲突的地方自动合并。但当然,这是另一个问题,所以我把这个问题放在这里。希望我能解决它。感谢您的大力帮助!
    • @KutayDemireren 很高兴它对您有所帮助。解决冲突是你现在需要做的:)我建议你与master保持同步,以避免将来发生巨大的冲突。
    【解决方案2】:

    将您的分支设置为与远程分支完全匹配可以分两步完成:

    git fetch origin
    git reset --hard origin/master
    

    如果您想在执行此操作之前保存当前分支的更改,您可以这样做:

    git commit -a -m "Saving my work, for later use"
    git branch my-saved-work
    

    现在,您的工作已保存在“my-saved-work”分支中,以防您决定将其取回(或想稍后查看或将其与更新后的分支进行比较)。

    【讨论】:

    • 在这种情况下,重置对我来说似乎很危险,我实际上不想在这里指望重置。还是谢谢
    猜你喜欢
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2017-03-30
    相关资源
    最近更新 更多