计算机之间的 git 存储库同步,何时移动?

标签 git version-control

假设我有一台台式电脑和一台笔记本电脑, 有时我在台式机上工作,有时我在笔记本电脑上工作。

来回移动 git 存储库的最简单方法是什么?

我希望 git 存储库是相同的, 这样我就可以在另一台计算机上继续我离开的地方。

我想确保两台计算机上的分支和标签相同。

谢谢 约翰

注意:我知道如何使用 SubVersion 执行此操作,但我很好奇这将如何与 git 一起使用。如果更容易,我可以使用第三台电脑作为两台电脑可以同步的经典服务器。

注意:两台计算机都运行 Linux。


更新:

那么,让我们在服务器上使用裸 git 存储库来尝试 XANI:s 的想法, 以及来自 KingCrunch 的推送命令语法。 在这个例子中有两个客户端和一个服务器。

所以让我们先创建服务器部分。

ssh user@server
mkdir -p ~/git_test/workspace
cd ~/git_test/workspace
git --bare init

然后我尝试从另一台计算机上使用克隆获取 repo 的副本:

git clone user@server:~/git_test/workspace/
Initialized empty Git repository in /home/user/git_test/repo1/workspace/.git/
warning: You appear to have cloned an empty repository.

然后进入那个 repo 并添加一个文件:

cd workspace/
echo "test1" > testfile1.txt
git add testfile1.txt
git commit testfile1.txt -m "Added file testfile1.txt"
git push origin master

现在服务器更新为 testfile1.txt。

无论如何,让我们看看是否可以从另一台计算机上获取此文件。

mkdir -p ~/git_test/repo2
cd ~/git_test/repo2
git clone user@server:~/git_test/workspace/
cd workspace/
git pull

现在我们可以看到测试文件了。

此时我们可以用更多的内容编辑它并再次更新服务器。

echo "test2" >> testfile1.txt
git add testfile1.txt
git commit -m "Test2"
git push origin master

然后我们回到第一个客户端并执行 git pull 以查看更新后的文件。 现在我可以在两台电脑之间来回移动, 如果我愿意,还可以添加三分之一。

最佳答案

我认为,有多种方法。我将描述一下,我是如何处理的

我有一台上网本作为 24/7 服务器,它拥有多个 git 存储库。从/到那里,我通过 SSH 推送和 pull 更改。对于从外部访问,我使用 dyndns.org。它工作正常,特别是因为我有两个以上的系统,需要访问一些存储库。

更新:一个小例子。 可以说我的上网本叫做“上网本”。我在那里创建了一个存储库

$ ssh username@netbook.local
$ cd ~/git
$ mkdir newThing
$ cd newThing
$ git init --bare

在我的桌面上,我将创建一个它的克隆。也许我还会添加一些文件

$ git clone username@netbook.local:/home/username/git/newThing
$ git add .
$ git commit -m "Initial"
$ git push origin master

在我的可移植设备上,我会(首先)做同样的事情,但对于远程访问(从我的 LAN 外部),我还会添加外部地址。

$ git clone username@netbook.local:/home/username/git/newThing
$ git remote add externalName username@mydyndns.home-ip.org:/home/username/git/newThing
$ git pull externalName master

这就是 git (/git workflows) 的工作方式。您可以根据需要添加任意数量的远程存储库。这并不重要,如果两个或多个引用相同的“物理”存储库。您不需要自己的本地“服务器”,您可以使用任何您具有 ssh 访问权限的公共(public)服务器。当然,如果您不需要从外部访问,则根本不需要公共(public)服务器。裸存储库也可以位于桌面系统上,然后您可以在本地文件系统中创建一个工作副本存储库。

$ mkdir myRepo; cd myRepo
$ git init --bare
$ cd /path/to/myProject
$ git remote add origin /path/to/myRepo
$ git add .; git commit -m "Initial"; git push origin master

这就是我处理这个问题的方式,对我来说它工作得很好(如果不完美;))

要读的东西:http://progit.org/ 真的是好书。-

关于计算机之间的 git 存储库同步,何时移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4948190/

相关文章:

git - "Make sure you configure your ' user.email ' and ' user.name ' in git"尝试推送到 git lab 时

git-branch - git:列出悬挂标签

Vim 和 GVim 的 Git 提交失败

git - 适用于 Windows 的 PhpStorm 和 Github

version-control - NuGet 和版本控制 - 如何处理目录文件夹

visual-studio - TFS 在 Visual Studio 2008 启动期间无法加载 "Package Load Failure"

git - 同时管理 GIT 和 Perforce

python - 无法使用 python 自动执行 git fetch && git checkout

git - 获取 repo 的最新标签

ruby-on-rails - 您如何与开发人员团队一起管理 Ruby on Rails 迁移?