微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

作为初学者,克隆本地存储库是在同一个机器上开发和部署代码的好方法吗?如何? 步骤基本工作流程有点高级

如何解决作为初学者,克隆本地存储库是在同一个机器上开发和部署代码的好方法吗?如何? 步骤基本工作流程有点高级

我是 Git 的新手,一般来说我不是一个有经验的程序员。我使用的是普通的旧 Git,而不是在 GitHub 上乱搞。我终于达到了第一次需要分支我的回购的地步,但是我遇到的问题是我尝试分支的文件一个网络抓取脚本,我需要在更改时继续正常工作它。我阅读了一些关于分支的内容并做了一个测试分支,我注意到分支会根据签出的分支修改工作目录中的代码。因此,如果我创建一个分支并检查它,一旦我修改它,Windows 任务计划程序将尝试运行修改后的文件。很明显,我需要在我的机器上的其他地方有一个功能性的存储库/版本,任务计划程序可以查看并推送到。

因为我实际上运行的是单个文件脚本,所以我可以轻松地将它复制到其他地方并更新任务计划程序以指向那里。然后我可以在需要推送新的“分支”时随时替换文件(不再是真正的分支,因为我一次只处理一个功能)。但我正在努力做好并学习 Git 并正确地做事。

所以我想我的问题变成了:我应该在本地克隆吗?这是如何实现的?我曾尝试阅读有关克隆的文章,但我对大量专注于 GitHub 等远程存储库的克隆文档感到困惑。感谢您的帮助。

解决方法

您可以尝试使用裸存储库在本地克隆吗? 您可以在 https://www.geeksforgeeks.org/bare-repositories-in-git/ 阅读更多内容 前-

cd ${HOME}
mkdir FileName.git
cd FileName.git
git init --bare

现在你可以在这个 repo 中写你的东西 然后你可以去任何其他位置说 /tmp

cd /tmp
git clone ${HOME}/FileName.git

所以你可以像远程仓库一样使用你自己的目录

,

是的,而且很容易。

是的,因为你说的原因:你正在学习 git。在本地克隆与在 GitHub 或任何地方克隆远程存储库的工作原理相同,唯一的区别是使用目录路径而不是 GitHub URL 或 SSH 路径。事实上,当您克隆本地存储库时,现有存储库将被视为新存储库的远程。与 GitHub 存储库不同的是,您可以使用 git CLI 管理这两个存储库。

您甚至可以使新的 repo 成为原始 repo 的远程,从任何一端推送或拉取更改。但是,如果您使用它来习惯使用 GitHub 存储库,请保持单向关系,并在 下游 的存储库上进行开发,这是您创建的存储库上游的克隆,在这种情况下也是起源。让 Task Scheduler 从上游存储库的工作树执行。

您希望您的设置最终看起来像这样:

origin/upstream:       path/to/origin/script.py
                                      README.md
                                      .git
                        
clone/downstream:      path/to/clone/script.py
                                     README.md
                                     .git

尽量不要被所有术语混淆,它们只是命名约定。 path/to/origin/ 存储库将被称为 path/to/clone/ 存储库的 上游起源远程。不,repos 的目录不必命名为“origin”或“clone”——上面的路径和文件只是示例。

步骤

  1. 将您现有的存储库移动到您想要运行计划任务的位置。如果它已经在那里,那就太好了。

  2. 在命令行中,cd 到您希望新克隆目录所在的目录。

  3. 执行以下操作:

    git clone path/to/origin
    

    使用您在步骤 1 中放置的任何位置的实际路径。

    这模仿了您用来克隆 GitHub 存储库的 git clone github.com/path/to/origin 命令。

    它将在当前目录中创建一个与您要克隆的目录同名的新目录。如果出于某种原因您需要它具有不同的名称,例如如果源和克隆位于同一父目录中,请改用此命令:

    git clone path/to/origin path/to/clone
    

    新目录将包含一个 git repo(.git 目录)并且主分支中的所有文件都将被检出。

    如果你搞砸了,没什么大不了的。删除新创建的目录(不是原始目录!),然后重新开始。

  4. 您可以通过 cd-ing 进入克隆目录并键入:

    来确认两个存储库之间的关系
    git remote -v
    

    您会看到遥控器默认命名为“origin”。正如我所说,这只是一个约定,您实际上可以更改名称,但作为初学者最好坚持使用默认值。

  5. 要查看两个 repos 中的所有分支,并确认两个 repos 上的 main/master 分支之间的跟踪关系,请键入:

    git branch -vva
    

基本工作流程

  • 在克隆仓库中完成所有工作

  • 根据需要将新提交、新分支等推送到您的远程(又名上游、源)存储库,例如:

    git push
    

    您无需在具有远程跟踪分支的分支中指定推送目标(您在上面的第 5 步中看到的内容)。

    这一步只是同步你推送到远程 git repo 数据库的任何内容。它不会更新检出到其工作树中的内容。换句话说,您的计划任务执行与之前运行的代码相同的版本。

  • 要更新您的计划任务执行的内容,cd 到该存储库并执行 git 命令以检出您希望它继续执行的代码的任何版本。如果它只是已经签出的分支上的最新提交,则很简单:

    git pull
    

有点高级

如果您想更好地模拟依赖中央存储库服务器(例如 GitHub)的设置,您将拥有三个相关的存储库,如下所示:

           origin/upstream
                |  | 
          ______|  |_____
          |              |
     dev clone           |
                     deploy clone  <-- your scheduled task runs in this repo                     

希望这会有所帮助。如果您有任何问题,请告诉我。

,

我应该在本地克隆吗?

没有。我将反对 Inigo 的回答。原因是推向非裸存储库充满了陷阱。

我建议,即使对于初学者来说,正确的方法是在 Inigo 的答案末尾瞥一眼:将部署文件夹推送到远程仓库作为其部署分支,将远程仓库克隆到另一个文件夹,然后在该文件夹中创建一个开发分支并在那里进行实验。

这样,你在试验的同时将开发分支推送到远程作为备份,如果试验成功,你推送开发仓库,然后获取到部署仓库并将开发分支合并到部署分支。

这是使用 Git 的干净方式。是的,它假定您在部署新版本时有 Internet 连接,但肯定没有太多要求。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。