假设我有一台台式电脑和一台笔记本电脑, 有时我在台式机上工作,有时我在笔记本电脑上工作。
来回移动 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/