22.1-22.6 代碼管理平臺,安裝svn以及使用(linux,windows),單機使用git

22.1 代碼管理平臺介紹


 

要了解的常識

 

  •  版本控制,記錄若干文件內容變化,以便將來查閱特定版本修訂情況

  •  版本管理工具發展簡史,cvs svn  git  參考http://luckypoem14.github.io/test/2012/04/24/scm-history/

  •  svn全稱subversion,是一個開源版本控制系統,始於2000年

  •  git是linux創始人linus發起的,2005年發佈,最初目的是更好管理linux內核代碼

  •  git和svn不同在於git不需要依賴服務端就可以工作,即git是分佈式的

  •  關於git和svn的比較大家參考http://blog.lishiming.net/?p=305

  •  github是基於git的在線web頁面代碼託管平臺,可以選擇付費服務

  •  gitlab可以認爲是一個開源的github,兩者沒有直接關係

22.2 安裝svn


 1 安裝svn                                                                                                                                                                                                                                                    

yum install -y subversion

 2 創建版本庫 (可以理解爲項目)

mkdir -p /data/svnroot/myproject

 3 初始化版本庫

svnadmin create /data/svnroot/myproject
ls -la !$
ls -la /data/svnroot/myproject
總用量 8
drwxr-xr-x 6 root root  86 12月  3 14:50 .
drwxr-xr-x 3 root root  23 12月  3 14:49 ..
drwxr-xr-x 2 root root  54 12月  3 14:50 conf
drwxr-sr-x 6 root root 233 12月  3 14:50 db
-r--r--r-- 1 root root   2 12月  3 14:50 format
drwxr-xr-x 2 root root 231 12月  3 14:50 hooks
drwxr-xr-x 2 root root  41 12月  3 14:50 locks
-rw-r--r-- 1 root root 229 12月  3 14:50 README.txt

 4 vim authz //配置文件改爲如下

vim authz
[groups]
admins=kevin,user1
[/]
@admins=rw
*=r
[myproject:/]
user1=rw

 

解釋:

第一種形式    

groups

 項目,針對項目下面進行設行權限設置

admins  kevin,user1

組名:admins

組用戶:kevin,user1

/

目錄,這裏的目錄指的是剛剛初始化的目錄,那就是:/data/svnroot/myproject

也可以子目錄管理模式:[/dir1][/dir1/dir2]

@admins  rw

admins只可以擁有rw權限,

* r

*表示所有,這個配置的意思是所有

第二種形式

myproject:/

myproject是項目的名稱

  • 這種情況用在/svnroot 有多個項目的情況下,如果只有一個項目,就用第一種。

  • user1  rw

    user1是rw形式

  • 5 設置密碼

  • vim  //加入如下內容userskevin  kevin_*user1  user1_^^^123
    
    user2  user2-***123

    解釋:

    格式:用戶 = 密碼

6 配置svnsever.conf

vim svnserver.conf //更改或增加如下內容generalanon-access  none
auth-access  password-db  authz-db  authz
realm  /data/svnroot/myproject

解釋:

anon-access  none

匿名用戶權限,none表示無

auth-access

授權用戶權限,可寫

password-db

用戶的密碼數據文件存放在:passwd , 後面帶的是文件。

authz-db  authz

權限控制文件:authz ,後面帶的是文件。

realm  /data/svnroot/myproject

需要生效的項目目錄,需要寫絕對路徑。

7 啓動svn

這樣就啓動了,-d後臺啓動,-r指定目錄

svnserve -d -r /data/svnroot
root     18654  0.0  0.0 162240   656 ?        Ss   10:34   0:00 svnserve -d -r /data/svnroot/
root     18656  0.0  0.0 112720   984 pts/0    S+   10:34   0:00  --colorauto svnroot@9F-VM1 conftcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      18654/svnservetcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      18654/svnserv

c/s架構訪問需要確保是否已經關閉防火牆(iptables,selinux)

22.3 客戶端上使用svn(linux)


1 client安裝svn

yum  -y  subversion

2 創建myproject的項目相關目錄

在server上面建立項目的目錄,稍後client有需要建立

root@9F-VM1 ~root@9F-VM1 svntest

#首次連接svn,記錄svn的登錄信息,在哪個目錄checkout就在哪裏獲得登錄信息。

 svn checkout svn://192.88.29.250/myproject --usernamekevin
 認證領域: svn://192.88.29.250:3690 /data/svnroot/myproject
“kevin”的密碼:
-----------------------------------------------------------------------
注意  你的密碼,對於認證域:  svn://192.88.29.250:3690 /data/svnroot/myproject
只能明文保存在磁盤上  如果可能的話,請考慮配置你的系統,讓 Subversion
可以保存加密後的密碼。請參閱文檔以獲得詳細信息。
你可以通過在“/root/.subversion/servers”中設置選項“store-plaintext-passwords”爲“yes”或“no”,
來避免再次出現此警告。
-----------------------------------------------------------------------
保存未加密的密碼yes/no?yes
取出版本 0。

解釋:

  • 版本號 0

  • 密碼信息修改可以在“/root/.subversion/servers”中設置

  • 在哪個目錄登錄就在哪個目錄產生項目,此處的項目名稱是myproject

3 項目生產的文件,

 myproject   -la總用量 0
drwxr-xr-x  3 root root  18 8月  30 11:27 dr-xr-x---. 4 root root 207 8月  30 11:27 drwxr-xr-x  4 root root  75 8月  30 11:27 .svn

4 client也是如此手動建立初始目錄

 /root/
svn checkout svn://192.88.29.250/myproject --usernamekevinanaconda-ks.cfg  myproject svntest.txt myproject   -la總用量 4
drwxr-xr-x  3 root root  37 8月  30 11:46 dr-xr-x---. 4 root root 226 8月  30 11:45 drwxr-xr-x  4 root root  75 8月  30 11:47 .svn

5 測試

5.1 在client操作

#複製文件到項目目錄中

 /root/svntest.txt

#將文件添加到版本控制中心

svn add  /svntest.txt

#把文件上傳到服務器

svn commit -m “add file”正在增加       svntest.txt
傳輸文件數據.
提交後的版本爲 1。

5.2 在server操作

進行同步:svn upadte,把當前目錄下的文件都更新到最新版

root@9F-VM1 myproject正在升級 版本 1。root@9F-VM1 myprojectsvntest.txt

可以看到svntest.txt已經從client同步過來了。

#在服務器上刪除

svn commit -m “delete filename”

#修改代碼

svn commit -m “ch filename”

例子:client在svntest.txt增加內容

root@9F-VM2 myproject11111
2222
333root@9F-VM2 myproject正在發送       svntest.txt
傳輸文件數據.
提交後的版本爲 2。

6 在回到server上同步數據,

root@9F-VM1 myproject正在升級 U    svntest.txt
更新到版本 2。root@9F-VM1 myproject11111
2222
333

#在本地刪除

svn delete filename

#查看變更日誌

svn log root@9F-VM1 myproject------------------------------------------------------------------------
r2  kevin  2018-08-30 15:13:39 +0800 四, 2018-08-30  1 行
ch svntest.txt
------------------------------------------------------------------------
r1  kevin  2018-08-30 11:47:39 +0800 四, 2018-08-30  1 行
add svntest.txt

22.4 客戶端上使用svn(windows)


 官網 https://tortoisesvn.net/index.zh.html

 下載TortoiseSVN 並安裝

 簡明教程 http://www.jianshu.com/p/6b3b7b915332

使用:

  • 1 在windows建立項目文件夾,

  • 2 選中項目文件夾,選擇svn checkout選項

  • 3 項目地址:svn://192.88.29.250/myproject

     checkout目錄:自定義

  • 4 創建文件,例如txt文件,鍵入內容。。。。

  • 5 創建成功後,右擊文件"svn add" ,add後再次右擊文件,進行SVN commit,

  • 6 commit後,需要增加說明,說明是必須操作的一步。

  • 7 在linux任意c/s進行svn up進行同步即可

  • 如果想在windows進行同步,同樣原理:右擊選中項目文件夾,進行update即可。

 

22.5 單機上使用git(上)

1 安裝git以及創建相關目錄

yum  -y  /data/gitroot /data/gitroot

2 初始化倉庫

 init 初始化空的 Git 版本庫於 /data/gitroot/.git/
初始化後,生成.git的目錄總用量 0
drwxr-xr-x 3 root root  18 8月  30 16:34 drwxr-xr-x 6 root root  67 8月  30 16:33 drwxr-xr-x 7 root root 119 8月  30 16:34 .git

3 創建一個新文件,並追加內容

111
222
333

4 把1.txt添加到倉庫

 add 1.txt

5 add完了必須要commit纔算真正把文件提交到git倉庫裏

 commit -m “add new  1.txt”
master(根提交) a115137 add 1.txt
 1  changed, 3 insertions+
 create mode 100644 1.txt

再次更改1.txt

 -e  1.txt 1.txt
111
222
333
444
555
666

再次add,再次commit

master ca9c291 add 1.txt again
1  changed, 3 insertions+

#查看當前倉庫中的狀態,比如是否有改動的文件

無文件要提交,乾淨的工作區

如果修改了1.txt內容,但是沒有git add,但git status會出現以下提示

 -e   1.txt status修改尚未加入提交(使用  和/或 )

6 可以對比1.txt本次修改了什麼內容,相比較倉庫裏面的版本

 --git a/1.txt b/1.txt
index 62b65c933f8125 100644
--- a/1.txt
+++ b/1.txt
@@ -4,3 +4,5 @@
 444
 555
 666
+aaa
+bbb

版本回退

多更改幾次1.txt,然後add,commit

刪除1.txt 中的 444 5555 兩段字符

master 0a8eb9d ch 1.txt again
 1  changed, 2 insertions+, 2 deletions-

 

 git log    //查看所有提交記錄

 查看日誌

 log --prettyoneline    //一行顯示0a8eb9df92f9fb1cb833a6c50161db036a27dd37 ch 1.txt again
ca9c291b3fab3e09cb2dc6530554e5dd399d66ec add 1.txt again
a1151376acc51fe31277d7f96e5a4a2f73b4bda2 add 1.txt

解釋:

ca9c291b3fab3e09cb2dc6530554e5dd399d66ec add 1.txt again

行首第一段是版本的id號

  • 版本號是從下往上的,最上的是最新的。

  • 7 #回退版本,其中後面跟的字符串可簡寫

    格式: git reset --hard f7c8e9 

root@9F-VM1 gitrootHEAD 現在位於 ca9c291 add 1.txt againroot@9F-VM1 gitrootca9c291b3fab3e09cb2dc6530554e5dd399d66ec add 1.txt again
a1151376acc51fe31277d7f96e5a4a2f73b4bda2 add 1.txt

回退成功

 

8 查看所有歷史版本

ca9c291 HEAD@0: reset: moving to ca9c291b3fab3
0a8eb9d HEAD@1: commit: ch 1.txt again
ca9c291 HEAD@2: commit: add 1.txt again
a115137 HEAD@3: commit initial: add 1.txt

如果要回到指定版本號,命令執行回到即可。

HEAD 現在位於 0a8eb9d ch 1.txt again0a8eb9df92f9fb1cb833a6c50161db036a27dd37 ch 1.txt again
ca9c291b3fab3e09cb2dc6530554e5dd399d66ec add 1.txt again
a1151376acc51fe31277d7f96e5a4a2f73b4bda2 add 1.txt

 

9 撤銷修改

  • rm -f 1.txt//不小心刪除了1.txt

  • git checkout -- 1.txt//恢復1.txt

 -f 1.txt checkout -- 1.txt1.txt

因爲文件存放在版本庫裏面,就算文件被刪掉了也能找回來。

 

如果1.txt文件修改,add後但沒有commit,再想回退到上一次提交的狀態,可以使用git reset HEAD 1.txt,再執行git checkout -- 1.txt

刪除其中幾行字段 


22.6 單機上使用git(下)


1 刪除文件 

#在版本號刪掉

  2.txt

#在庫裏面刪掉

 commit -m

2 檢查

 checkout -- 2.txt

3 文件恢復

eb3cb57 HEAD@0: commit: delete 2.txt
244548b HEAD@1: commit: add 2.txt
0a8eb9d HEAD@2: reset: moving to 0a8eb9d
ca9c291 HEAD@3: reset: moving to ca9c291b3fab3
0a8eb9d HEAD@4: commit: ch 1.txt again
ca9c291 HEAD@5: commit: add 1.txt again
a115137 HEAD@6: commit initial: add 1.txtHEAD 現在位於 244548b add 2.txt1.txt  2.txt111
222
333


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章