遠程倉庫
如果需要進行多人協作,我們就必須使用遠程倉庫。將本地倉庫的數據同步到遠程倉庫,實現多人協作開發。
目前比較熱門的代碼托管社區:GitHub,網址:https://gtihub.com ,提供了免費的遠程git倉庫功能。不過網速不是特別流暢。
在國內,有很多的公司使用oschina提供的git服務:碼雲, https://gitee.com ,
當然,我們也可以自己來搭建遠程倉庫。
搭建遠程倉庫服務
GitHub是世界最大的代碼托管庫,但是如果你想要設置私人倉庫,是要收費的。而且速度不太好。因此一般公司都會自己搭建Git私服。
現在主流的私服架構有:GitLab、Gogs等。
開源中國的碼雲就是使用GitLab搭建的。
https://try.gogs.io/是用Gogs搭建,可以做測試使用。
安裝git和gogs
場景:
這里我用的Linux系統是centos 首先安裝編譯需要的文件 然后用root用戶登錄 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
yum install gcc perl-ExtUtils-MakeMaker
yum install xmlto 下載編譯git-2.2.2.0.tar.gz wget -o git-2.2.2.0.tar.gz https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.22.0.tar.gz tar xf git-2.2.2.0.tar.gz cd git-2.2.2.0 make configure ./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv make all doc make install install-doc install-html echo"export PATH=$PATH:/usr/local/git/bin" >> /etc/profile 使命令生效 source /etc/profile 創建git用戶 useradd git passwd git 切換用戶 su git cd ~ wget -o https://github.com/gogs/gogs/releases/download/v0.11.86/linux_amd64.tar.gz tar -zxvf linux_amd64.tar.gz cd gogs
運行 ./gogs web
注:如果不好使
1.刪掉gogs,重新解壓編譯一遍即可.
2.重啟linux.
啟動成功,監聽的是3000端口
訪問管理界面
在瀏覽器中訪問:http://服務器ip地址3000
首次運行,會讓我們進行一些設置
數據庫設置:
基本設置:
其它設置,可選,不設置的話需要注冊新的用戶信息
完成后
注冊登錄
地址:https://try.gogs.io/user/login
創建新的倉庫
ssh和https兩張協議, 當我們選擇一種后,會出現對應的遠程倉庫地址
這里推薦使用ssh協議。因為http速度較慢,並且每次都需要驗證用戶名和密碼,
但是要使用ssh協議進行同步,必須生成SSH密鑰,並添加到當前倉庫的許可列表中
ssh協議
ssh是英文Secure Shell的簡寫形式。通過使用SSH,你可以把所有傳輸的數據進行加密,這樣"中間人"這種攻擊方式就不可能實現了,而且也能夠防止DNS欺騙和IP欺騙。
使用ssh,還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以為FTP、Pop、甚至為PPP提供一個安全的"通道"。
創建ssh密鑰
Git-bash中已經集成了ssh功能,所以我們只需要簡單的命令,即可生成密鑰:
ssh-keygen -t rsa
一路回車向下走,不要輸入任何內容即可!
執行命令完成后,在window本地用戶.ssh目錄C:\Users\用戶名\.ssh下面生成如下名稱的公鑰和私鑰
添加git密鑰到git私服
選擇用戶,個人設置,選擇ssh密鑰
設置密鑰
密鑰的內容,就是剛剛生成的兩個密鑰中的公鑰:id_rsa.pub
用文本編輯工具打開,並且復制內容即可
推送遠程倉庫
通過控制面板,回到倉庫頁面,發現下面有一段幫助信息
使用TortoiseGit(小烏龜)推送
在git工作區中右鍵-->選擇TortoisGit(T)-->設置
遠端設置 注意:UPL和推送URL都是要https的地址 ,配置私鑰
然后配置網絡
然后右鍵-->推送
推送成功,我這里出現了亂碼問題,只需要在編輯工具里把格式改為UTF-8即可.
拉取遠程倉庫
先手動修改遠程倉庫數據,模擬他人的提交
然后在工作區-->右鍵選擇TortoisGit(T)-->拉取
發現內容多了一行"測試拉取遠程倉庫"
總結
1) 如果要使用SSH協議與遠程倉庫同步,就必須先在本地生成公鑰和私鑰,然后將公鑰添加到遠程的SSH列表
2) 如果已經有本地倉庫,並且想要與遠程倉庫關聯,一般需要兩步:
a) 通過git remote add origin + 遠程倉庫地址 進行關聯
b) 通過git push -u origin master推送本地倉庫修改到遠程倉庫
3) 如果沒有本地倉庫,先創建遠程倉庫,然后通過git clone + 遠程倉庫地址 進行克隆並創建本地倉庫
將Java工程加入到版本庫
場景
准備一個maven項目,一個用戶管理系統
我們把這個項目交給git去管理。
初始化本地倉庫
將不需要管理的文件和目錄 忽略
maven項目中需要提交的只有src和pom.xml,其它文件和目錄都應該忽略:
選擇遞歸忽略
同樣的方式處理target目錄、.classpath文件和.project文件,此處略。
然后在本地倉庫目錄,多出了一個.gitignore文件,這里面就定義了所有的過略規則:
.gitignore文件的語法:
l 空行或是以#開頭的行即注釋行將被忽略。
l 可以在前面添加正斜杠/來避免遞歸,下面的例子中可以很明白的看出來與下一條的區別。
l 可以在后面添加正斜杠/來忽略文件夾,例如build/即忽略build文件夾。
l 可以使用!來否定忽略,即比如在前面用了*.apk,然后使用!a.apk,則這個a.apk不會被忽略。
l *用來匹配零個或多個字符,如*.[oa]忽略所有以".o"或".a"結尾,*~忽略所有以~結尾的文件(這種文件通常被許多編輯器標記為臨時文件);[]用來匹配括號內的任一字符,如[abc],也可以在括號內加連接符,如[0-9]匹配0至9的數;?用來匹配單個字符。
將項目中所有文件添加到暫存區
方式1:使用git bash 敲擊命令: git add . 就會把當前目錄所有文件加入暫存區
方式2:使用tortoise
你會發現,待添加的文件,只有src目錄下的和pom.xml,當然還有那個.gitignore文件
提交
然后提交即可,推送到遠程
IDEA使用Git
在idea創建一個git倉庫
成功后有的地方會變棕色
然后我們去把一些文件忽略掉
小烏龜忽略
idea忽略
增加和提交
相當於我們這個項目已經被git托管了
推送
填寫推送http地址
如果推送被拒絕
1.切換到自己項目所在的目錄,右鍵選擇GIT BASH Here,Idea中可使用Alt+F12
2.在terminl窗口中依次輸入命令:
git pull
git pull origin master
git pull origin master --allow-unrelated-histories
3.在idea中重新push自己的項目
在遠程倉庫中變更內容
拉取
拉取成功
再次提交
提交成功
idea解決遠程沖突
模擬場景
遠程倉庫端做修改
本地也做修改
這時候就有了差異我們把它拉取一下,產生了沖突
根據需要解決沖突
我們在演示一下服務端做修改,本機提交
服務端修改
本機
推送到遠程服務器
依舊根據需要解決沖突
然后就ok了
分支沖突
創建查看分支
查看日志
分支合並
提交后切回master分支
修改master分支並提交
合並
然后出現沖突根據需求進行解決就完成了
最后再次push