1.安裝:yum install -y git
創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括嘉善網(wǎng)站建設(shè)、嘉善網(wǎng)站制作、嘉善網(wǎng)頁(yè)制作以及嘉善網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,嘉善網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到嘉善省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
創(chuàng)建目錄:mkdir /data/gitroot
進(jìn)入:cd /data/gitroot
初始化:git init //初始化倉(cāng)庫(kù)
寫一個(gè)測(cè)試文件:echo -e? “123\naaa\n456\nbbb” > 1.txt //創(chuàng)建一個(gè)新文件
添加:git add 1.txt//把1.txt添加到倉(cāng)庫(kù)
提交:git commit -m "add new file 1.txt"? ?//add完了必須要commit才算真正把文件提交到git倉(cāng)庫(kù)里
再次更改1.txt
查看狀態(tài)git status? //查看當(dāng)前倉(cāng)庫(kù)中的狀態(tài),比如是否有改動(dòng)的文件
git diff 1.txt? //可以對(duì)比1.txt本次修改了什么內(nèi)容,相比較倉(cāng)庫(kù)里面的版本
版本回退
多更改幾次1.txt,然后add,commit
git log//查看所有提交記錄
git log --pretty=oneline//一行顯示
git reset --hard fe063f19ab//回退版本,其中后面跟的字符串是簡(jiǎn)寫
撤銷修改
rm -f 1.txt//不小心刪除了1.txt
git checkout -- 1.txt//恢復(fù)1.txt
如果1.txt文件修改,add后但沒有commit,再想回退到上一次提交的狀態(tài),
可以使用git reset HEAD 1.txt,再執(zhí)行g(shù)it checkout -- 1.txt
git reflog //查看所有歷史版本
刪除文件?
echo -e "11111111111\n2222222222" > 2.txt?
git rm 2.txt?
git commit -m "rm 2.txt"?
建立遠(yuǎn)程倉(cāng)庫(kù)
首先到 https://github.com 注冊(cè)一個(gè)賬號(hào),創(chuàng)建自己的git,點(diǎn)右上角repositories(新建倉(cāng)庫(kù))再點(diǎn)new
名字自定義,比如叫studygit選擇public? 點(diǎn) create repository
添加key:右上角點(diǎn)自己頭像,選擇settings,左側(cè)選擇SSH and GPG keys
linux生成秘鑰:ssh-keygen
左側(cè)點(diǎn)New SSH key,把linux機(jī)器上的~/.ssh/id_rsa.pub(公鑰)內(nèi)容粘貼到這里
在服務(wù)器/tmp/目錄下創(chuàng)建一個(gè)apelearn目錄:mkdir /tmp/apelearn?進(jìn)入到目錄下?執(zhí)行官網(wǎng)給的提示命令一步步執(zhí)行
把本地倉(cāng)庫(kù)推送到遠(yuǎn)程倉(cāng)庫(kù) git remote add origin git@github.com:aminglinux/studygit.git? //這一步是在遠(yuǎn)程創(chuàng)建一個(gè)新的倉(cāng)庫(kù)studygit,名字盡量和本地的一致
git push -u origin master? //然后把本地的studygit倉(cāng)庫(kù)推送到遠(yuǎn)程的studygit
報(bào)錯(cuò):
解決辦法:yum update -y nss curl libcurl
成功
下一次再推送,就可以直接 git push
這時(shí)候你可以在服務(wù)器上創(chuàng)建一個(gè)文件
vim 1.txt ##寫點(diǎn)內(nèi)容進(jìn)去
git add 1.txt
git commit -m "1.txt"
git push ##上傳到遠(yuǎn)程庫(kù)
再刷新頁(yè)面就有了
克隆遠(yuǎn)程倉(cāng)庫(kù)
隨便進(jìn)到一個(gè)目錄下:cd /home
找到github網(wǎng)站你想克隆的代碼
復(fù)制鏈接
拷貝到服務(wù)器上:
git clone?https://github.com/aminglinux/lanmp.git
它提示,會(huì)在當(dāng)前目錄下初始化一個(gè)倉(cāng)庫(kù),并創(chuàng)建一個(gè).git的目錄,如下
Initialized empty Git repository in /home/lanmp/.
git/完成后,ls可以看到一個(gè)lanmp的目錄
cd? lanmp
vi lanmp.sh 編輯一下文件,然后提交
git add lanmp.sh
git commit -m "sdlfasdf"?
然后再推送到遠(yuǎn)程服務(wù)端
git push
如果有變動(dòng),用git?pull把更新完的拉下來
分支
git branch //查看分支 *號(hào)表示當(dāng)前所在的分支
git branch awei ?//創(chuàng)建分支
git checkout? awei //切換到了aming分支下
再用git branch查看,會(huì)看到有兩個(gè)分支master和aming,當(dāng)前使用的分支前面會(huì)有一個(gè)*在aming分支下 ,編輯2.txt,并提交到新分支
echo "askdfjlksadjflk" >? 2.txt
git add 2.txt
git commit -m "laksjdflksjdklfj"?
切換回master分支
git checkout master //此時(shí)cat 2.txt發(fā)現(xiàn)并沒有更改內(nèi)容,這說明分支與分支之間是相互隔開的
分支的合并
git checkout master //合并分支之前,先切換到目標(biāo)分支?
git merge aming? ?//把a(bǔ)ming分支合并到了master
如果master分支和aming分支都對(duì)2.txt進(jìn)行了編輯,當(dāng)合并時(shí)會(huì)提示沖突,需要先解決沖突才可以繼續(xù)合并。
解決沖突的方法是在master分支下,編輯2.txt,改為aming分支里面2.txt的內(nèi)容。 然后提交2.txt,再合并aming分支。
但是這樣有一個(gè)問題,萬(wàn)一master分支更改的內(nèi)容是我們想要的呢? 可以編輯2.txt內(nèi)容,改為想要的,然后提交。切換到aming分支,然后合并master分支到aming分支即可(倒著合并)。合并分支有一個(gè)原則,那就是要把最新的分支合并到舊的分支。也就是說merge后面跟的分支名字一定是最新的分支。
git? branch -d aming //刪除分支
如果分支沒有合并,刪除之前會(huì)提示,那就不合并,強(qiáng)制刪除
git branch -D aming ##強(qiáng)制刪除
使用分支的原則
對(duì)于分支的應(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分支
dev分支合并bob分支的命令是:
git checkout dev? ?//先切換到dev分支,然后
git merge bob
遠(yuǎn)程分支
本地新建的分支如果不推送到遠(yuǎn)程,對(duì)其他人就是不可見的
查看遠(yuǎn)程分支:git ls-remote origin,可以看到所有分支
對(duì)于git push分支分兩種情況
當(dāng)本地分支和遠(yuǎn)程分支一致時(shí)
git push會(huì)把所有本地分支的變更一同推送到遠(yuǎn)程,如果想只推送一個(gè)分支,使用:git push originbranch-name
當(dāng)本地分支比遠(yuǎn)程分支多,默認(rèn)git push 只推送本地和遠(yuǎn)程一致的分支,想要把多出來的本地分支推送到遠(yuǎn)程時(shí),使用git push origin branch-name? 如果推送失敗,先用git pull抓取遠(yuǎn)程的新提交
git clone的時(shí)候默認(rèn)只把master分支克隆下來,如果想把所有分支都克隆下來,需要手動(dòng)創(chuàng)建,在本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支,
使用git checkout -bbranch-name origin/branch-name,本地和遠(yuǎn)程分支的名稱要一致 ##branch-name是你遠(yuǎn)程分支的名字,遠(yuǎn)程分支叫什么就寫什么
例如:dev分支
標(biāo)簽管理
標(biāo)簽類似于快照功能,可以給版本庫(kù)打一個(gè)標(biāo)簽,記錄某個(gè)時(shí)刻庫(kù)的狀態(tài)。也可以隨時(shí)恢復(fù)到該狀態(tài)。
git checkout master 先切到master分支上
git tag v1.0? 給master打一個(gè)標(biāo)簽v1.0
git show v1.0 查看標(biāo)簽信息
git tag 可以查看所有的標(biāo)簽
tag是針對(duì)commit來打標(biāo)簽的,所以可以針對(duì)歷史的commit來打tag
git log --pretty=oneline --abbrev-commit? //先查看歷史的commit
git tag v0.9 46d3c1a? //針對(duì)歷史commit打標(biāo)簽
git tag -a v0.8 -m "tag just v1.1 and so on" 5aacaf4? //可以對(duì)標(biāo)簽進(jìn)行描述
git tag -d v0.8? //刪除標(biāo)簽
遠(yuǎn)程標(biāo)簽查看
git push origin v1.0? ?//推送指定標(biāo)簽到遠(yuǎn)程
推送完再看
git push --tag origin? ?//推送所有標(biāo)簽
如果本地刪除了一個(gè)標(biāo)簽,遠(yuǎn)程也想要?jiǎng)h除需要這樣操作:
git tag v1.0 -d? ? //刪除本地標(biāo)簽
git push origin :refs/tags/v1.0? ?//刪除遠(yuǎn)程標(biāo)簽
git別名
git commit 這個(gè)命令是不是有點(diǎn)長(zhǎng)? 用別名可以提高我們的工作效率
別名格式:git config --global alias.別名?初始名
比如吧commit別名稱ci:
git config --global alias.ci commit
如圖
git config --global alias.co? checkout
git config --global alias.br? branch
查看git別名使用命令
git config --list |grep alias
另一種方式是直接加到配置文件里:/root/.gitconfig
查詢log小技巧:直接在命令行執(zhí)行
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"
執(zhí)行完就可以執(zhí)行g(shù)it?lg了
取消別名
git config --global --unset alias.br?
搭建git服務(wù)器
github畢竟是公開的,而私有倉(cāng)庫(kù)又得花錢買。所以我們可以想辦法搭建一個(gè)私有的,只自己公司使用的。Gitlab是個(gè)不錯(cuò)的選擇。在介紹它之前,先講述一下命令行的git服務(wù)器
找一臺(tái)服務(wù)器,首先要安裝git:yum install -y git?
添加git用戶,并且設(shè)置shell為/usr/bin/git-shell,目的是為了不讓git用戶遠(yuǎn)程登陸
useradd -s /usr/bin/git-shell git?
進(jìn)到家目錄下:cd /home/git
創(chuàng)建authorized_keys文件,并更改屬主、屬組和權(quán)限,用來存客戶端機(jī)器上的公鑰
1.mkdir .ssh
2.touch .ssh/authorized_keys
3.chown -R git.git .ssh
4.chmod 600 .ssh/authorized_keys
以上操作目的是讓另一臺(tái)機(jī)器可以通過密鑰進(jìn)行通信
把另一臺(tái)機(jī)器上的公鑰放到本機(jī)(服務(wù)端)配置文件里
/home/git/.ssh/authorized_keys
試驗(yàn)一下,用另一臺(tái)鏈接一下:ssh git@192.168.182.133
定好存儲(chǔ)git倉(cāng)庫(kù)的目錄,比如/data/gitroot
mkdir /data/gitroot
cd /data/gitroot
git init --bare sample.git // 創(chuàng)建一個(gè)裸倉(cāng)庫(kù)
ps:裸倉(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 ##設(shè)置屬主屬組
以上操作是在git服務(wù)端上做的,平時(shí)git服務(wù)器是不需要開發(fā)人員登錄修改代碼的,它僅僅是充當(dāng)著一個(gè)服務(wù)器的角色,就像github一樣,平時(shí)操作都是在我們自己的pc上做的
首先要把客戶端上的公鑰放到git服務(wù)器上/home/git/.ssh/authorized_keys文件里
在客戶端上(自己pc)克隆遠(yuǎn)程倉(cāng)庫(kù)
git clone git@192.168.182.133:/data/gitroot/sample.git
此時(shí)就可以在當(dāng)前目錄下生成一個(gè)sample的目錄,這個(gè)就是我們克隆的遠(yuǎn)程倉(cāng)庫(kù)了。進(jìn)入到這里面,可以開發(fā)一些代碼,然后push到遠(yuǎn)程。
實(shí)驗(yàn):
[root@localhost?~]#?cd?sample/ [root@localhost?sample]#?ls [root@localhost?sample]#?cp?/etc/init.d/MySQLd?.?##隨便拷貝一個(gè)文件過來 [root@localhost?sample]#?ls mysqld [root@localhost?sample]#?git?add?.?##添加到倉(cāng)庫(kù) [root@localhost?sample]#?git?ci?-m?"add?new?file"?提交(ci是我們之前對(duì)commit設(shè)定的別名) [master(根提交)?028b4a9]?add?new?file ?Committer:?root?<root@localhost.localdomain> 您的姓名和郵件地址基于登錄名和主機(jī)名進(jìn)行了自動(dòng)設(shè)置。請(qǐng)檢查它們正確 與否。您可以通過下面的命令對(duì)其進(jìn)行明確地設(shè)置以免再出現(xiàn)本提示信息: ????git?config?--global?user.name?"Your?Name" ????git?config?--global?user.email?you@example.com 設(shè)置完畢后,您可以用下面的命令來修正本次提交所使用的用戶身份: ????git?commit?--amend?--reset-author ?1?file?changed,?380?insertions(+) ?create?mode?100755?mysqld [root@localhost?sample]#?git?push?##推送到遠(yuǎn)程倉(cāng)庫(kù),這里會(huì)報(bào)錯(cuò),報(bào)錯(cuò)原因是因?yàn)榈谝淮瓮扑退恢滥阋扑湍膫€(gè)分支,解決辦法指定分支 warning:?push.default?未設(shè)置,它的默認(rèn)值將會(huì)在?Git?2.0?由?'matching' 修改為?'simple'。若要不再顯示本信息并在其默認(rèn)值改變后維持當(dāng)前使用習(xí)慣, 進(jìn)行如下設(shè)置: ??git?config?--global?push.default?matching 若要不再顯示本信息并從現(xiàn)在開始采用新的使用習(xí)慣,設(shè)置: ??git?config?--global?push.default?simple 參見?'git?help?config'?并查找?'push.default'?以獲取更多信息。 ('simple'?模式由?Git?1.7.11?版本引入。如果您有時(shí)要使用老版本的?Git, 為保持兼容,請(qǐng)用?'current'?代替?'simple'?模式) No?refs?in?common?and?none?specified;?doing?nothing. Perhaps?you?should?specify?a?branch?such?as?'master'. fatal:?The?remote?end?hung?up?unexpectedly error:?無法推送一些引用到?'git@192.168.182.133:/data/gitroot/sample.git' [root@localhost?sample]#?git?push?origin?master?##指定分支,推送成功 Counting?objects:?3,?done. Delta?compression?using?up?to?2?threads. Compressing?objects:?100%?(2/2),?done. Writing?objects:?100%?(3/3),?3.85?KiB?|?0?bytes/s,?done. Total?3?(delta?0),?reused?0?(delta?0) To?git@192.168.182.133:/data/gitroot/sample.git ?*?[new?branch]??????master?->?master [root@localhost?sample]#
[root@localhost?tmp]#?git?clone?git@192.168.182.133:/data/gitroot/sample.git?##把服務(wù)端的庫(kù)克隆下來,克隆到tmp下 正克隆到?'sample'... remote:?Counting?objects:?3,?done. remote:?Compressing?objects:?100%?(2/2),?done. remote:?Total?3?(delta?0),?reused?0?(delta?0) 接收對(duì)象中:?100%?(3/3),?done. [root@localhost?tmp]#?ls apelearn??mysql.sock??sample [root@localhost?tmp]#?ls?sample/ mysqld [root@localhost?tmp]#?cd?sample/ [root@localhost?sample]#?ls mysqld [root@localhost?sample]#?mkdir?222.txt?然后在克隆的庫(kù)里創(chuàng)建一個(gè)新文件,隨便寫點(diǎn)東西 [root@localhost?sample]#?vim?222.txt [root@localhost?sample]#?git?add?222.txt [root@localhost?sample]#?git?commit?-m?"ch?222.txt" [master?44076d8]?ch?222.txt ?Committer:?root?<root@localhost.localdomain> 您的姓名和郵件地址基于登錄名和主機(jī)名進(jìn)行了自動(dòng)設(shè)置。請(qǐng)檢查它們正確 與否。您可以通過下面的命令對(duì)其進(jìn)行明確地設(shè)置以免再出現(xiàn)本提示信息: ????git?config?--global?user.name?"Your?Name" ????git?config?--global?user.email?you@example.com 設(shè)置完畢后,您可以用下面的命令來修正本次提交所使用的用戶身份: ????git?commit?--amend?--reset-author ?1?file?changed,?1?insertion(+) ?create?mode?100644?222.txt [root@localhost?sample]#?git?push?##再把它推送到遠(yuǎn)程服務(wù)器 warning:?push.default?未設(shè)置,它的默認(rèn)值將會(huì)在?Git?2.0?由?'matching' 修改為?'simple'。若要不再顯示本信息并在其默認(rèn)值改變后維持當(dāng)前使用習(xí)慣, 進(jìn)行如下設(shè)置: ??git?config?--global?push.default?matching 若要不再顯示本信息并從現(xiàn)在開始采用新的使用習(xí)慣,設(shè)置: ??git?config?--global?push.default?simple 參見?'git?help?config'?并查找?'push.default'?以獲取更多信息。 ('simple'?模式由?Git?1.7.11?版本引入。如果您有時(shí)要使用老版本的?Git, 為保持兼容,請(qǐng)用?'current'?代替?'simple'?模式) Counting?objects:?4,?done. Delta?compression?using?up?to?2?threads. Compressing?objects:?100%?(2/2),?done. Writing?objects:?100%?(3/3),?280?bytes?|?0?bytes/s,?done. Total?3?(delta?0),?reused?0?(delta?0) To?git@192.168.182.133:/data/gitroot/sample.git ???028b4a9..44076d8??master?->?master [root@localhost?sample]#?pwd /tmp/sample [root@localhost?sample]#?cd?/root/sample/?在進(jìn)到一開始克隆庫(kù)的目錄 [root@localhost?sample]#?ls mysqld [root@localhost?sample]#?git?pull?##拉取文件 remote:?Counting?objects:?4,?done. remote:?Compressing?objects:?100%?(2/2),?done. remote:?Total?3?(delta?0),?reused?0?(delta?0) Unpacking?objects:?100%?(3/3),?done. 來自?192.168.182.133:/data/gitroot/sample ???028b4a9..44076d8??master?????->?origin/master 更新?028b4a9..44076d8 Fast-forward ?222.txt?|?1?+ ?1?file?changed,?1?insertion(+) ?create?mode?100644?222.txt [root@localhost?sample]#?cat?222.txt?發(fā)現(xiàn)是剛剛上傳的222.txt文件?這也是一中方式 akakda [root@localhost?sample]#?ls 222.txt??mysqld [root@localhost?sample]#
使用gitlab
gitlab官網(wǎng) https://about.gitlab.com/gitlab-com/
官方安裝文檔 https://about.gitlab.com/installation/?version=ce#centos-7 (ce/ee)
要求服務(wù)器內(nèi)存不少于2g
vim /etc/yum.repos.d/gitlab.repo//加入如下內(nèi)容
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
yum install -y gitlab-ce
編譯安裝:gitlab-ctl reconfigure?
安裝成功,之后他會(huì)把你的服務(wù)自動(dòng)啟動(dòng)起來
netstat -lnpt? //查看監(jiān)聽端口
gitlab-ctl stop/restart/start/status ##關(guān)閉/重啟/啟動(dòng)/狀態(tài)
瀏覽器訪問gitlab,輸入ip即可
默認(rèn)管理員root,無密碼,它會(huì)讓我們?nèi)ザx一個(gè)密碼
登錄
gitlab常用命令? https://www.cnyunwei.cc/archives/1204
gitlab備份? gitlab-rake gitlab:backup:create
備份目錄在/var/opt/gitlab/backups
gitlab 恢復(fù)數(shù)據(jù)
先停服務(wù) gitlab-ctl stop unicorn ; gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=xxxxx (這里是一個(gè)編號(hào),即備份文件的前綴)
再啟動(dòng)服務(wù) gitlab-ctl start?
網(wǎng)頁(yè)標(biāo)題:代碼管理平臺(tái)-git
文章轉(zhuǎn)載:http://jinyejixie.com/article2/ipepic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、微信小程序、電子商務(wù)、網(wǎng)站維護(hù)、網(wǎng)頁(yè)設(shè)計(jì)公司、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)