如何将本地Git存储库推送到另一台计算机?

时间:2010-05-22 12:16:25

标签: git git-push

我的笔记本电脑上有一个本地Git存储库设置。我想把它推到我的桌面。

我该怎么做?

3 个答案:

答案 0 :(得分:53)

如果您有权访问共享目录,则可以(请参阅git clonegit remote):

git clone --bare /path/to/your/laptop/repo /shared/path/to/desktop/repo.git
git remote add desktop  /shared/path/to/desktop/repo.git

这将创建一个bare repo,在您的本地仓库中称为“桌面” 由于它是裸露的,你可以推动它(如果需要也可以从它拉出来)

git push desktop

作为ProGit book mentions,git支持文件协议:

  

最基本的是 Local 协议,其中远程存储库位于磁盘上的另一个目录中。
  如果团队中的每个人都可以访问共享文件系统(如NFS挂载),或者每个人都登录到同一台计算机的情况不太可能,则通常会使用此方法。

答案 1 :(得分:5)

这是我写的一个脚本来做这件事。该脚本处理新git repos的所有常规初始化

  1. 创建.gitignore文件
  2. 初始化.git
  3. 在服务器上创建裸git仓库
  4. 设置本地git仓库以推送到该远程仓库
  5. http://gist.github.com/410050

    你肯定要修改它以适应你所拥有的任何设置,特别是如果你正在处理Windows笔记本电脑/台式机。

    以下是完整的脚本:

    #!/bin/bash
    # Create Git Repository
    # created by Jim Kubicek, 2009
    # jimkubicek@gmail.com
    # http://jimkubicek.com
    
    # DESCRIPTION
    # Create remote git repository from existing project
    # this script needs to be run from within the project directory
    
    # This script has been created on OS X, so YMMV
    
    #######
    # Parameters
    REPLOGIN=#Login name
    REPADDRESS=#Repo address
    REPLOCATION=/Users/Shared/Development #Repo location
    
    # The repo name defaults to the name of the current directory.
    # This regex will accept foldernames with letters and a period.
    # You'll have to edit it if you've got anything else in your folder names.
    REPNAME=`pwd | egrep -o "/[a-zA-Z]+$" | egrep -o "[a-zA-Z\.]+"`
    
    
    # If you have standard files/directories to be ignored
    # add them here
    echo "Creating .gitignore"
    echo 'build/' >> .gitignore # The build directory should be ignored for Xcode projs
    echo '.DS_Store' >> .gitignore # A good idea on OS X
    
    # Create the git repo
    echo "Initializing the repo"
    git init
    git add .
    git commit -m "Initial commit"
    
    # Copy the repo to the server
    echo "Copying the git repo to the server $REPADDRESS"
    TEMPREP="$REPNAME.git"
    git clone --bare .git $TEMPREP
    scp -r $TEMPREP $REPLOGIN@$REPADDRESS:$REPLOCATION/
    rm -rf $TEMPREP
    
    # Set up the origin for the project
    echo "Linking current repository to remote repository"
    git remote add origin $REPLOGIN@$REPADDRESS:$REPLOCATION/$REPNAME.git/
    

答案 2 :(得分:2)

最简单(不是最好)的方式是通过LAN共享存储库目录,并使用git的file://协议(参见man git)。

对我而言,最好的方法是使用gitolite(有关详细说明,请参阅gitolite docs)。