安裝git程序
ContOS
Yum install –y epel-release
Yum install –y git
Ubuntu
Sudo apt-get install git
Windows上安裝
https://git-scm.com/download/win
安裝完成以後還需要最後一步設置
git config --global user.name "Qiang"//比如Qiang
git config --global user.email "[email protected]"//寫入到你的郵箱
創建版本倉庫並推送文件
Mkdir /home/gitroot //創建目錄
Cd /home/gitroot //進入目錄
Git init //用命令初始化。讓這個目錄編程git可以管理的倉庫
Ls –a //可以看到.git目錄
Echo –e “QIANG”>1.txt //創建一個文件1.txt
Git add 1.txt //把1.txt添加到倉庫中
Git commit –m “add new file 1.txt” //add完了必須要conmit纔算真正把文件提交到git倉庫裏
Echo –e “QIANG QIANG”>> 1.txt //更改1.txt
Git status //查看當前倉庫中的狀態,比如是否有改動文件
Git checkout --1.txt//將倉庫中的1.txt覆蓋本地的1.txt
Git diff 1.txt /可以對比1.txt本次修改了什麼內容,相比倉庫裏面的版本
刪除文件
1. git add test.txt
2. git commit -m "add test.txt"
3. rm test.txt
4. git status
5. git rm test.txt
6. rm 'test.txt'
7. git commit -m "remove test.txt"
上傳當前目錄下所有文件
1. git add .
2. git commit -m "updata all"
3. git push
版本的變更
多次更改1.txt 並進行git add,git commit操作
Git log //可以查看所有提交git倉庫的倉庫記錄操作
Git log –pretty=oneline 一行一行顯示
通過git log可以查看到過去提交的所有版本,所以根據這個log可以指定回退某個版本
Git reset –hard d03da70182c1e78d04df1d7eee2f6a972ae4f82b //可以回退該版本,這裏是長字符串,可以簡寫(前5個字符)
Git reflog //可以顯示所有的版本
文件恢復
當修改1.txt 發現修改的不對,想修改上一次提交的狀態
Git checkout –1.txt//恢復到上一次提交的狀態
如果1.txt修改完成,保存後,git add 1.txt了 但是沒有git commit,再想回退到上一次提交是的狀態,可以使用
Git reset HEAD 1.txt
然後再
Git checkout –1.txt
文件刪除
Echo “QIANG” >2.txt
Git add 2.txt
Git commit –m “add new file 2.txt”
Rm –f 2.txt
Git status
Git rm 2.txt
Git commit –m “delete 2.txt”//徹底刪除2.txt
創建一個遠程的倉庫
1.先註冊一個免費的倉庫https://github.com/或https://git.oschina.net/
2.權限認證,添加key
github :Setting->SSH and GPG keys->new SSH key->title和key輸入進去
oschina:個人資料->SSH公鑰->添加公鑰->標題和公鑰輸入進入
生成密鑰對:ssh-keygen
Liunx: Cat /root/.ssh/id_rsa
Cat /root/.ssh/id_rsa.pub //公鑰
Windwos:Cat c:/Users/Cmd/.ssh/id_rsa
Cat c:/Users/Cmd/.ssh/id_rsa.pub
添加成功收到郵件
3.創建一個創建鏈接倉庫
3.1 Mkdir /home/gitroot //創建目錄
3.2 Cd /home/gitroot //進入目錄
3.3 Git init //用命令初始化。讓這個目錄編程git可以管理的倉庫
3.4 git remote add origin 倉庫地址
git remote add origin [email protected]:zhiqiangwang/Qiang.git
3.4.1 origin是你的倉庫的別名 可以隨便改,但請務必不要與已有的倉庫別名衝突
3.4.2倉庫地址一般來講支持
3.5 Echo –e “QIANG”>Qiang.txt //新建Qiang.txt
3.6 git add Qiang.txt
3.7 git commit –m “add Qiang.txt”
3.8 git push –u origin master //把本地的Qiang倉庫推送到遠程Qiang
3.9 Echo –e “QIANG QIANG”>>Qiang.txt //在Qiang.txt後面追加QIANG QIANG
3.10 git add Qiang.txt
3.11 git commit –m “update Qiang.txt”
3.12 git push //把本地的Qiang倉庫再次推送到遠程Qiang
克隆一個遠程的倉庫
Git clone [email protected]:zhiqiangwang/Qiang.git
分支管理
Git branch 查看分支
Git branch wang 創建分支
git checkout wang 切換wang分支
分支合併
Git merge wang //把wang分支合併到master
合併常見的問題
1. 如果master分支和wang分支都對Qiang.txt進行編輯,當合並時提示衝突,許先解決衝突纔可以繼續合併
2. 解決衝突的方法就是在master分支下,編輯Qiang.txt,改爲wang分支裏面的Qiang.txt的內容,然後提交Qiang.txt,在進行合併
3. 如果master分支更改的內容是我們想要的,可以編輯Qiang.txt內容,改爲想要的然後提交,切換到wang分支,然後合併 master分支到wang分支即可。Merge後面跟的分支名字一定是最新的分支
4. Git branch –d wang //刪除分支
5. Git branch –D wang /如果分支沒有合併,強制刪除
使用分支的原則
Master分支是非常重要的,線上發佈代碼的時候纔用到這個分支
Dev分支就是專門用於開發的,重要發佈線上之前纔會把dev分支合併到master
開發人員應該才dev的基礎上在分支成個人分支,個人分支裏面開發代碼,然後合併到dev分支
在dev分支合併bob分支命令就是
Git checkout dev //先切換dev分支
Git merge bob
現場保留
在wang 分支編輯wang.txt
去zhi分支修復bug,所以需要先git add wang.txt
然後 git stash保留現場
再切換zhi分支修復,修復完bug之後,在切回wang分支
Git stash list可以查看我們保留過的現場
Git stash apply 恢復現場
Git syash apply stash@{0} 恢復到指定現場
遠程分支
git remote –v //查看遠程庫信息
git ls-remote origin//查看遠程分支
推送本地分支wang到遠程分支 wang並建立關聯關係
a. 遠程已有wang分支並且已經關聯本地分支wang且本地已經切換到wang
git push
b. 遠程已有wang分支但未關聯本地分支wang且本地已經切換到wang
git push -u origin /wang
c. 遠程沒有有wang分支並,本地已經切換到wang
git push origin wang: wang
刪除本地分支
git branch –d|-D wang
刪除遠程分支
git push origin :wang
git branch -m | -M oldbranch newbranch 重命名分支,如果newbranch名字分支已經存在,則需要使用-M強制重命名,否則,使用-m進行重命名。
標籤管理
標籤類是於快照功能,給一個版本庫打一個標籤,記錄某個時刻的狀態,也可以隨時恢復該狀態
1. git checkout master 先切換master上
2. git tag v1.0 給master打上一個標籤v1.0
3. git tag 查看所有的標籤
4. git log –-pretty=oneline –-abbrev-commit//查看歷史commit
5. git tag v0.9 d03da//針對歷史commit打標籤
6. git tag –a –m “tag just v1.1” d03da//可以對標籤進行描述
7. git tag –d v0.8刪除標籤
8. git push origin v1.0//推送到指定標籤遠程
9. git push --tag origin//推送所有標籤
10. git tag –d//刪除本地標籤
11. git push origin : refs/tags/v1.0刪除遠程標籤
搭建git服務器
1. Yum install git
2. 添加git用戶,並設置shell爲/usr/bin/git-shell,目的是爲了不讓git用戶遠程登錄
Useradd –s /usr/bin/git-shell
3. Cd /home/git
4. 創建authorized_keys文件,更改屬主,屬組合權限,用於存客戶端機器上的公鑰
5. Mkdir.ssh
6. ssh-keygen //使用該命令生成密鑰對
7. touch authorized_keys
8. cat /home/git/id_rsa.pub>>/home/git/.ssh/authorized_keys.
9. Chown –R git.ssh或者Chown 600 .ssh/authorized_keys
10. 定義存儲git倉庫的目錄 /data/gitroot
Mkdir /data/gitroot
Cd /data/gitroot
11. Git init –bare sample.git //創建一個裸倉庫,裸倉庫沒有工作區,因爲服務器上的git倉庫純粹爲了貢獻,所以不讓用戶登錄到服務器上改工作區,並且服務器上的git倉庫通過以.git結尾
12. Chown –R git.git sample.git
以上操作是在git服務器上做的,平時git服務器不西藥開發人員登錄去修改代碼,他僅僅是充當一個服務器的角色,就像github一樣,平時都是在我們自己的pc上做的
在客戶端上克隆遠程倉庫
Git clone git@ip:/data/gitroot/sample.git
此時可以進入sample目錄下,這個就是我們克隆遠程倉庫。進入到這裏面進行開發,然後push到遠程