Git远程仓库搭建、设置Git服务器

首先,创建一个git仓库 hello, 仓库的克隆

$ cd ..
$ pwd
/Users/jim/working/git/git_immersion/auto
$ ls
hello

此刻你应当在你的工作目录,且有名为“hello”的单一仓库 

创建 hello 仓库的克隆 

$ git clone hello cloned_hello
Cloning into cloned_hello...
done.
$ ls
cloned_hello
hello

在你的工作目录中现在应当有两个仓库:原始的“hello”仓库和新克隆的“cloned_hello”仓库。 

查看克隆的仓库 

$ git hist --all
* 2fae0b2 2013-04-13 | Updated Rakefile (HEAD, origin/master, origin/greet, origin/HEAD, master) [Jim Weirich]
* 1c23048 2013-04-13 | Hello uses Greeter [Jim Weirich]
* 62d7ce0 2013-04-13 | Added greeter class [Jim Weirich]
* b59a8c2 2013-04-13 | Added README [Jim Weirich]
* 96ee164 2013-04-13 | Added a Rakefile. [Jim Weirich]
* 0f36766 2013-04-13 | Moved hello.rb to lib [Jim Weirich]
* eb30103 2013-04-13 | Add an author/email comment [Jim Weirich]
* 1f7ec5e 2013-04-13 | Added a comment (v1) [Jim Weirich]
* 582495a 2013-04-13 | Added a default value (v1-beta) [Jim Weirich]
* 323e28d 2013-04-13 | Using ARGV [Jim Weirich]
* 9416416 2013-04-13 | First Commit [Jim Weirich]
现在你应当看到新仓库的全部提交列表,而且它或多或少会匹配原始仓库的提交历史。仅有的差异体现在分支名
称上。

远程分支 

你应当在历史列表中看到 master 分支 (孤单的 HEAD)。而且你也将有许多奇怪的分支名称 (origin/master、origin/greet 及 origin/HEAD)。 

远程仓库典型地存在于可能是中央服务器的独立机器上。正如我们可以在此处看到的,它们可以指到同一机器上的仓库。关于名称“origin”没有什么特别的,对于主中央仓库(如果有的话)使用名称“origin”只是习惯的约定而已。 

在原始的 hello 仓库中做更改 

对 README 做下列更改 

This is the Hello World example from the git tutorial.
(changed in original)

现在添加并提交此更改 

$ git add README
$ git commit -m "Changed README in original repo"

学习如何从远程仓库拉下更改。 

$ cd ../cloned_hello
$ git fetch
$ git hist --all

注意:现在在 cloned_hello 仓库中。 

在此刻,仓库具有来自原始仓库的全部提交,但它并没有整合到克隆仓库的本地分支中。

现在看看“Updated Rakefile”提交。你将看到本地 master分支指到了此提交,并非我们取得的新提交 

git fetch 命令的结果将从远程仓库取得新的提交,但它不会将这些提交合并到本地分支中。 

将取得的更改合并到本地 master 

$ git merge origin/master
Updating 2fae0b2..2e4c559
Fast-forward
 README |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

这些是更改。即使 git fetch 不合并更改,然而我们仍然可以手动从远程仓库合并更改。 

接下来让我们看看将 fetch merge 组合成单一命令。 

学习 git pull 等价于 git fetch git merge 。 

创建裸仓库 

裸仓库(没有工作目录)通常用于共享。 

$ cd ..
$ git clone --bare hello hello.git
$ ls hello.git

结尾带 .git 的仓库习惯约定是裸仓库。我们可以看到在 hello.git 仓库中没有工作目录。实际上,除了非裸仓库的.git 目录外什么也没有。 

将裸仓库作为远程仓库添加到我们的原始仓库中。 让我们添加 hello.git 到我们的原始仓库。 

$ cd hello
$ git remote add shared ../hello.git
因为裸仓库通常共享在某种网络服务器上,所以一般很难转到仓库中并拉下更改。因此,我们需要将更改推到其
它的仓库中。

让我们通过创建更改来开始推送。编辑 README 并提交它。 

$ git checkout master
$ git add README
$ git commit -m "Added shared comment to readme"
现在推送更改到共享的仓库。
$ git push shared master

注意:我们必须明确地指定接收推送的分支名称 master。它可以设置为自动化,但我从未记住实现的命令。选择“Git Remote Branch”gem 更易管理远程分支。 

$ git remote add shared ../hello.git
$ git branch --track shared master
$ git pull shared master
$ cat README

启动 Git 服务器 

 # (From the work directory)
$ git daemon --verbose --export-all --base-path=.
现在,在分开的终端窗口中,转到你的工作目录。
# (From the work directory)
$ git clone git://localhost/hello.git network_hello
$ cd network_hello
$ ls





















你可能感兴趣的:(Git)