gpt4 book ai didi

Git - 将存储库与 checkout 分支同步的最简单方法

转载 作者:太空狗 更新时间:2023-10-29 14:02:13 25 4
gpt4 key购买 nike

我的工作流程基本上是:

  • 在我的台式电脑上创建一个 repo
  • 做一些工作并提交更改
  • 克隆到我的笔记本电脑上
  • 致力于此,提交更改

现在我想将更改与我的桌面同步。尝试 git push desktop.local:~/my-repo 会失败,因为 the master branch is already checked out .我知道有两种解决方案:

  1. 在我 PC 的另一个目录中创建第三个裸存储库,并从那里更新两个工作副本。但是一个带有两个工作副本的中央存储库听起来像...... SVN!除了笨拙之外,因为我不能只使用 svn updatesvn commit 来与这个中央存储库同步——需要额外的步骤来实际更新中央 repo 提交的更改Git 中的工作副本。

  2. 推送到一个单独的分支并将该分支 merge 到我的桌面工作副本中。这还不算太糟糕,但是……

...我不明白的是:如果我只是通过 SSH 连接到桌面 PC 并发出 git pull laptop.local:~/my-repo,它就可以工作了!它 pull 已提交的更改并更新 checkout 的主分支,不问任何问题。为什么 git push 不能自己做?

所以这是我的问题:是否有一个命令与 ssh 的工作方式相同 - 进入我的台式电脑并发出 pull

最佳答案

问题是当你试图 push 你同时做 2 个 Action 时。第一个是更新 git 树,第二个是更新笔记本电脑上的工作目录。所以在推送过程中有一种隐式的“checkout ”,而 git 拒绝这样做,这是正确的。想象一下,如果有人真的在您的台式 PC 上工作,将会发生什么。当你使用 SSH 时,事情就不同了,你在你的工作目录中,你对你所做的一切负责,因此,你可以做任何你想做的事,删除文件,“pull ”。所以这在某种程度上看起来很正常,推送不允许您(默认情况下)搞砸远程计算机。

更新

如果您将 receive.denyCurrentBranch 设置为 ignore ,您可以推送,但您仍然必须将您的工作目录与“最新”版本的代码(您刚刚推送的代码)“同步”。这意味着您仍然有 2 个命令可以在每台计算机上运行一个

如果您真的只想运行一个命令,请使用 shell 的强大功能并创建一个别名,该别名可以从桌面计算机执行 git pull

alias remote_pull=ssh <desktop> "cd <path>; git pull"

关于Git - 将存储库与 checkout 分支同步的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4011089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com