abstract:安裝git程序ContOS Yum install –y epel-release Yum install –y gitUbuntu &n
安裝git程序
ContOS
Yum install –y epel-release
Yum install –y git
Ubuntu
Sudo apt-get install git
Windows上安裝
https://git-scm.com/download/win
安裝完成以后還需要最后一步設(shè)置
git config --global user.name "Qiang"//比如Qiang
git config --global user.email "zhiqiangwang@aliyun.com"//寫入到你的郵箱
創(chuàng)建版本倉庫并推送文件
Mkdir /home/gitroot //創(chuàng)建目錄
Cd /home/gitroot //進(jìn)入目錄
Git init //用命令初始化。讓這個(gè)目錄編程git可以管理的倉庫
Ls –a //可以看到.git目錄
Echo –e “QIANG”>1.txt //創(chuàng)建一個(gè)文件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 //查看當(dāng)前倉庫中的狀態(tài),比如是否有改動(dòng)文件
Git checkout --1.txt//將倉庫中的1.txt覆蓋本地的1.txt
Git diff 1.txt /可以對(duì)比1.txt本次修改了什么內(nèi)容,相比倉庫里面的版本
刪除文件
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"
上傳當(dāng)前目錄下所有文件
1. git add .
2. git commit -m "updata all"
3. git push
版本的變更
多次更改1.txt 并進(jìn)行g(shù)it add,git commit操作
Git log //可以查看所有提交git倉庫的倉庫記錄操作
Git log –pretty=oneline 一行一行顯示
通過git log可以查看到過去提交的所有版本,所以根據(jù)這個(gè)log可以指定回退某個(gè)版本
Git reset –hard d03da70182c1e78d04df1d7eee2f6a972ae4f82b //可以回退該版本,這里是長字符串,可以簡寫(前5個(gè)字符)
Git reflog //可以顯示所有的版本
文件恢復(fù)
當(dāng)修改1.txt 發(fā)現(xiàn)修改的不對(duì),想修改上一次提交的狀態(tài)
Git checkout –1.txt//恢復(fù)到上一次提交的狀態(tài)
如果1.txt修改完成,保存后,git add 1.txt了 但是沒有g(shù)it commit,再想回退到上一次提交是的狀態(tài),可以使用
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
創(chuàng)建一個(gè)遠(yuǎn)程的倉庫
1.先注冊(cè)一個(gè)免費(fèi)的倉庫https://github.com/或https://git.oschina.net/
2.權(quán)限認(rèn)證,添加key
github :Setting->SSH and GPG keys->new SSH key->title和key輸入進(jìn)去
oschina:個(gè)人資料->SSH公鑰->添加公鑰->標(biāo)題和公鑰輸入進(jìn)入
生成密鑰對(duì):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.創(chuàng)建一個(gè)創(chuàng)建鏈接倉庫
3.1 Mkdir /home/gitroot //創(chuàng)建目錄
3.2 Cd /home/gitroot //進(jìn)入目錄
3.3 Git init //用命令初始化。讓這個(gè)目錄編程git可以管理的倉庫
3.4 git remote add origin 倉庫地址
git remote add origin git@git.oschina.net:zhiqiangwang/Qiang.git
3.4.1 origin是你的倉庫的別名 可以隨便改,但請(qǐng)務(wù)必不要與已有的倉庫別名沖突
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倉庫推送到遠(yuǎn)程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倉庫再次推送到遠(yuǎn)程Qiang
克隆一個(gè)遠(yuǎn)程的倉庫
Git clone git@git.oschina.net:zhiqiangwang/Qiang.git
分支管理
Git branch 查看分支
Git branch wang 創(chuàng)建分支
git checkout wang 切換wang分支
分支合并
Git merge wang //把wang分支合并到master
合并常見的問題
1. 如果master分支和wang分支都對(duì)Qiang.txt進(jìn)行編輯,當(dāng)合并時(shí)提示沖突,許先解決沖突才可以繼續(xù)合并
2. 解決沖突的方法就是在master分支下,編輯Qiang.txt,改為wang分支里面的Qiang.txt的內(nèi)容,然后提交Qiang.txt,在進(jìn)行合并
3. 如果master分支更改的內(nèi)容是我們想要的,可以編輯Qiang.txt內(nèi)容,改為想要的然后提交,切換到wang分支,然后合并 master分支到wang分支即可。Merge后面跟的分支名字一定是最新的分支
4. Git branch –d wang //刪除分支
5. Git branch –D wang /如果分支沒有合并,強(qiáng)制刪除
使用分支的原則
Master分支是非常重要的,線上發(fā)布代碼的時(shí)候才用到這個(gè)分支
Dev分支就是專門用于開發(fā)的,重要發(fā)布線上之前才會(huì)把dev分支合并到master
開發(fā)人員應(yīng)該才dev的基礎(chǔ)上在分支成個(gè)人分支,個(gè)人分支里面開發(fā)代碼,然后合并到dev分支
在dev分支合并bob分支命令就是
Git checkout dev //先切換dev分支
Git merge bob
現(xiàn)場(chǎng)保留
在wang 分支編輯wang.txt
去zhi分支修復(fù)bug,所以需要先git add wang.txt
然后 git stash保留現(xiàn)場(chǎng)
再切換zhi分支修復(fù),修復(fù)完bug之后,在切回wang分支
Git stash list可以查看我們保留過的現(xiàn)場(chǎng)
Git stash apply 恢復(fù)現(xiàn)場(chǎng)
Git syash apply stash@{0} 恢復(fù)到指定現(xiàn)場(chǎng)
遠(yuǎn)程分支
git remote –v //查看遠(yuǎn)程庫信息
git ls-remote origin//查看遠(yuǎn)程分支
推送本地分支wang到遠(yuǎn)程分支 wang并建立關(guān)聯(lián)關(guān)系
a. 遠(yuǎn)程已有wang分支并且已經(jīng)關(guān)聯(lián)本地分支wang且本地已經(jīng)切換到wang
git push
b. 遠(yuǎn)程已有wang分支但未關(guān)聯(lián)本地分支wang且本地已經(jīng)切換到wang
git push -u origin /wang
c. 遠(yuǎn)程沒有有wang分支并,本地已經(jīng)切換到wang
git push origin wang: wang
刪除本地分支
git branch –d|-D wang
刪除遠(yuǎn)程分支
git push origin :wang
git branch -m | -M oldbranch newbranch 重命名分支,如果newbranch名字分支已經(jīng)存在,則需要使用-M強(qiáng)制重命名,否則,使用-m進(jìn)行重命名。
標(biāo)簽管理
標(biāo)簽類是于快照功能,給一個(gè)版本庫打一個(gè)標(biāo)簽,記錄某個(gè)時(shí)刻的狀態(tài),也可以隨時(shí)恢復(fù)該狀態(tài)
1. git checkout master 先切換master上
2. git tag v1.0 給master打上一個(gè)標(biāo)簽v1.0
3. git tag 查看所有的標(biāo)簽
4. git log –-pretty=oneline –-abbrev-commit//查看歷史commit
5. git tag v0.9 d03da//針對(duì)歷史commit打標(biāo)簽
6. git tag –a –m “tag just v1.1” d03da//可以對(duì)標(biāo)簽進(jìn)行描述
7. git tag –d v0.8刪除標(biāo)簽
8. git push origin v1.0//推送到指定標(biāo)簽遠(yuǎn)程
9. git push --tag origin//推送所有標(biāo)簽
10. git tag –d//刪除本地標(biāo)簽
11. git push origin : refs/tags/v1.0刪除遠(yuǎn)程標(biāo)簽
搭建git服務(wù)器
1. Yum install git
2. 添加git用戶,并設(shè)置shell為/usr/bin/git-shell,目的是為了不讓git用戶遠(yuǎn)程登錄
Useradd –s /usr/bin/git-shell
3. Cd /home/git
4. 創(chuàng)建authorized_keys文件,更改屬主,屬組合權(quán)限,用于存客戶端機(jī)器上的公鑰
5. Mkdir.ssh
6. ssh-keygen //使用該命令生成密鑰對(duì)
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. 定義存儲(chǔ)git倉庫的目錄 /data/gitroot
Mkdir /data/gitroot
Cd /data/gitroot
11. Git init –bare sample.git //創(chuàng)建一個(gè)裸倉庫,裸倉庫沒有工作區(qū),因?yàn)榉?wù)器上的git倉庫純粹為了貢獻(xiàn),所以不讓用戶登錄到服務(wù)器上改工作區(qū),并且服務(wù)器上的git倉庫通過以.git結(jié)尾
12. Chown –R git.git sample.git
以上操作是在git服務(wù)器上做的,平時(shí)git服務(wù)器不西藥開發(fā)人員登錄去修改代碼,他僅僅是充當(dāng)一個(gè)服務(wù)器的角色,就像github一樣,平時(shí)都是在我們自己的pc上做的
在客戶端上克隆遠(yuǎn)程倉庫
Git clone git@ip:/data/gitroot/sample.git
此時(shí)可以進(jìn)入sample目錄下,這個(gè)就是我們克隆遠(yuǎn)程倉庫。進(jìn)入到這里面進(jìn)行開發(fā),然后push到遠(yuǎn)程