Joh*_*han 79 git version-control
假设我有台式电脑和笔记本电脑,有时我在桌面上工作,有时我在笔记本电脑上工作.
来回移动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
Run Code Online (Sandbox Code Playgroud)
那么从其他一台计算机上我尝试用克隆获得一份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.
Run Code Online (Sandbox Code Playgroud)
然后进入该repo并添加一个文件:
cd workspace/
echo "test1" > testfile1.txt
git add testfile1.txt
git commit testfile1.txt -m "Added file testfile1.txt"
git push origin master
Run Code Online (Sandbox Code Playgroud)
现在服务器使用testfile1.txt进行更新.
无论如何,让我们看看我们是否可以从其他计算机获取此文件.
mkdir -p ~/git_test/repo2
cd ~/git_test/repo2
git clone user@server:~/git_test/workspace/
cd workspace/
git pull
Run Code Online (Sandbox Code Playgroud)
现在我们可以看到测试文件.
此时,我们可以使用更多内容对其进行编辑,并再次更新服务器.
echo "test2" >> testfile1.txt
git add testfile1.txt
git commit -m "Test2"
git push origin master
Run Code Online (Sandbox Code Playgroud)
然后我们回到第一个客户端并执行git pull以查看更新的文件.现在我可以在两台计算机之间来回移动,如果我愿意,可以添加第三台计算机.
Kin*_*nch 25
我认为,有多种方法.我将描述,我如何处理这个问题
我有一台上网本作为24/7服务器,它拥有多个git-repositories.从/到那里我通过SSH推送和拉取更改.从外面访问我使用dyndns.org.它工作正常,特别是因为我有两个以上的系统,需要访问一些存储库.
更新:一个小例子.可以说我的上网本被称为"上网本".我在那里创建了一个存储库
$ ssh username@netbook.local
$ cd ~/git
$ mkdir newThing
$ cd newThing
$ git init --bare
Run Code Online (Sandbox Code Playgroud)
在我的桌面上,我将创建它的克隆.也许我会添加一些文件
$ git clone username@netbook.local:/home/username/git/newThing
$ git add .
$ git commit -m "Initial"
$ git push origin master
Run Code Online (Sandbox Code Playgroud)
在我的便携式设备上,我将(第一次)做同样的事情,但对于远程访问(从我的局域网外),我还将添加外部地址.
$ 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
Run Code Online (Sandbox Code Playgroud)
它就像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
Run Code Online (Sandbox Code Playgroud)
这是方式,我如何处理这个,我对我来说它工作得很好(如果不完美;))
有些东西要读:http: //progit.org/真的好书.-
小智 7
最简单的方法:使用--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 上制作 repo ;)
我会将repo从一个盒子克隆到另一个盒子,然后设置两个repos,这样我就能git fetch
从另一个盒子里拿出来.
将远程重命名为origin
另一个框的名称使远程分支更易于阅读.
请注意,只使用git fetch
(而不是git push
),这适用于非裸存储库:
[user@foo repo]$ git fetch -v bar
[user@bar repo]$ git fetch -v foo
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
41476 次 |
最近记录: |