1.centos上安裝git
10年積累的成都做網(wǎng)站、成都網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有寶山免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。yum install -y epel-release
yum install -y git
設(shè)置用戶標(biāo)識,否則初始使用該命令會提示
git config --global user.name "silen"
git config --global user.email "silen@huanglearn.cn"
2. 創(chuàng)建版本庫
mkdir /home/gitroot
cd /home/gitroot
git init //用這個命令初始化,讓這個目錄變成git可以管理的倉庫,配置等文件在.git目錄下
3. 提交文件到倉庫
1)echo -e "123\naaa\n456\nbbb" > 2.txt //創(chuàng)建一個文件 2.txt
2)git add 2.txt //把2.txt添加到倉庫中
3)git commit -m "add new file 2.txt" //add完了必須要commit才算真正把文件提交到git倉庫里,自定義描述
1)echo -e "ccc\nddd">>2.txt //先更改一下2.txt
2)git status //查看當(dāng)前倉庫中的狀態(tài),比如是否有改動的文件
3)git diff 2.txt //可以對比2.txt本次修改了什么內(nèi)容,相比較倉庫里面的版本,a是線上;b是本地
4)git status //修改了2.txt文件之后,查看狀態(tài);提示可以提交或者放棄更改
5)git checkout -- 2.txt //放棄修改或恢復(fù)刪除,再次查看內(nèi)容不發(fā)生改變
6)git add 2.txt //再次commit之前,也可以撤銷
7)git reset HEAD 2.txt //撤銷,回到了上一步
4. 結(jié)合日志版本回退
1)echo -e "eee\nfff">>2.txt //修改多提交第一次
git add 2.txt
git commit -m "change once 2.txt"
2)echo -e "ggg\nhhh">>2.txt //修改多提交第二次
git add 2.txt
git commit -m "change twice 2.txt"
3)git log //可以查看所有提交git倉庫的記錄操作
4)git log --pretty=oneline //一行顯示,更清楚
5)git reset --hard b0b97 //根據(jù)這個log,我們可以指定回退第一個版本,后面跟的字符串可以簡寫。
6)git reflog //當(dāng)回退到某版本后,再git log 則之后的版本不再顯示了,用該命令顯示所有的版本,以供繼續(xù)恢復(fù)
5. 撤銷修改
1)已修改或刪除2.txt,還沒有add,用checkout恢復(fù)到上一次提交時的狀態(tài)
git checkout -- 2.txt
2)已修改或刪除2.txt,已經(jīng)add,但還沒commit,先用reset HEAD,再用checkout恢復(fù)到上一次提交時的狀態(tài)
git reset HEAD 2.txt
git checkout -- 2.txt
3)既已a(bǔ)dd,也已commit,用版本回退方法恢復(fù)到上一次提交時的狀態(tài)
6. 刪除
1)cp 2.txt 3.txt //創(chuàng)建一個新文件,提交
git add 3.txt
git commit -m "add a new file 3.txt"
2)rm -f 2.txt //刪除版本庫中的文件
git status //可以看到,提示2.txt文件被刪除了
3)git checkout -- 3.txt //如果要想恢復(fù),直接用
4)git rm 3.txt //在git倉庫里刪除,此步可以用 reset HEAD 撤銷
git commit -m "delete 3.txt" //徹底刪除3.txt
7. 做一個遠(yuǎn)程倉庫(github)
1)https://github.com 注冊一個賬號,創(chuàng)建自己的git
點repositories --> new(名字自定義,比如叫studygit)->選擇public,點create repository
2)添加key:
右上角點自己頭像,選擇settings,左側(cè)選擇SSH and GPG keys
右上角點New SSH key,把linux機(jī)器上的 /root/.ssh/id_rsa.pub內(nèi)容粘貼到這里(生成公鑰命令 ssh-keygen)
3)把本地參考推送到遠(yuǎn)程倉庫
a. mkdir /home/studygit
cd /home/studygit
git init //初始化
git remote add origin git@github.com:huangzp-silen/studygit.git //本地的study倉庫和遠(yuǎn)程study聯(lián)系在一起
b. echo "test,test,test">test.txt //在本地倉庫目錄中創(chuàng)建一個文件并提交
git add test.txt
git commit -m "create a new file test.txt"
c. git push -u origin master //遠(yuǎn)程推送,第一次連接需要驗證提示;下一次就可以直接 git push
d. github中查看,已推送成功
e. 編輯test.txt,在本地倉庫提交之后,再遠(yuǎn)程推送git push
f. 克隆一個遠(yuǎn)程倉庫
A. cd /home
git clone git@github.com:aminglinux/lanmp.git //克隆一個遠(yuǎn)程倉庫至本地目錄
B. cd lanmp
vi lanmp.sh //編輯克隆下來的文件
rm -rf ./git //刪除配置文件
git init //重新初始化配置文件
C. git add lanmp.sh //提交至本地倉庫
git commit -m "change lanmp.sh"
D. 登錄github,創(chuàng)建一個lanmp項目
git remote add origin git@github.com:huangzp-silen/lanmp.git //同步關(guān)聯(lián)
git push -u origin master //然后再推送到遠(yuǎn)程服務(wù)端
8. 分支管理
說明:master分支基本不動(即不修改文件,只做合并),只有測試完成才合并至master,平時一般使用開發(fā)分支,錯了也沒關(guān)系
1)git branch //查看分支
git branch silen //創(chuàng)建分支
git checkout silen //切換分支,星號標(biāo)識
2)在silen分支下 ,編輯2.txt,并提交到新分支
echo "silen">silen.txt
git add silen.txt
git commit -m "create a new file silen.txt"
git checkout master //切換回master分支,查看文件,并沒發(fā)現(xiàn)silen.txt
3)合并分支,開發(fā)過程中,經(jīng)常需要將多人的分支合并
git checkout master //先換到需要合并的目標(biāo)分支上去,如master
git merge silen //把silen分支合并到了master,只更新源分支(silen)文件的內(nèi)容,目標(biāo)分支(master)就算改動了也不會變,一般不會更改master分支
注:master分支和silen分支都對silen.txt進(jìn)行了編輯,當(dāng)合并時會提示沖突,方法:在master分支下,編輯silen.txt,改為silen分支里面silen.txt的內(nèi)容,然后提交silen.txt,再合并silen分支(或者反過來)。合并分支有一個原則,最新的分支合并到舊的分支
4)刪除分支
git branch -d aming //若分支沒有合并,刪除之前會提示合并
git branch -D aming //強(qiáng)制刪除分支,即刪除前不合并內(nèi)容,會丟失數(shù)據(jù)
5)分支應(yīng)用原則
master分支非常重要,線上發(fā)布代碼用這個分支,平時開發(fā)代碼不要在這個分支上,而是創(chuàng)建一個dev分支,專門用作開發(fā),只有當(dāng)發(fā)布到線上之前,才會把dev分支合并到master。開發(fā)人員應(yīng)該在dev的基礎(chǔ)上再分支成個人分支,個人分支(在自己pc上)里面開發(fā)代碼,然后合并到dev分支
9. git stash 保留現(xiàn)場
當(dāng)我們在silen分支,編輯了一個新的文件4.txt,這時候我們需要到其他分支去修復(fù)一個bug,所以需要保留現(xiàn)場,如果不這么做,每次(可能是其他同事)提交該分支,會有4.txt需提交的提示
1)git add 4.txt //提交一下,但是不commit
2) git stash //保存一下現(xiàn)場,該文件影藏掉
3)切換到另外分支去修復(fù)bug,修復(fù)完bug后,再回到silen分支
git stash list //查看保存過的現(xiàn)場
git stash apply //恢復(fù)現(xiàn)場,文件顯示回來
git stash apply stash@{1} //可以指定恢復(fù)
10. 遠(yuǎn)程分支
1)在web上,可以進(jìn)行分支的創(chuàng)建、切換、刪除、恢復(fù)等操作
2)查看遠(yuǎn)程庫信息,使用git remote -v,查看到origin名字, 本地新建的分支如果不推送到遠(yuǎn)程,對其他人就是不可見的
通過名字origin命令,查看遠(yuǎn)程分支 git ls-remote origin
3)從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠(yuǎn)程的新提交
4)給遠(yuǎn)程master分支推送文件
web端同步文件
5) 在本地創(chuàng)建和遠(yuǎn)程分支對應(yīng)的分支,使用git checkout -b branch-name origin/branch-name,本地和遠(yuǎn)程分支的名稱最好一致
cat .git/config //查看配置文件,得出遠(yuǎn)程URL,以供克隆使用
rm -rf studygit/
git clone git@github.com:huangzp-silen/studygit.git
web上創(chuàng)建dev2分支,本地同步
git checkout -b dev2 origin/dev2
6) 從遠(yuǎn)程抓取分支,使用git pull
11. 標(biāo)簽管理
標(biāo)簽類似于快照功能,我們可以給版本庫打一個標(biāo)簽,記錄某個時刻庫的狀態(tài)。我們可以隨時恢復(fù)到該狀態(tài)
1)git checkout master //先切到master分支上
git tag v1.0 // 給master打一個標(biāo)簽v1.0
git tag //查看所有的標(biāo)簽
git show v1.0 //顯示詳細(xì)信息
2)tag是針對commit來打標(biāo)簽的,所以可以針對歷史的commit來打tag
git log --pretty=oneline --abbrev-commit
git tag v0.9 46d3c1a
git tag -a v0.8 -m "tag just v1.1 and so on" 5aacaf4 //可以對標(biāo)簽進(jìn)行描述
3)git tag -d v0.8 //刪除標(biāo)簽
4)git push origin v1.0 //推送指定標(biāo)簽到遠(yuǎn)程
git push --tag origin //推送所有標(biāo)簽
5)如果本地刪除了一個標(biāo)簽,遠(yuǎn)程也想要刪除需要這樣操作:
git tag v1.0 -d
git push origin :refs/tags/v1.0
12. 巧用別名
1) git commit 這個命令是不是有點長? 用別名可以提高我們的工作效率,可以在配置文件中修改/root/.gitconfig
git config --global alias.ci commit
git config --global alias.co checkout
git config --global alias.br branch
2) 查看git別名使用命令
git config --list |grep alias
3) 查詢log小技巧:
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
4) 取消別名
git config --global --unset alias.br
13. 搭建git服務(wù)器
github畢竟是公開的,而私有倉庫又得花錢買。所以我們可以想辦法搭建一個私有的,只自己公司使用的
1)yum install -y epel-reales
yum install -y git //安裝git
useradd -s /usr/bin/git-shell git //添加git用戶,并且設(shè)置shell為/usr/bin/git-shell,目的是為了不讓git用戶遠(yuǎn)程登陸,如果要登錄,則usermod -s /bin/bash git
2) cd /home/git
mkdir .ssh
touch .ssh/authorized_keys //存放客戶機(jī)的公鑰
chown -R git.git .ssh
chmod 700 .ssh/authorized_keys
3)定好存儲git倉庫的目錄,比如 /data/gitroot
mkdir /data/gitroot
cd /data/gitroot
git init --bare sample.git // 會創(chuàng)建一個裸倉庫,裸倉庫沒有工作區(qū),因為服務(wù)器上的Git倉庫純粹是為了共享,所以不讓用戶直接登錄到服務(wù)器上去改工作區(qū),并且服務(wù)器上的Git倉庫通常都以.git結(jié)尾
chown -R git.git sample.git
客戶端上(自己pc)克隆遠(yuǎn)程倉庫
以上操作是在git服務(wù)器上做的,平時git服務(wù)器是不需要開發(fā)人員登錄修改代碼的,它僅僅是充當(dāng)著一個服務(wù)器的角色,就像github一樣,平時操作都是在我們自己的pc上做的。
1)把客戶端上的公鑰放到git服務(wù)器上/home/git/.ssh/authorized_keys文件里
2)git clone git@ip:/data/gitroot/sample.git
此時就可以在當(dāng)前目錄下生成一個sample的目錄,這個就是我們克隆的遠(yuǎn)程倉庫了。進(jìn)入到這里面,可以開發(fā)一些代碼,然后push到遠(yuǎn)程;還需結(jié)合git lab圖形化一起使用
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。