SVN、GIT日??次揖蛪蛄?/h2>

配置本地SVN(自己測試使用,咱不能拿公司的SVN服務器做測試吧)

  1. 在本地創(chuàng)建一個倉庫,打開終端執(zhí)行
svnadmin create /Users/vcyber/Desktop/SVNCode/

執(zhí)行完成桌面多了一個SVNCode文件夾,目錄結構如下:


目錄結構
  1. 配置svn權限
    2.1 使用Xcode打開/conf/svnserve.conf,將下面項前面的#去掉, command+s保存,退出。
anon-access = read
auth-access = write
password-db = passed
authz-db = author

anon-access代表匿名用戶權限,read代表用戶只讀,none代表禁止訪問,write代表可讀可寫, 這里我就不修改了,畢竟測試這玩嘛。。。
2.2 使用Xcode打開/conf/passwd/,在[user]下面添加用戶名和密碼,command+s保存,退出。

passwd.png

2.3 使用Xcode打開/conf/authz,在[groups]下面添加組名=用戶名(可以多個)
authz.png

這里我就一個用戶,我就添加一個組,然后享有服務器全部資源,注意添加權限的時候組名前面要加@,用戶名不需要。
2.4 啟動svn服務器
svnserve -d -r /Users/vcyber/Desktop/SVNCode/
沒有任何提示說明啟動成功,可以再活動監(jiān)視器中查看可關閉SVN服務。
活動監(jiān)視器__我的進程_.png

本地環(huán)境配置github(要有github賬號)

1 配置賬號信息

git config --global user.name Fly_Sunshine_J
git config --global user.email 857402355@qq.com

2 創(chuàng)建本地ssh(用于上傳到你對應的github賬號)

ssh-keygen -t rsa -C "857402355@qq.com"

接下來會讓你輸入保存路徑,你可以選擇默認,也可以選擇保存到對應位置,最后會讓你輸入密碼, 密碼也是可有可無的。


默認保存位置

3 接下來就是找到創(chuàng)建.ssh文件夾,打開id_rsa.pub,復制內容,登陸github,選擇Settings -->SSH and GPG kyes -->New SSH Key -->Add SSH Key


添加SSH

4 驗證
ssh -T git@github.com

會出現詢問你繼續(xù)連接,輸入yes,然后彈框輸入3.2中你設置的密碼, 然后出現如下信息說明配置成功

Hi Fly-Sunshine-J! You've successfully authenticated, but GitHub does not provide shell access.

SVN常用命令

import 導入文件到svn服務器
示例:

svn import /Users/vcyber/Desktop/Personal/CoreData/RealmTest/ svn://localhost/Desktop/SVNCode/Realm -m "導入項目"
svn import /Users/vcyber/Desktop/Personal/CoreData/RealmTest/ svn://localhost/Desktop/SVNCode/Realm --username=Fly_Sunshine_J --password=123456 -m "導入項目"

checkout(co) 檢出
示例:

svn checkout svn://localhost/Desktop/SVNCode/Realm /Users/vcyber/Desktop/RealmSVN
svn checkout svn://localhost/Desktop/SVNCode/Realm /Users/vcyber/Desktop/RealmTest --username=Fly_Sunshine_J --password=123456

export 導出
示例:

svn export svn://localhost/Desktop/SVNCode/Realm /Users/vcyber/Desktop/RealmExport --username=Fly_Sunshine_J --password=123456
svn export svn://localhost/Desktop/SVNCode/Realm /Users/vcyber/Desktop/RealmExport
-r 數字(版本號)
svn export -r 4 svn://localhost/Desktop/SVNCode/Realm /Users/vcyber/Desktop/RealmExport

delete/remove(rm) 刪除(注意要切換到本地倉庫, 別忘了提交,這個操作只刪除本地,服務器沒有刪除)
示例:

svn delete RealmTest/Realm.framework/

update 更新本地倉庫
示例:

svn update    沒有文件路徑默認全部更新
svn update RealmTest/ViewController.m  更新指定文件

add 添加新文件(先把文件添加到work copy中,然后添加,別忘了commit)
示例:

svn add RealmTest/Realm.framework/

diff 比較差異
示例:

svn diff RealmTest/ViewController.m
比較兩個版本的差異
svn diff  -r 4:5 RealmTest/ViewController.m

status 查看狀態(tài)
M:修改,?不存在控制中,你可能需要刪除或者添加,C:有沖突,A:新增,K:鎖定
示例:

svn status
//指定文件的狀態(tài)
svn status RealmTest/ViewController.m

log 查看日志
示例:

svn log
指定文件的日志
svn log RealmTest/ViewController.m

info 查看信息
示例:

svn info
指定文件信息
svn info RealmTest/ViewController.m

revert 恢復到上個版本
注意:它不會恢復被刪除的目錄。
示例:

//恢復整個目錄
svn revert --recursive
//恢復某一個文件
svn revert RealmTest/ViewController.m

resolved 解決沖突
一般會在你更新的時候有沖突會提示你,然后輸入r就可以解決沖突
示例:

svn resolved RealmTest/ViewController.m

cp 創(chuàng)建新的分支
示例:

svn cp svn://localhost/Desktop/SVNCode/Realm svn://localhost/Desktop/SVNCode/RealmBranch1 -m"創(chuàng)建新的分支"

remove(rm) 刪除分支
示例:

svn remove svn://localhost/Desktop/SVNCode/RealmBranch1 -m"刪除分支1"
svn rm svn://localhost/Desktop/SVNCode/RealmBranch2 -m"刪除分支2"

merge 合并分支
合并分支到另一個分支或者主干
示例:

主干
svn merge svn://localhost/Desktop/SVNCode/Realm svn://localhost/Desktop/SVNCode/RealmBranch1
分支
svn merge svn://localhost/Desktop/SVNCode/RealmBranch2 svn://localhost/Desktop/SVNCode/RealmBranch1

Git常用命令

init 新建代碼庫
示例:

//在當前目錄新建代碼庫
git init
//在指定位置創(chuàng)建代碼庫
git init Desktop/GitCode

git config [--global] user.name/user.email "name/emai" 配置當前或者全局提交的附帶名字或者郵件
示例:

git config --global user.name "Fly_SunShine_J"
git config --global user.email "857402355@qq.com"
//查看設置情況
git config --global user.name
git config --global user.email

clone 克隆代碼到本地
示例:

git clone https://github.com/Fly-Sunshine-J/Realm.git Desktop/RealmGit

commit 提交暫存區(qū)
示例:

//提交所有
git commit -m"日志"
//提交某一個文件
git commit RealmTest/RealmTest/ViewController.m -m"修改VC"

status 查看工作區(qū)的文件修改
示例:

git status

rm 刪除文件
示例:

git rm RealmTest/RealmTest/ViewController.m

add 添加文件到暫存區(qū)
示例:

//添加指定文件
git add RealmTest/RealmTest/ViewController.m
//添加本地庫所有文件
git add .

mv 修改某一個文件的名字
注意,路徑要對應,否則會自動移動
示例:

git mv RealmTest/RealmTest/ViewController.m RealmTest/RealmTest/View.m

diff 產看追蹤文件的差異
示例:

//查看追蹤文件的差異
git diff
//查看某一文件的差異
git diff RealmTest/RealmTest/ViewController.m

reset --hard HEAD 放棄本地全部修改
示例:

git reset --hard HEAD

git reset 回退到某個版本并保存未追蹤的改動
一大串的東西可以通過log來查詢
示例:

git reset 8989920311bacb3f4e3ced7f82ab75ca47c318c7

git reset --keep回退到某個版本并保存未提交的改動

git reset --keep 8989920311bacb3f4e3ced7f82ab75ca47c318c7

**checkout HEAD ** 放棄本地某一文件的修改
示例:

git checkout HEAD RealmTest/RealmTest/ViewController.m

revert 撤銷某一次提交
示例:

git revert 8989920311bacb3f4e3ced7f82ab75ca47c318c7

checkout 撤銷某次提交的某個文件
示例:

git checkout 8989920311bacb3f4e3ced7f82ab75ca47c318c7 RealmTest/RealmTest/ViewController.m

log 查看提交日志
示例:

git log

blame 查看文件被誰修改
示例:

git blame RealmTest/RealmTest/ViewController.m

branch 分支
示例:

//查看本地分支
git branch
// 查看遠程分支
git branch -r
// 查看遠程和本地分支
git branch -a
//創(chuàng)建本地分支,但是不切換
git branch branch1
//新建一個分支并切換
git checkout -b branch2
//新建一個分支,指向指定commit
git branch branch3 8989920311bacb3f4e3ced7f82ab75ca47c318c7
//新建一個分支,與指定的遠程分支建立追蹤關系
git branch --track branch4 origin/master
//切換到指定分支,并更新工作區(qū)
git checkout branch4
//切換到上一個分支
git checkout -
//建立追蹤關系,在現有分支與指定的遠程分支之間
git branch --set-upstream branch3 origin/master
//合并指定分支到當前分支
git merge branch2
//選擇一個commit,合并進當前分支
git cherry-pick 8989920311bacb3f4e3ced7f82ab75ca47c318c7
//刪除分支
git branch -d branch1
//刪除遠程分支
git push origin --delete branch1
git branch -dr branch1
//將當前分支push到指定遠程分支
git push origin HEAD:branch1

tag 標簽

//列出所有tag
git tag
//新建一個tag在當前commit
git tag 1
//新建一個tag在指定commit
git tag 2 8989920311bacb3f4e3ced7f82ab75ca47c318c7
//刪除本地tag
git tag -d 1
//查看tag信息
git show 2
//提交所有tag
git push --tags
//刪除遠程tag
git push origin --delete tag 2
//新建一個分支,指向某個tag
git checkout -b [branch] [tag]

remote 遠程

// 查看遠程庫的地址列表
git remote -v
//查看這個遠程庫的信息
git remote show origin
//  從遠程庫更新所有的信息到本地,但是不合并
git fetch origin
//從遠程庫更新所有的信息到本地,但是不合并并清理已刪除的遠程分支
git fetch -p origin
//從遠程庫更新數據并立即合并數據
git pull origin branch1
//將本地數據同步到遠程庫中
git push origin  branch1

這里我在演示一下git解決沖突,演示流程:

  1. 制造沖突
    1.1 新建分支,并切換到分支, 打開其中的一個文件修改, 保存提交


    制造沖突1

    修改

    1.2 切換到master分支,打開同一文件,在同一位置修改,保存提交


    制造沖突

    修改

    1.3 merge分支
    制造沖突

    其實還可以通過status來查看沖突文件.

  2. 解決沖突(手動解決)
    打開沖突文件,刪除<<<<<<< HEAD ======= >>>>>>> branch1這三行
    再修改成想要的,添加,提交即可。


    解決沖突

    解決沖突

    有興趣的小伙伴可以來一波喜歡和關注,有什么錯誤,歡迎指正。。。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容