假设我有台式电脑和笔记本电脑, 有时我在桌面上工作,有时我在笔记本电脑上工作。
来回移动git存储库的最简单方法是什么?
我希望git存储库是相同的, 这样我就可以继续离开另一台计算机。
我想确保两台计算机上都有相同的分支和标签。
由于 约翰
注意:我知道如何使用SubVersion执行此操作,但我很好奇它如何使用git。如果它更容易,我可以使用第三台PC作为两台PC可以同步的经典服务器。
注意:两台计算机都在运行Linux。
更新:
所以让我们试试XANI:在服务器上使用一个简单的git repo的想法, 和来自KingCrunch的push命令语法。 在此示例中,有两个客户端和一个服务器。
所以让我们先创建服务器部分。
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.
然后进入该回购并添加一个文件:
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以查看更新的文件。 现在我可以在两台电脑之间来回移动, 如果我愿意,可以添加第三个。
答案 0 :(得分:24)
我认为,有多种方法。我将描述,我如何处理这个
我有一台上网本作为24/7服务器,它拥有多个git-repositories。从/到那里我通过SSH推送和拉取更改。从外面访问我使用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
在我的便携式设备上,我会(首先)做同样的事情,但是对于远程访问(从我的局域网外),我也会添加外部地址。
$ 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访问权限的公共服务器。如果你不需要从外面访问,当然你根本不需要公共服务器。裸存储库也可以在桌面系统上,然后您可以在本地文件系统中创建工作副本存储库。
$ 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/ 真的好书.-
答案 1 :(得分:6)
我会将repo从一个盒子克隆到另一个盒子,然后设置两个repos,这样我就可以从另一个盒子中git fetch
。
将远程从origin
重命名为另一个框的名称,使远程分支更易于阅读。
请注意,只使用git fetch
(而不是git push
),这适用于非裸存储库:
[user@foo repo]$ git fetch -v bar
[user@bar repo]$ git fetch -v foo
答案 2 :(得分:4)
最简单的方法:用--bare
创建的中央仓库(所以没有签出文件,只有.git东西),或者github
“分布式”看起来像这样:
设定:
git remote add desktop ssh://user@desktop/home/user/repo/path
git remote add laptop ssh://user@laptop/home/user/repo/path
同步:
git pull laptop/desktop
(推送在非裸存储库上不会很好用,因为当推送到远程存储库时,git不会修改已检出的文件)
或者,在pendrive上制作回购;)
答案 3 :(得分:1)
如何简单地使用rsync
?
答案 4 :(得分:1)
难道你不能只在GitHub,BitBucket或GitLab上创建一个远程存储库吗? (后两家公司提供无限制的免费私人存储库)。当您完成工作日时,只需使用git push
将更改推送到远程仓库即可。回家后,只需git pull
将工作中的更改提取到家用机器上即可。同样,当您在家完成时,请git push
,然后当您重返工作岗位时,请执行git pull
。
答案 5 :(得分:1)
在两台计算机之间来回移动git存储库的最简单方法是什么?
我在随身携带的一台较弱的计算机(笔记本电脑)上工作,但在其他地方的功能更强大的计算机上工作。我一直使用git使用脚本从笔记本电脑同步到另一台计算机。我只需键入以下命令即可运行它:
sync_git_repo_from_pc1_to_pc2
就是这样!即使使用手机wifi热点并处理大小为数十亿字节的存储库,通常也需要大约25 MB的数据和约30秒到1分钟的时间。我被套进PC2,所以我在PC2上执行git log -1
以验证同步是否有效,然后运行build命令。完美运作。试一试。有关详细信息,请参见下面的链接。
注意:PC2上的克隆存储库将位于名为somename_SYNC
的git分支上。如果您希望脚本具有相同的分支名称,而不是始终使用“ SYNC分支”,则可以对其进行适当的修改。如果需要,可以修改脚本以获得更类似于下面的方案2的效果。但是,手动进行场景2 并不困难,因此您可能只想继续手动执行场景2。在方案1中,自动化脚本是最有益和最省时的,因为它允许轻松快速地进行“修改,同步,构建”工作流,在PC1上进行“修改”,“同步”从PC1运行,但也影响PC2,并且在PC2上进行了“构建”。
我希望git存储库是相同的,这样我就可以继续在另一台计算机上离开的地方了。 我想确保两台计算机上都具有相同的分支和标签。
转到https://github.com并创建一个帐户,并可选地(推荐)创建set up ssh keys。
现在使用其Web界面创建新的存储库。
找到新的存储库ssh或https克隆URL。例如:git@github.com:ElectricRCAircraftGuy / eRCaGuy_dotfiles.git或https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles.git。
将项目克隆到PC1上。例如:
git@github.com:ElectricRCAircraftGuy/eRCaGuy_dotfiles.git
cd eRCaGuy_dotfiles
并在PC2上重复相同的克隆命令。
现在在PC1上进行一些更改,将其提交,然后将其推送到github上的“远程”存储库中:
# edit some files, then do the following
git add -A # stage ("add") all changed files to be committed
git commit # commit them
git push # push them to your remote github repo
现在在PC2上,进行更改:
# pull all changes from github (which includes the changes
# you just pushed from PC1) to PC2
git pull
现在您可以使用上面仅两个步骤显示的命令在PC2上编辑文件,提交文件并将其推送到github,然后从PC1运行git pull
从PC2提取这些更改
请根据需要在PC1或PC2上继续执行此过程,并轻松共享文件并在两台计算机之间分配工作。只需记住,所有更改必须先提交并在一台PC上推送到github ,然后才能签出(拉出它们)并继续在另一台PC上工作。
如果遇到两台PC之间文件有点不同步的情况,则可能不得不使用一些额外的分支,进行一些合并,解决冲突等。然后,它变得更像与一个你们都在同一个仓库中工作的小团队一起工作。 Google是您的朋友。 Git非常非常非常强大,并且具有几乎所有内容的命令,命令集或工作流。
答案 6 :(得分:0)
好吧,你可以推送(通过Git)到你可能设置的服务器。或者您可以将您的存储库存储在GitHub中并将其用作同步桥。
答案 7 :(得分:0)
您可以在任何计算机上创建存储库,可能是桌面计算机,然后从笔记本电脑和自身推送/拉出存储库。