64

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

我怎样才能做到这一点?

4

3 回答 3

57

如果您有权访问共享目录,您可以(参见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

这将创建一个裸仓库,在您的本地仓库中引用为“桌面”。
由于它是裸露的,您可以推到它(如果需要也可以从中拉出)

git push desktop

正如ProGit 书中提到的,git 确实支持文件协议:

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

于 2010-05-22T12:38:21.227 回答
5

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

  1. 创建 .gitignore 文件
  2. 初始化 .git
  3. 在服务器上创建裸 git repo
  4. 设置本地 git 存储库以推送到该远程存储库

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/
于 2010-05-22T12:54:57.187 回答
2

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

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

于 2010-05-22T20:48:49.207 回答