一、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
