Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

离线使用 git #3

Open
d100972 opened this issue May 10, 2024 · 0 comments
Open

离线使用 git #3

d100972 opened this issue May 10, 2024 · 0 comments

Comments

@d100972
Copy link
Owner

d100972 commented May 10, 2024

为了防止外部入侵,一些公司不使用网络或者使用封闭的网络。在这种环境下工作可能会有些困难,但你仍然可以使用类似Git这样的版本控制工具,这也许更加重要。

Git是个很灵活的工具,你不需要远程仓库就可以使用它。你可以像平时一样创建分支,暂存和提交文件。

举个例子,假设你只有一台电脑用于开发,你可以创建一个名为testRepo的文件夹,然后在其中初始化一个Git仓库,创建一个test.txt文件,将其添加到仓库,并提交:

mkdir testRepo
cd testRepo
git init
touch test.txt
git add --all
git commit -m "Initial Commit"

不过,开发工作往往不只在一台电脑上进行。

如果你需要在多台电脑上工作,可以通过USB记忆棒或硬盘来传送代码。你可以在一台电脑上创建一个名为repoName.git的仓库,然后将这个仓库添加到USB设备上:

cd /path/to/memory/stick
mkdir repoName.git
cd repoName.git
git init --bare

然后,在你的本地仓库中,添加USB设备上的仓库为远程仓库,并将你的更改推送到这个远程仓库:

cd /path/to/local/repo/
git remote add origin /path/to/memory/stick/repoName.git
git push origin master

之后,你可以将USB设备挂载到其他电脑上,然后从USB设备上的远程仓库拉取代码。注意,在执行git pull,fetch或push操作时,要确保USB设备已经挂载到电脑上。

除了使用USB设备,你还可以使用CD/DVD来进行代码传送。你只需要将一台电脑上的本地Git仓库复制到另一台电脑上,然后在这两台电脑上进行正常的修改和提交。当你需要合并代码时,选择一台电脑执行合并,并将另一台电脑上的仓库复制过来:

git pull /path/to/other/repo

如果你希望将更改保存在一个新的分支中,你可以这样做:

git fetch /path/to/other/repo
git checkout -b new_branch FETCH_HEAD

至此,你已经创建了一个包含所有合并的新仓库,并将其复制到了其他电脑上。

需要注意的是,这种方法有一些不足。例如,复制整个仓库目录会包括个人设置和.gitignore文件中排除的文件。

因此,你可以使用git bundle来解决这个问题。git bundle可以将仓库的一部分或全部压缩成一个单一的文件,然后你可以从这个文件中克隆和获取。

例如,你可以在一台电脑上创建一个bundle,然后将这个bundle复制到另一台电脑上:

git bundle create repoName.bundle --all

然后,在另一台电脑上从这个bundle中克隆仓库:

git clone repoName.bundle

你可以在任何电脑上进行修改和提交,然后选择一台电脑执行合并。在执行合并的电脑上,你需要从bundle中拉取更改:

git pull /path/to/repoName.bundle

然后,创建一个新的bundle,并将其复制到其他电脑上:

git bundle create repoName.bundle --all

在其他电脑上,你可以从这个新的bundle中拉取最新的更改:

git pull /path/to/repoName.bundle

总的来说,虽然没有网络会让工作变得复杂,但是Git的弹性使得我们仍然可以有效地进行版本控制。虽然这些方法可能没有直接推送到Github那么方便,但至少我们不会看到一堆像main_v1_final version_with_bobs_extra_patch finalfinal_version这样的文件。

原文:https://www.gibbard.me/using_git_offline/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant