Git服務器的搭建和使用


一、GIT服務器的搭建

1. 安裝Git

yum -y install git 

 

2. 創建git用戶

adduser git

 

3. 創建證書登陸

  收集所有客戶端需要登錄的用戶的公鑰,就是他們自己的id_rsa.pub文件,把所有公鑰導入到/home/git/.ssh/authorized_keys文件里,一行一個。

   保證ssh不輸入密碼能連接到git用戶

 

4. 初始化

[root@app-01 opt]# git init --bare demo.git
Initialized empty Git repository in /opt/demo.git/

Git就會創建一個裸倉庫,裸倉庫沒有工作區,因為服務器上的Git倉庫純粹是為了共享,所以不讓用戶直接登錄到服務器上去改工作區,並且服務器上的Git倉庫通常都以.git結尾。

 

5. 把owner改為git

chown -R git:git demo.git/

 

6. 禁用shell登陸

 將/bin/bash改成/usr/bin/git-shell;這樣,git用戶可以正常通過ssh使用git,但無法登錄shell,因為我們為git用戶指定的git-shell每次一登錄就自動退出。
[root@app-01 opt]# tail -1f  /etc/passwd
git:x:1002:1006::/home/git:/usr/bin/git-shell

 至此git服務器就搭建完成了。

 

二、GIT的基本使用

1. 克隆遠程倉庫

  在客戶端操作

[root@wls12c DEV]$ git clone ssh://git@120.77.85.77:2121/opt/demo.git
Initialized empty Git repository in /root/DEV/demo/.git/
warning: You appear to have cloned an empty repository.
[root@wls12c DEV]$ ls
demo

   

2. 初始化客戶端的工作環境

[root@wls12c demo]$ git config --global user.name "Scott Cho"
[root@wls12c demo]$ git config --global user.email "root@wls12c.com"
[root@wls12c demo]$ git config --global core.editor vim

 

3. 向Git本地倉庫中提交一個新文件

[root@wls12c demo]$ echo "I successfully cloned the Git repository" > readme.txt
[root@wls12c demo]$ git add readme.txt     #增加數據到暫存區
[root@wls12c demo]$ git status        #查看當前工作目錄的狀態
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#    new file:   readme.txt
#
[root@wls12c demo]$ git log     
fatal: bad default revision 'HEAD'
[root@wls12c demo]$ git commit -m "Clone the Git repository"
[master (root-commit) b548d3b] Clone the Git repository
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 readme.txt
[root@wls12c demo]$ git log
commit b548d3bd469cf5f183e9be9a3b2949f6361b5385
Author: Scott Cho <root@wls12c.com>
Date:   Mon Feb 27 17:42:29 2017 +0800

    Clone the Git repository

 常見技巧:

  查看當前文件內容與Git版本數據庫中的差別:        git diff readme.txt

  將當前工作目錄內的所有文件都一起添加到暫存區域:      git add .

  創建忽略文件列表:                     .gitignore

  文件被直接提交到Git數據庫:              git commit -a -m "Modified again”

 

   

4 定義遠程的Git服務器

[root@wls12c demo]$ git remote add server ssh://git@120.77.85.77:2121/opt/demo.git

 

5. 將文件提交到遠程Git服務器

[root@wls12c demo]$ git push -u server master
Counting objects: 3, done.
Writing objects: 100% (3/3), 262 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://git@120.77.85.77:2121/opt/demo.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from server.

 

6. 移除數據

     保留工作區的文件,刪除暫存區的文件:   git rm --cache test.java

  從Git暫存區和工作目錄中一起刪除:   git rm -f test.java

  刪除Git版本倉庫內的文件快照:    git rm  test.java 

 

7. 重命名文件

  git mv 1.txt 2.txt

  git commit -m "changed name"

8. 還原數據

 

[root@wls12c demo]$ echo "Git is a version control system" >> readme.txt
[root@wls12c demo]$ git add .
[root@wls12c demo]$ git commit -m "test rollback"
[master e34168a] test rollback
 1 files changed, 1 insertions(+), 0 deletions(-)
[root@wls12c demo]$ git log --pretty=oneline
e34168afeff0e1b1462eb6a52db4bd207d384332 test rollback
2947448a1d50b8a2613f93c54db31db797e65a5c changed name
458eacab758f72ecb4f63524caa301b4c440d702 ADD 1.txt agin
7c1464fa93af1eed88eaa76b15a663bae84cb78a ADD 1.txt agin
361b54468b1d9e4cbd271ce2be196d556ee84556 ADD 1.txt
b548d3bd469cf5f183e9be9a3b2949f6361b5385 Clone the Git repository
[root@wls12c demo]$ git reset --hard 29474
HEAD is now at 2947448 changed name
[root@wls12c demo]$ cat readme.txt 
I successfully cloned the Git repository

 

用git reflog命令來查看所有的歷史記錄,這樣就可以看見還原以前的記錄了。

  我們突然發現不應該寫一句話的,可以手工刪除(當內容比較多的時候會很麻煩),還可以將文件內容從暫存區中恢復或者版本庫中恢復:

[root@wls12c demo]$ echo "xxxxx" >>readme.txt 
[root@wls12c demo]$ git checkout -- readme.txt
[root@wls12c demo]$ cat readme.txt 
I successfully cloned the Git repository
Git is a version control system

checkou規則是如果暫存區中有該文件,則直接從暫存區恢復,如果暫存區沒有該文件,則將還原成最近一次文件提交時的快照。

 

 9. 管理標簽

  打標簽  tag v1.0

    git tag v1.1 -m "version 1.1 released" d316fb

   查看所有的已有標簽:

      git tag

   查看此標簽的詳細信息:

     git show v1.0

 

10. 創建與合並分支

查看分支:git branch

創建分支:git branch <name>

切換分支:git checkout <name>

創建+切換分支:git checkout -b <name>

合並某分支到當前分支:git merge <name>

刪除分支:git branch -d <name>

 

11. 拉取遠程分支

git branch --set-upstream origin/dev

git pull origin dev

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM