【问题标题】:Issues getting Git working with VSCode and files on web host让 Git 在 Web 主机上使用 VSCode 和文件的问题
【发布时间】:2019-04-16 08:33:53
【问题描述】:

到目前为止,我一直使用 FileZilla 将我的本地文件传输到我的主机以更改我正在处理的站点。我想改变它并学习如何 git gud!所以基本上理想的情况是能够在从我的网络主机镜像的目录上的 VSCode 中工作,并且能够在本地进行更改,然后在我想要的时候提交和更改我的网络主机上的文件 - 这有有可能对吗?

我已经能够使用 Git Bash 通过 ssh 连接到我的主机和文件。我已经创建了一个 init --bare 和 init ,因为我不确定要使用哪个,但我确实在那里创建了 .git 文件夹。我还可以使用 Bash 和命令 git status 查看所有等待提交的文件 (?)。

据我所知,我必须初始化存储库,然后提交它们以“跟踪”这些文件并让它们在 VSCode 中可见,这样可以吗?

但是当我尝试git commit 时会显示以下错误消息。

 Waiting for your editor to close the file... code --wait: code: command not found.

这表明到 vscode 和/或 git 的相对路径不起作用,但确实如此。当我启动 bash 时,我可以使用例如 code --helpgit config --global -e 来启动 VSCode 窗口。所以我的git config --global core.editor "code --wait" 可能正在正常工作。

虽然在我使用 ssh 连接到我的网络主机之后,这些命令都不再起作用了。为什么是这样?

而且,我现在是否在思考如何在 VSCode、git 和我的网络主机 (one.com) 之间建立这种“连接”?

我想我必须在我今天复制我的网络主机文件的文件夹中创建一个本地存储库,并在实际的网络主机上创建一个远程存储库,然后在它们两者和 VSCode 之间建立某种连接。我还不太清楚。

提前致谢

【问题讨论】:

    标签: bash git visual-studio-code git-bash


    【解决方案1】:

    我认为您可能对 Git 是什么以及应该如何使用它来完成您想做的事情有些困惑。让我们清理一些东西。

    简单地说,Git 是一个版本控制系统,用于跟踪文件随时间的变化。你创建或编辑你的文件,git add它们到一个“暂存区”,然后git commit它们带有提交消息。如果您在提交文件后编辑文件,那么 git 可以检测到文件的更改,您可以再次添加和提交它们,或者根据您的需要丢弃它们。然而,要了解的最重要的部分是,此时这些更改是本地的。如果您想与任何人共享它们(或让另一个系统将它们拉下来),那么您将需要建立一个远程存储库。

    这就是 Github/GitLab 的用途。在任一站点上登录/创建一个帐户(gitLab 提供免费的私人存储库)并创建一个适当命名的存储库。然后,一旦您创建了远程仓库,请按照说明将其作为“远程”添加到您的本地仓库,然后 git push 将您的更改添加到该远程仓库。现在,在您的服务器上,您将 git clone 远程仓库,这将拉下您的更改。从那时起,如果您将新更改推送到远程仓库,您可以通过执行git pull 将更改下拉到服务器。这是在服务器上部署代码的一种非常基本和准系统的方法,并且有更复杂的方法可以做到这一点,但我会在这个答案中保持简单。

    Git 与 VSCode 完全分离(尽管 VSCode 有一些 git 集成和插件)。我建议将 core.editor 更改为 VSCode。该设置控制的是用于编写提交消息的编辑器。加载 VSCode 需要很长时间...我建议您坚持使用默认的 Vim 或使用 nano。或者,在大多数情况下,在提交时指定一条消息:git commit -m "added foobar"

    因此,您服务器上的 git 存储库(您使用 --bare 初始化的那个)是垃圾,应该由远程存储库中的 git cloneing 创建。希望这是有道理的!

    【讨论】:

    • 我明白了!是的,我很困惑,最近几天。因此,如果我理解正确,我应该拥有: - 由 git init 初始化的本地存储库 - 远程存储库,例如 github 或 azuredevops(我已经推送到)并将本地存储库推送到 - 然后首先从服务器推送第一次克隆 github/azure 存储库,然后提取以后的更改。一个问题是 - 服务器也不能是我的远程仓库吗?我必须在三向解决方案中使用它吗?此外,我已经在服务器上拥有与本地相同的文件。我应该在克隆之前删除它们还是覆盖它们?
    • 理论上,任何计算机都可以充当远程仓库,但如果你在 github/azuredevops 上有它,还有更多好处:安全、冗余备份等。我不建议制作同一台服务器你提供的内容是你的远程仓库。风险太大,您必须配置安全性等。不值得麻烦。
    • 3 路解决方案可能看起来很烦人,但它是您当前配置中最强大的方法。就像我在帖子中所说的那样,它是准系统。如果您使用的是 azuredevops,您可能能够配置一个自动发布/部署到您的服务器的管道,但这是完全不同的蠕虫。
    • 我不知道您正在运行哪种服务器,但您应该能够将 repo 克隆到另一个文件夹中,删除当前文件夹(或重命名以防万一),然后移动/重命名克隆的回购到旧的位置,你应该很好去
    • 希望这对您来说是一个很好的起点。一旦你的事情以准系统的方式工作,我的建议是开始研究持续部署 (CD)。当然,这一切都归结为您正在部署的应用程序的类型。如果是简单的 HTML 或 PHP 脚本,那么 CD 过程应该相当简单。如果你在 Java/C#/etc 中部署真正的应用程序,这个过程会变得有点复杂。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    相关资源
    最近更新 更多