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 \*