版本控制
1.為什麼需要版本控制?
從個人開發過渡到團隊協作。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yN2ITN5UDOjFjMhFmZxIDOyYzX0UTN1cTM2EzLcVDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
2.版本控制工具點選下載下傳
-
集中式版本控制工具
CVS、SVN、VSS……
-
分布式版本控制工具
Git、Mercurial、Bazaar、Darcs……
3.SVN工作機制
- 檢出(Checkout)
- 把伺服器端版本庫内容完整下載下傳到本地。
- 在整個開發過程中隻做一次。
- 更新(Update)
- 把伺服器端相對于本地的新的修改下載下傳到本地。
- 送出(Commit)
- 把本地修改上傳到伺服器。
分享部落格:SVN使用—工作模式及運作原理以及優缺點對比
4.SVN伺服器端安裝
這裡教大家安裝svn到linux上,打開虛拟機,打開SecureCRTPortable.exe。
輸入指令:yum install -y subversion
檢視版本是否安裝成功:svn --version
5.建立版本庫
①SVN服務配置檔案
vim /etc/sysconfig/svnserve,這個檔案隻是看看,不需要改。
②建立版本庫目錄和項目目錄
輸入指令:mkdir -p /var/svn/pro_oa
pro_oa:這裡是你要上傳項目到伺服器是的倉庫名,我這裡用了簡寫,一個oa項目的倉庫名
③執行svnadmin指令真正建立版本庫
輸入指令:svnadmin create /var/svn/pro_oa
④将來的通路方式
svn://ip位址:端口号(預設可以不用寫)/版本庫
⑤啟動SVN服務
輸入指令:systemctl start svnserve.service
輸入指令:systemctl enable svnserve.service
開啟匿名通路
vim 版本庫根目錄/conf/svnserve.conf
anon-access = write
關閉selinux
vim /etc/sysconfig/selinux
SELINUX=disabled
reboot
6.Eclipse通路SVN伺服器
①Eclipse中的SVN插件
[1]簡介
Subversive:Eclipse團隊開發的SVN插件。 安裝麻煩點,使用很爽
Subclipse:Apache的SVN團隊開發的Eclipse插件。安裝很爽,使用容易出錯
我們安裝Subversive
[2]安裝過程
install
②建立資源庫位置
③Eclipse中忽略特定檔案
操作方法:
- 第一步:打開~\AppData\Roaming\Subversion\config檔案
- 第二步:修改global-ignores
global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo __pycache__ *.rej *~ #*# .#* .*.swp .DS_Store .settings */.settings/* .classpath .project target */target/*
④分享工程
-
第一步
工程→右鍵→Team→Share Project...
-
第二步
版本控制工具中選擇SVN
-
第三步
選擇一個已經存在的資源庫位置或建立一個 可以直接點Finish(工程在SVN伺服器端的目錄名和工程名一緻;上傳工程目錄的日志使用預設值)
-
第四步
确認工程根目錄下子目錄和檔案是否全部上傳
⑤常見圖示含義
⑥檢出
-
第一步
在Eclipse中執行Import操作
-
第二步
确認資源庫位置
-
版本控制SVN和Git
-
第三步
找到SVN伺服器端工程對應的目錄
-
第四步
選擇檢出方式
-
第五步
Finish
-
第六步
轉換工程類型
⑦其他基本操作規律
資源→右鍵→Team→相關菜單項
⑧解決沖突
-
第一步
沖突檔案→右鍵→Team→Edit Conflicts
- 第二步
7.Git簡史
8.Git工作機制
9.Git和代碼托管中心
代碼托管中心負責維護遠端庫。
- 區域網路
- GitLab
- 外網
- GitHub
- 碼雲
10.本地庫和遠端庫互動機制
①團隊内協作
②跨團隊協作
11.Git安裝
12.Git常用指令
On branch master: 在master的分支上
No Commits yet :現在沒有任何的送出到本地庫
Untracked files:沒有追蹤的檔案,追蹤:就是git把這個檔案管理起來了
(user "git add <fiile>..." to include in what will be committed):使用git add 将這個檔案包含到将要送出的地方,也就是暫存區,我們現在在工作區。
nothing added to commit but untracked files present (use "git add" to track):你沒有任何要添加的檔案到暫存區,但是存在未追蹤的檔案
git add:有二個作用:一個是讓Git去追蹤這個檔案,另一個是讓檔案包含到暫存區。
Changes to be committed:檢測到要被送出的修改,就是new file:hello.txt
(use "git rm --cached <file>..." to unstage):執行git rm --cached 檔案名可以撤銷,rm:删除,cached:緩存,把暫存區的檔案删除
在(root-commit)後面有一個版本号 ,它是哈希加密的一個結果。
git commit git commit -m "日志資訊" 檔案名,需要先讓Git去追蹤,之後就可以直接送出
版本穿梭:通過版本号回到原來的版本
現在的指針指向現在的版本,隻是做了一個版本的移動,沒有建立新的版本。
13.分支操作
①什麼是分支
在版本控制過程中,同時推進多個任務
②分支的好處
同時并行推進多個功能開發,提高開發效率 各個分支在開發過程中,如果某一個分支開發失敗,不會對其他分支有任何影響。失敗的分支删除重新開始即可。
③分支操作
master:顔色為綠色,是現在所在的分支。
git merge 分支名 | 把指定的分支合并到目前分支上 |
什麼叫合并呢?
我們同時進行二個項目的開發,做完後要将項目合并到一起。
我們先回到主幹分支
然後将hotfix分支合并,可以看到他增加了一行,減少了一行。
14.GitHub操作
名稱 | 值 |
Email位址 | [email protected] |
GitHub賬号 | BoomManager |
15.建立遠端庫
可以建立GitHub:有許多國外的優秀項目,但網絡連接配接速度較慢。也可以建立碼雲賬戶:國内的代碼托管中心,國内的程式員更适應些。
分享GitHub的注冊與使用(詳細圖解)
16.遠端庫操作
①建立遠端庫位址别名
git remote -v 檢視目前所有遠端位址别名
git remote add 别名 遠端位址
②推送
git push 别名 分支
③克隆
git clone (你要克隆誰的,他的遠端位址)
注意:先進入到你自己需要克隆到的目錄,然後在克隆别人的遠端庫位址
④邀請加入團隊
⑤拉取:從遠端庫拉取到本地庫
git pull 遠端庫位址别名 遠端分支名
我現在用了别名origin,添加别名:git remote add 别名 遠端位址
17.跨團隊協作
分享:團隊協作,組織和分支
18.SSH登入
進入目前使用者的家目錄
$ cd ~
删除.ssh目錄
$ rm -rvf .ssh
運作指令生成.ssh密鑰目錄
$ ssh-keygen -t rsa -C [email protected]
[注意:這裡-C這個參數是大寫的C]
進入.ssh目錄檢視檔案清單
$ cd .ssh
$ ls -lF
檢視id_rsa.pub檔案内容
$ cat id_rsa.pub
複制id_rsa.pub檔案内容,登入GitHub,點選使用者頭像→Settings→SSH and GPG keys
New SSH Key
輸入複制的密鑰資訊
回到Git bash建立遠端位址别名
git remote add origin_ssh [email protected]:BoomManager/Repository01.git
推送檔案進行測試
19.Eclipse操作
①初始化本地庫
②忽略檔案
編輯一個專門配置檔案忽略的檔案,檔案名任意
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
在~/.gitconfig檔案中引入上述檔案
[core]
excludesfile = C:/Users/Lenovo/Java.gitignore
[注意:這裡路徑中一定要使用“/”,不能使用“\”]
③推送
④克隆
⑤分支操作