Linux下git服务器使用初探

本文介绍了如何在Linux(Ubuntu14)上搭建Git服务器,并详细讲述了用户如何克隆远程仓库到本地,进行代码推送,以及与其他用户协作的过程。内容包括设置用户名、邮箱、编辑器,创建空仓库,以及Git的常用命令。
摘要由CSDN通过智能技术生成

git是一款流行的版本管理工具。和其他的版本管理工具一样,git服务器的使用分为几步:

(1)在git服务器上建立一个空的仓库;

(2)用户A使用git客户端将远程仓库clone到本地,将项目代码拷贝到本地仓库中,并推送到远程仓库;

(3)其他用户使用git客户端将远程仓库clone到本地,可得到项目代码,从而可以与用户A进行协作。

在下面的例子中,git服务器在Ubuntu14上,git客户端在Win7下。

准备工作:git服务器和git客户端设置用户名、邮箱和默认编辑器。

git config --global user.name "your name"
git config --global user.email "your email"
git config --global core.editor "your default editor"

设置完毕后,可以使用git config --list查看是否设置成功了。

(1)在git服务器上建立一个空的仓库,下面建立了一个空的仓库project1.git,该目录下没有工作目录。用户提交的代码,在这里看不到。

zpc@ubuntu14:/opt/repository$ pwd
/opt/repository
zpc@ubuntu14:/opt/repository$ git init --bare project1.git
初始化空的 Git 仓库于 /opt/repository/project1.git/
zpc@ubuntu14:/opt/repository$ ls
project1.git
zpc@ubuntu14:/opt/repository$ ls project1.git/
branches  config  description  HEAD  hooks  info  objects  refs

(2)用户A使用git客户端将远程仓库clone到本地,将项目代码拷贝到本地仓库中,并推送到远程仓库;

将远程仓库clone到本地:

Administrator@0Q4KEU4TRBWQAJ6 MINGW64 /e/git-test
$ git clone zpc@192.168.1.13:/opt/repository/project1.git
Cloning into 'project1'...
zpc@192.168.1.13's password:
warning: You appear to have cloned an empty repository.

Administrator@0Q4KEU4TRBWQAJ6 MINGW64 /e/git-test
$ ls
project1/

新建几个文件,表示项目文件,也可以从别的目录拷贝整个项目过来:

Administrator@0Q4KEU4TRBWQAJ6 MINGW64 /e/git-test
$ cd project1/

Administrator@0Q4KEU4TRBWQAJ6 MINGW64 /e/git-test/project1 (master)
$ ls

Administrator@0Q4KEU4TRBWQAJ6 MINGW64 /e/git-test/project1 (master)
$ touch 1.c 2.c 3.c

Administrator@0Q4KEU4TRBWQAJ6 MINGW64 /e/git-test/project1 (master)
$ ls
1.c  2.c  3.c

stage文件(或者称作cache文件),commit到本地仓库,然后push到远程仓库(下面的origin是在clone时git自动为远程仓库起的别名):

Administrator@0Q4KEU4TRBWQAJ6 MINGW64 /e/git-test/project1 (master)
$ git add .

Administrator@0Q4KEU4TRBWQAJ6 MINGW64 /e/git-test/project1 (master)
$ git commit -m 'add 3 files'
[master (root-commit) 6ed4e2b] add 3 files
 3 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 1.c
 create mode 100644 2.c
 create mode 100644 3.c

Administrator@0Q4KEU4TRBWQAJ6 MINGW64 /e/git-test/project1 (master)
$ git remote -v
origin  zpc@192.168.1.13:/opt/repository/project1.git (fetch)
origin  zpc@192.168.1.13:/opt/repository/project1.git (push)

Administrator@0Q4KEU4TRBWQAJ6 MINGW64 /e/git-test/project1 (master)
$ git push origin master
zpc@192.168.1.13's password:
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 209 bytes | 104.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To 192.168.1.13:/opt/repository/project1.git
 * [new branch]      master -> master

Administrator@0Q4KEU4TRBWQAJ6 MINGW64 /e/git-test/project1 (master)
$

在ubuntu14的git服务器上查看,可以看到提交记录,说明文件已经提交成功,但这时在服务器上找不到提交的3个文件:

zpc@ubuntu14:/opt/repository/project1.git$ git log --oneline
6ed4e2b add 3 files
zpc@ubuntu14:/opt/repository/project1.git$ find . -name *.c
zpc@ubuntu14:/opt/repository/project1.git$

(3)其他用户使用git客户端将远程仓库clone到本地,可得到项目代码,从而可以与用户A进行协作。这里通过在win7下的另一个目录重新clone来模拟:

Administrator@0Q4KEU4TRBWQAJ6 MINGW64 /e/git-test2
$ git clone zpc@192.168.1.13:/opt/repository/project1.git
Cloning into 'project1'...
zpc@192.168.1.13's password:
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.

Administrator@0Q4KEU4TRBWQAJ6 MINGW64 /e/git-test2
$ ls
project1/

Administrator@0Q4KEU4TRBWQAJ6 MINGW64 /e/git-test2
$ ls project1/
1.c  2.c  3.c

Administrator@0Q4KEU4TRBWQAJ6 MINGW64 /e/git-test2
$

若不清楚可以使用哪些命令,可以使用多层次的help指令,比如:

git --help

git push -h

git push --help

对于git更详细的使用方式,建议查看其官方帮助文档。可在以下网址下载git中文手册:

https://git-scm.com/book/zh/v2,点击右侧的pdf图标可下载pdf版本的手册;

 

PS:win7下的git bash中可以使用通配符*,但是需要加转义字符,如放弃当前分支的没有stage的所有修改:

git checkout \*

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值