git仓库同步计算机之间,当移动?

yftpprvb  于 2023-01-24  发布在  Git
关注(0)|答案(8)|浏览(140)

假设我有一台台式电脑和一台笔记本电脑,有时我在台式电脑上工作,有时我在笔记本电脑上工作。
来回移动git仓库最简单的方法是什么?
我希望git仓库是相同的,这样我就可以继续我在另一台计算机上留下的地方。
我希望确保两台计算机上的分支和标记相同。
谢谢约翰
Note:我知道如何在SubVersion中实现,但我很好奇在git中如何实现,如果更简单的话,我可以使用第三台pc作为经典服务器,两台pc可以同步。
注:两台计算机都运行Linux。

    • 更新**:

所以让我们在服务器上使用一个git repo,使用KingCrunch的push命令语法来尝试XANI的想法。在这个例子中,有两个客户端和一个服务器。
因此,让我们先创建服务器部分。

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

然后我试着从另一台计算机上用clone获取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来查看更新后的文件。现在我可以在两台计算机之间来回移动,如果愿意,还可以添加第三台。

62lalag4

62lalag41#

我认为,有多种方法。我将描述一下,我是如何处理这个问题的
我有一个上网本作为24/7的服务器,它有多个git仓库。我通过SSH从那里推/到那里。对于从外部访问,我使用dyndns.org。它工作得很好,特别是因为我有两个以上的系统,需要访问一些仓库。
更新:一个小例子。假设我的上网本叫做"netbook"。我在那里创建了一个存储库

$ 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 workflowers)可以工作。你可以添加任意多个远程仓库。如果两个或多个仓库引用相同的"物理"仓库,这并不重要。你不需要自己的本地"服务器",你可以使用任何公共服务器,你有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/真的很好的书。-

ruarlubt

ruarlubt2#

最简单的方法:使用--bare(因此没有 checkout 文件,只有. git内容)或github创建的中央存储库
"分布式"将如下所示:
设置:
1.在笔记本电脑上:git remote add desktop ssh://user@desktop/home/user/repo/path
1.在桌面上:git remote add laptop ssh://user@laptop/home/user/repo/path
同步:
git pull laptop/desktop(push在非裸repo上不会很好地工作,因为git在推送到远程repo时不会修改 checkout 的文件)
或者,在pendrive上进行回购;)

idfiyjo8

idfiyjo83#

我会将repo从一个盒子克隆到另一个盒子,然后设置这两个repo,这样我就可以从另一个盒子复制git fetch
将远程分支从origin重命名为另一个框的名称可以使远程分支更易于阅读。
注意,只要使用git fetch(而不是git push),就可以很好地处理非裸仓库:

[user@foo repo]$ git fetch -v bar

[user@bar repo]$ git fetch -v foo
ivqmmu1c

ivqmmu1c4#

你不能在GitHub、BitBucket或GitLab上创建一个远程仓库吗?(后两家公司提供无限制的免费私有存储库)当你结束一天的工作时,只需使用git push将你的更改推送到远程存储库,当你回到家时,只需执行git pull将你的更改从工作中拉到你的家用机器上,同样,当你在家里结束工作时,执行git push,然后当您返回工作时,执行git pull

tjrkku2a

tjrkku2a5#

在两台计算机之间来回移动git仓库最简单的方法是什么?

场景1:我只在本地PC1上工作(编辑代码和文件),但希望复制这些文件(例如:构建整个代码库)也在远程PC2上。

使用小于25 MB的数据时,通过WiFi热点在1分钟内从PC1同步到PC2:

我在旅行时使用的一台性能较弱的电脑(笔记本电脑)上工作,但在其他地方的一台性能更强的电脑上构建。我一直使用git通过脚本将笔记本电脑同步到另一台电脑上。

sync_git_repo_from_pc1_to_pc2

就是这样!它通常需要大约25MB的数据和大约30秒到1分钟,即使是在使用手机wifi热点和处理几十GB大小的repo时。我被ssh 'ed到PC2,所以我在PC2上运行git log -1来验证同步是否工作,然后我运行build命令。工作完美。试试吧。参见下面的链接了解细节。
注:PC2上克隆的存储库将位于名为somename_SYNC的git分支上。如果您希望它具有相同的分支名称,而不是总是使用"SYNC分支",请适当修改脚本。如果需要,可以修改脚本以获得更像下面场景2的效果。尽管如此,* 手动 * 执行场景2并不难,因此,您可能只想继续手动执行场景2。在场景1中,自动脚本最有优势,也最节省时间,因为它允许轻松快速地执行"修改、同步、构建"工作流,其中"修改"在PC1上执行,"同步"在PC1上运行,但也会影响PC2,而"构建"发生在PC2上。

链接:

1.* * 此处提供完整的设置和安装说明:**
通过SSH使用Eclipse处理远程项目
1.* * 自述文件、文档和资料库地址:https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scripts/README_git-sync_repo_from_pc1_to_pc2.md
1.* * 此处为所讨论的确切脚本:

https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scripts/sync_git_repo_from_pc1_to_pc2.sh

场景2:我在多台计算机上工作(编辑代码和文件),希望能够从世界上任何一台计算机上编辑相同的代码库:

我希望git仓库是相同的,这样我就可以在另一台计算机上继续我离开的地方。我希望确保我在两台计算机上有相同的分支和标签。
1.转到https://github.com并创建一个帐户,并可选地(推荐)创建set up ssh keys
1.现在使用他们的Web界面创建一个新的存储库。
1.从2020年或更早开始,GitHub也允许 * 免费的私有仓库 *,所以这对于私有的、闭源代码的项目也很有效。
1.查找新的存储库ssh或https克隆URL。例如: 网站名称:电子遥控飞机设计师/eRCaGuy_点文件. git或https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles.git。git@github.com:ElectricRCAircraftGuy/eRCaGuy_dotfiles.git or https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles.git .
1.将项目克隆到PC1上。例如:

git@github.com:ElectricRCAircraftGuy/eRCaGuy_dotfiles.git
 cd eRCaGuy_dotfiles

1.然后在PC2上重复完全相同clone命令。
1.现在,在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

1.现在,在PC2上拉入您的更改:

# pull all changes from github (which includes the changes
 # you just pushed from PC1) to PC2
 git pull

1.现在您可以在PC2上编辑文件,提交它们,然后使用上面两个步骤显示的命令将它们推送到github,然后您可以从PC1运行git pull从PC2拉入这些更改。
1.根据需要,在PC1或PC2上继续执行此过程,并轻松地在两台计算机之间共享文件和拆分工作。只需记住,所有更改必须在一台计算机上 * 提交并推送到github *,然后才能在另一台计算机上 checkout (拉取)并继续工作。
1.如果你遇到了两台电脑之间文件不同步的情况,你可能需要使用一些额外的分支,做一些合并,解决冲突等。然后,这就变得更像是和一个小团队一起工作,你们都在做同一个repo。Google是你的朋友。Git非常非常强大,有一个命令,一组命令,或工作流程来处理几乎所有的事情。

xxslljrj

xxslljrj6#

简单地使用rsync怎么样?

fv2wmkja

fv2wmkja7#

你可以(通过Git)推送和拉取到你可能设置的服务器上,或者你可以把你的repos存储在GitHub上,并把它作为一个同步桥梁。

7gs2gvoe

7gs2gvoe8#

您可以在任何一台计算机上创建存储库,可能是台式机,然后从笔记本电脑和存储库本身推/拉到存储库。

相关问题