溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

分布式代碼管理系統(tǒng)Git

發(fā)布時(shí)間:2020-05-25 17:11:23 來(lái)源:網(wǎng)絡(luò) 閱讀:632 作者:huangzp168 欄目:建站服務(wù)器

1. centos上安裝git

yum install -y epel-release

yum install -y git

設(shè)置用戶標(biāo)識(shí),否則初始使用該命令會(huì)提示

git config --global user.name "silen"

git config --global user.email "silen@huanglearn.cn"

分布式代碼管理系統(tǒng)Git


2. 創(chuàng)建版本庫(kù)

mkdir  /home/gitroot

cd /home/gitroot

git init   //用這個(gè)命令初始化,讓這個(gè)目錄變成git可以管理的倉(cāng)庫(kù),配置等文件在.git目錄下

分布式代碼管理系統(tǒng)Git


3. 提交文件到倉(cāng)庫(kù)

1)echo -e "123\naaa\n456\nbbb" > 2.txt  //創(chuàng)建一個(gè)文件 2.txt


2)git add 2.txt  //把2.txt添加到倉(cāng)庫(kù)中


3)git commit -m "add new file 2.txt"   //add完了必須要commit才算真正把文件提交到git倉(cāng)庫(kù)里,自定義描述

分布式代碼管理系統(tǒng)Git


1)echo -e "ccc\nddd">>2.txt  //先更改一下2.txt


2)git status   //查看當(dāng)前倉(cāng)庫(kù)中的狀態(tài),比如是否有改動(dòng)的文件

分布式代碼管理系統(tǒng)Git


3)git diff 2.txt  //可以對(duì)比2.txt本次修改了什么內(nèi)容,相比較倉(cāng)庫(kù)里面的版本,a是線上;b是本地

分布式代碼管理系統(tǒng)Git

 

4)git status  //修改了2.txt文件之后,查看狀態(tài);提示可以提交或者放棄更改

分布式代碼管理系統(tǒng)Git


5)git checkout -- 2.txt   //放棄修改或恢復(fù)刪除,再次查看內(nèi)容不發(fā)生改變

分布式代碼管理系統(tǒng)Git


6)git add 2.txt   //再次commit之前,也可以撤銷

分布式代碼管理系統(tǒng)Git

 

7)git reset HEAD 2.txt  //撤銷,回到了上一步

分布式代碼管理系統(tǒng)Git


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倉(cāng)庫(kù)的記錄操作

分布式代碼管理系統(tǒng)Git


4)git log --pretty=oneline   //一行顯示,更清楚

分布式代碼管理系統(tǒng)Git


5)git reset --hard b0b97     //根據(jù)這個(gè)log,我們可以指定回退第一個(gè)版本,后面跟的字符串可以簡(jiǎn)寫。

分布式代碼管理系統(tǒng)Git


6)git reflog  //當(dāng)回退到某版本后,再git log 則之后的版本不再顯示了,用該命令顯示所有的版本,以供繼續(xù)恢復(fù)

分布式代碼管理系統(tǒng)Git


5. 撤銷修改

1)已修改或刪除2.txt,還沒有add,用checkout恢復(fù)到上一次提交時(shí)的狀態(tài)

git checkout -- 2.txt 


2)已修改或刪除2.txt,已經(jīng)add,但還沒commit,先用reset HEAD,再用checkout恢復(fù)到上一次提交時(shí)的狀態(tài)

git  reset HEAD 2.txt

git checkout -- 2.txt


3)既已a(bǔ)dd,也已commit,用版本回退方法恢復(fù)到上一次提交時(shí)的狀態(tài)



6. 刪除

1)cp 2.txt 3.txt   //創(chuàng)建一個(gè)新文件,提交

git add 3.txt

git commit -m "add a new file 3.txt" 


2)rm -f 2.txt  //刪除版本庫(kù)中的文件

git status //可以看到,提示2.txt文件被刪除了

分布式代碼管理系統(tǒng)Git


3)git  checkout -- 3.txt  //如果要想恢復(fù),直接用  


4)git rm 3.txt    //在git倉(cāng)庫(kù)里刪除,此步可以用 reset HEAD 撤銷

git commit -m "delete 3.txt"    //徹底刪除3.txt

分布式代碼管理系統(tǒng)Git



7. 做一個(gè)遠(yuǎn)程倉(cāng)庫(kù)(github)

1)https://github.com 注冊(cè)一個(gè)賬號(hào),創(chuàng)建自己的git

點(diǎn)repositories  --> new(名字自定義,比如叫studygit)->選擇public,點(diǎn)create repository


2)添加key:

右上角點(diǎn)自己頭像,選擇settings,左側(cè)選擇SSH and GPG keys

右上角點(diǎn)New SSH key,把linux機(jī)器上的 /root/.ssh/id_rsa.pub內(nèi)容粘貼到這里(生成公鑰命令 ssh-keygen)


3)把本地參考推送到遠(yuǎn)程倉(cāng)庫(kù)


a. mkdir /home/studygit

cd /home/studygit

git init    //初始化

git remote add origin git@github.com:huangzp-silen/studygit.git  //本地的study倉(cāng)庫(kù)和遠(yuǎn)程study聯(lián)系在一起


b. echo "test,test,test">test.txt    //在本地倉(cāng)庫(kù)目錄中創(chuàng)建一個(gè)文件并提交

git add test.txt

git commit -m "create a new file test.txt"

分布式代碼管理系統(tǒng)Git


c. git push -u origin master  //遠(yuǎn)程推送,第一次連接需要驗(yàn)證提示;下一次就可以直接 git push 

分布式代碼管理系統(tǒng)Git


d. github中查看,已推送成功

分布式代碼管理系統(tǒng)Git


e. 編輯test.txt,在本地倉(cāng)庫(kù)提交之后,再遠(yuǎn)程推送git push

分布式代碼管理系統(tǒng)Git


f. 克隆一個(gè)遠(yuǎn)程倉(cāng)庫(kù)

A. cd /home

git clone  git@github.com:aminglinux/lanmp.git   //克隆一個(gè)遠(yuǎn)程倉(cāng)庫(kù)至本地目錄

 

B. cd  lanmp

vi lanmp.sh  //編輯克隆下來(lái)的文件

rm -rf ./git    //刪除配置文件

git init          //重新初始化配置文件


C. git add lanmp.sh   //提交至本地倉(cāng)庫(kù)

git commit -m "change lanmp.sh" 


D. 登錄github,創(chuàng)建一個(gè)lanmp項(xiàng)目

git remote add origin git@github.com:huangzp-silen/lanmp.git  //同步關(guān)聯(lián)

git push -u origin master   //然后再推送到遠(yuǎn)程服務(wù)端



8. 分支管理

說(shuō)明:master分支基本不動(dòng)(即不修改文件,只做合并),只有測(cè)試完成才合并至master,平時(shí)一般使用開發(fā)分支,錯(cuò)了也沒關(guān)系

1)git branch  //查看分支

git branch silen  //創(chuàng)建分支

git checkout silen   //切換分支,星號(hào)標(biāo)識(shí)

分布式代碼管理系統(tǒng)Git


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

分布式代碼管理系統(tǒng)Git


3)合并分支,開發(fā)過(guò)程中,經(jīng)常需要將多人的分支合并

git checkout master   //先換到需要合并的目標(biāo)分支上去,如master

git merge silen          //把silen分支合并到了master,只更新源分支(silen)文件的內(nèi)容,目標(biāo)分支(master)就算改動(dòng)了也不會(huì)變,一般不會(huì)更改master分支

分布式代碼管理系統(tǒng)Git


注:master分支和silen分支都對(duì)silen.txt進(jìn)行了編輯,當(dāng)合并時(shí)會(huì)提示沖突,方法:在master分支下,編輯silen.txt,改為silen分支里面silen.txt的內(nèi)容,然后提交silen.txt,再合并silen分支(或者反過(guò)來(lái))。合并分支有一個(gè)原則,最新的分支合并到舊的分支


4)刪除分支

git  branch -d aming   //若分支沒有合并,刪除之前會(huì)提示合并

git branch -D aming   //強(qiáng)制刪除分支,即刪除前不合并內(nèi)容,會(huì)丟失數(shù)據(jù)

分布式代碼管理系統(tǒng)Git


5)分支應(yīng)用原則

master分支非常重要,線上發(fā)布代碼用這個(gè)分支,平時(shí)開發(fā)代碼不要在這個(gè)分支上,而是創(chuàng)建一個(gè)dev分支,專門用作開發(fā),只有當(dāng)發(fā)布到線上之前,才會(huì)把dev分支合并到master。開發(fā)人員應(yīng)該在dev的基礎(chǔ)上再分支成個(gè)人分支,個(gè)人分支(在自己pc上)里面開發(fā)代碼,然后合并到dev分支

分布式代碼管理系統(tǒng)Git


9. git stash 保留現(xiàn)場(chǎng)

當(dāng)我們?cè)趕ilen分支,編輯了一個(gè)新的文件4.txt,這時(shí)候我們需要到其他分支去修復(fù)一個(gè)bug,所以需要保留現(xiàn)場(chǎng),如果不這么做,每次(可能是其他同事)提交該分支,會(huì)有4.txt需提交的提示

1)git add 4.txt  //提交一下,但是不commit


2)  git  stash       //保存一下現(xiàn)場(chǎng),該文件影藏掉

分布式代碼管理系統(tǒng)Git


3)切換到另外分支去修復(fù)bug,修復(fù)完bug后,再回到silen分支

    git stash list       //查看保存過(guò)的現(xiàn)場(chǎng)

    git stash apply   //恢復(fù)現(xiàn)場(chǎng),文件顯示回來(lái)

    git stash apply stash@{1}   //可以指定恢復(fù)

分布式代碼管理系統(tǒng)Git


10. 遠(yuǎn)程分支

1)在web上,可以進(jìn)行分支的創(chuàng)建、切換、刪除、恢復(fù)等操作

分布式代碼管理系統(tǒng)Git分布式代碼管理系統(tǒng)Git

 

2)查看遠(yuǎn)程庫(kù)信息,使用git remote -v,查看到origin名字, 本地新建的分支如果不推送到遠(yuǎn)程,對(duì)其他人就是不可見的

分布式代碼管理系統(tǒng)Git


通過(guò)名字origin命令,查看遠(yuǎn)程分支  git ls-remote origin

分布式代碼管理系統(tǒng)Git


3)從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠(yuǎn)程的新提交

 

分布式代碼管理系統(tǒng)Git

分布式代碼管理系統(tǒng)Git

 

4)給遠(yuǎn)程master分支推送文件

分布式代碼管理系統(tǒng)Git


web端同步文件

分布式代碼管理系統(tǒng)Git


5) 在本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支,使用git checkout -b branch-name origin/branch-name,本地和遠(yuǎn)程分支的名稱最好一致

cat .git/config   //查看配置文件,得出遠(yuǎn)程URL,以供克隆使用

分布式代碼管理系統(tǒng)Git


rm -rf studygit/

git clone git@github.com:huangzp-silen/studygit.git

分布式代碼管理系統(tǒng)Git


web上創(chuàng)建dev2分支,本地同步

git checkout -b dev2 origin/dev2

分布式代碼管理系統(tǒng)Git


6) 從遠(yuǎn)程抓取分支,使用git pull



11. 標(biāo)簽管理

標(biāo)簽類似于快照功能,我們可以給版本庫(kù)打一個(gè)標(biāo)簽,記錄某個(gè)時(shí)刻庫(kù)的狀態(tài)。我們可以隨時(shí)恢復(fù)到該狀態(tài)

1)git checkout master   //先切到master分支上

git tag v1.0   // 給master打一個(gè)標(biāo)簽v1.0

git tag     //查看所有的標(biāo)簽

git show v1.0   //顯示詳細(xì)信息

 

分布式代碼管理系統(tǒng)Git

分布式代碼管理系統(tǒng)Git

 

2)tag是針對(duì)commit來(lái)打標(biāo)簽的,所以可以針對(duì)歷史的commit來(lái)打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  //可以對(duì)標(biāo)簽進(jìn)行描述

分布式代碼管理系統(tǒng)Git


3)git tag -d v0.8   //刪除標(biāo)簽

分布式代碼管理系統(tǒng)Git


4)git push origin v1.0   //推送指定標(biāo)簽到遠(yuǎn)程

git push --tag origin   //推送所有標(biāo)簽

 

分布式代碼管理系統(tǒng)Git

分布式代碼管理系統(tǒng)Git

 

5)如果本地刪除了一個(gè)標(biāo)簽,遠(yuǎn)程也想要?jiǎng)h除需要這樣操作:

git tag v1.0 -d

git push origin :refs/tags/v1.0

分布式代碼管理系統(tǒng)Git


12. 巧用別名

1) git commit 這個(gè)命令是不是有點(diǎn)長(zhǎng)? 用別名可以提高我們的工作效率,可以在配置文件中修改/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"

分布式代碼管理系統(tǒng)Git


4) 取消別名

git config --global --unset alias.br



13. 搭建git服務(wù)器

github畢竟是公開的,而私有倉(cāng)庫(kù)又得花錢買。所以我們可以想辦法搭建一個(gè)私有的,只自己公司使用的

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)定好存儲(chǔ)git倉(cāng)庫(kù)的目錄,比如 /data/gitroot

mkdir /data/gitroot

cd /data/gitroot

git init --bare sample.git // 會(huì)創(chuàng)建一個(gè)裸倉(cāng)庫(kù),裸倉(cāng)庫(kù)沒有工作區(qū),因?yàn)榉?wù)器上的Git倉(cāng)庫(kù)純粹是為了共享,所以不讓用戶直接登錄到服務(wù)器上去改工作區(qū),并且服務(wù)器上的Git倉(cāng)庫(kù)通常都以.git結(jié)尾

chown -R git.git sample.git



客戶端上(自己pc)克隆遠(yuǎn)程倉(cāng)庫(kù)

以上操作是在git服務(wù)器上做的,平時(shí)git服務(wù)器是不需要開發(fā)人員登錄修改代碼的,它僅僅是充當(dāng)著一個(gè)服務(wù)器的角色,就像github一樣,平時(shí)操作都是在我們自己的pc上做的。

1)把客戶端上的公鑰放到git服務(wù)器上/home/git/.ssh/authorized_keys文件里


2)git clone git@ip:/data/gitroot/sample.git

 

分布式代碼管理系統(tǒng)Git

分布式代碼管理系統(tǒng)Git

 

此時(shí)就可以在當(dāng)前目錄下生成一個(gè)sample的目錄,這個(gè)就是我們克隆的遠(yuǎn)程倉(cāng)庫(kù)了。進(jìn)入到這里面,可以開發(fā)一些代碼,然后push到遠(yuǎn)程;還需結(jié)合git lab圖形化一起使用


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

git
AI