git進階-遠程倉庫-IDEA中GIt使用


 遠程倉庫

如果需要進行多人協作我們就必須使用遠程倉庫將本地倉庫的數據同步到遠程倉庫實現多人協作開發

目前比較熱門的代碼托管社區:GitHub,網址:https://gtihub.com  ,提供了免費的遠程git倉庫功能不過網速不是特別流暢

在國內有很多的公司使用oschina提供的git服務碼雲https://gitee.com ,

當然,我們也可以自己來搭建遠程倉庫。

搭建遠程倉庫服務

GitHub是世界最大的代碼托管庫但是如果你想要設置私人倉庫是要收費的而且速度不太好因此一般公司都會自己搭建Git私服

現在主流的私服架構有GitLabGogs等。

開源中國的碼雲就是使用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,又可以為FTPPop、甚至為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項目中需要提交的只有srcpom.xml,其它文件和目錄都應該忽略:

選擇遞歸忽略

同樣的方式處理target目錄、.classpath文件和.project文件,此處略。

然后在本地倉庫目錄多出了一個.gitignore文件,這里面就定義了所有的過略規則:

.gitignore文件的語法

空行或是以#開頭的行即注釋行將被忽略。

可以在前面添加正斜杠/來避免遞歸,下面的例子中可以很明白的看出來與下一條的區別。

可以在后面添加正斜杠/來忽略文件夾,例如build/即忽略build文件夾。

可以使用!來否定忽略,即比如在前面用了*.apk,然后使用!a.apk,則這個a.apk不會被忽略。

l *用來匹配零個或多個字符,如*.[oa]忽略所有以".o"".a"結尾,*~忽略所有以~結尾的文件(這種文件通常被許多編輯器標記為臨時文件);[]用來匹配括號內的任一字符,如[abc],也可以在括號內加連接符,如[0-9]匹配09的數;?用來匹配單個字符。

將項目中所有文件添加到暫存區

方式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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM