前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >离线使用 Git

离线使用 Git

作者头像
前端黑板报
发布2024-05-13 17:28:40
1020
发布2024-05-13 17:28:40
举报
文章被收录于专栏:前端黑板报前端黑板报

一些公司使用隔离网络甚至完全没有网络作为安全措施来防止未经授权的访问。在这些系统上工作可能会很困难,但使用适当的版本控制工具(例如 Git)仍然是可能的,甚至可能更重要。

按照设计,Git 可以在没有远程存储库的情况下正常工作。您可以像平常一样分支、暂存和提交文件。

代码语言:javascript
复制
mkdir testRepo
cd testRepo
git init
touch test.txt
git add --all
git commit -m "Initial Commit"

如果仅使用一台机器进行开发,这非常有效,但情况通常并非如此。

使用多台机器 — 使用 USB 记忆棒/HDD

当安全策略允许对记忆棒或便携式硬盘驱动器进行读/写访问时,可以在此设备上创建远程存储库。

在一台开发机器上安装记忆棒。

代码语言:javascript
复制
cd /path/to/memory/stick
mkdir repoName.git
cd repoName.git
git init --bare

导航到要共享的存储库,将远程存储库添加到记忆棒上,然后推送更改。

代码语言:javascript
复制
cd /path/to/local/repo/
git remote add origin /path/to/memory/stick/repoName.git
git push origin master

注意。遥控器可以叫任何东西。它不必被称为“起源”。

卸下记忆棒并将其安装到另一台开发机器上。

如果开发计算机上还没有存储库的副本,则可以使用 git clone。

代码语言:javascript
复制
git clone /path/to/memory/stick/repoName.git

如果计算机上已有存储库的副本,则将记忆棒添加为遥控器并获取/拉取更改。

代码语言:javascript
复制
cd /path/to/local/repo/
git remote add origin /path/to/memory/stick/repoName.git
git pull origin

从现在开始,像平常一样使用 Git,但请确保每当执行 git pull、fetch 或 push 时,都会将记忆棒安装在计算机上。

确保记忆棒是您备份例程的一部分。

使用多台机器 — 使用 CD/DVD

在锁定的开发环境中,内存条可能会被阻止。使用Git还是可以的,但是稍微有点不方便。

Git 会很乐意将更改从本地存储库的一个副本获取到另一个副本。一种选择是通过 CD 或其他介质将包含本地 Git 存储库的目录简单地复制到另一台计算机,然后像平常一样在两台计算机上进行更改和提交。当您想要合并更改时,请选择一台计算机来执行合并并将其他存储库复制到该计算机。要将所有更改拉入当前分支,请使用:

代码语言:javascript
复制
git pull /path/to/other/repo

或者,您可以获取更改并创建一个新分支来存储它们:

代码语言:javascript
复制
git fetch /path/to/other/repo
git checkout -b new_branch FETCH_HEAD

此时,创建一个完成合并的存储库的新副本,并将其移至其他计算机。将最新更改拉入其他存储库,或者如果需要,只需用新副本替换整个存储库。

显然这远非最佳。复制整个存储库目录将包括 .gitignore 文件中排除的个人设置和文件。为了缓解这种情况,可以使用 Git 克隆来复制存储库,而不仅仅是复制它,但更好的选择是使用 git bundle。

Git 捆绑包

git 捆绑包允许将存储库的部分或全部压缩为 git 能够克隆和获取的格式的单个文件。

工作流程与以前非常相似,但不是复制整个存储库目录,而是创建 git 包。在第一台机器上使用以下命令创建捆绑包:

代码语言:javascript
复制
git bundle create repoName.bundle --all

选项捆绑整个存储库,包括所有分支和标签。可以使用 或 选择特定分支或标签。

将 repoName.bundle 文件复制到另一台计算机。要克隆存储库,只需使用:

代码语言:javascript
复制
git clone repoName.bundle

可以在任何计算机上进行更改和提交,然后像之前一样必须选择一台计算机来执行合并。在非合并计算机上,确保提交所有更改并使用以下命令创建捆绑包:

代码语言:javascript
复制
git bundle create repoName.bundle --all

对于较大的存储库,最好仅捆绑存储库的一部分,以避免传输超出所需的数据。例如,仅包含 master 分支上的最后 5 次提交,请使用:

代码语言:javascript
复制
git bundle create repoName.bundle -5 master

重要的是,捆绑包中的提交与存储库上的提交之间没有间隙,在该间隙中将发生合并,否则该过程将失败。

将捆绑包复制到将发生合并的计算机,并使用以下命令提取更改:

代码语言:javascript
复制
git pull /path/to/repoName.bundle

合并/变基完成后,使用以下命令创建另一个包:

代码语言:javascript
复制
git bundle create repoName.bundle --all

上面的命令可以替换为所需的存储库/提交子集。

将捆绑文件移动到其他计算机并使用以下命令更新那里的更改:

代码语言:javascript
复制
git pull /path/to/repoName.bundle

创建本地远程存储库

捆绑包解决了在没有网络的情况下同步 Git 存储库的问题,但我们仍然面临多台计算机彼此之间可能略有不同步的情况。如果新开发人员加入团队,他们会从谁那里复制存储库?最好的选择是选择一台开发机器作为“服务器”。除了开发人员实际工作的存储库的本地克隆之外,还可以在此开发计算机上创建一个裸 Git 存储库。

代码语言:javascript
复制
cd /path/to/store/main/repo
mkdir remoteRepoName.git
cd remoteRepoName.git
git init --bare

接下来导航到本地 git 存储库或创建一个新的存储库并将remoteRepoName.git 存储库添加为远程存储库。

代码语言:javascript
复制
cd /path/to/local/repo/
git remote add origin /path/to/store/main/repo/remoteRepoName.git
git push origin branchName

然后可以在本地存储库中进行更改,或者从其他开发计算机上创建的捆绑包中进行更改。每当进行更改时,都可以使用以下命令将其推送到远程:

代码语言:javascript
复制
git push origin branchName
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端黑板报 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用多台机器 — 使用 USB 记忆棒/HDD
  • 使用多台机器 — 使用 CD/DVD
    • Git 捆绑包
      • 创建本地远程存储库
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档