版本管理工具使用總結(git,svn,hg)


git

一、git常用命令

1提交代碼 
git add .         //把修改的或增加的文件添加到本地庫里 
git commit -am “說明性文字” 
git pull           //從服務器上更新代碼,避免覆蓋別人的代碼 
git push         //把自己修改的上傳到服務器
2查看狀態 
git status
3解決沖突 
當自己和別人同時修改了工程文件*.xcodeproj,在執行git pull時會提示發生沖突。解決的辦法為: 
進工程目錄,右擊*.xcodeproj –>顯示包內容,出現project.pbxproj文件、project.xcworkspace文件和xcuserdata文件jia; 
雙擊打開project.pbxproj,將此文件里面所有保含沖突標志的行全部整行刪掉 
(沖突標志有3種:>>>>>>>>, ========和<<<<<<<<,單擊鼠標左鍵3次即可選中整行); 
打開工程,執行以下3個命令: 
git commit -am “solute confilcts” 
git pull (這是簡寫,完整的命令為git pull origin master) 
git push (這是簡寫,完整的命令為git push origin master)
4放棄本地修改 
git reset –hard
5 分支 
1)創建分支 
git checkout -b haishu 
2)切換分支 
git checkout haishu 
git checkout master 
3)查看本地分支 
git branch 
4)查看所有分支 
git branch -a 
5)刪除本地分支 
git branch -d haishu(此命令不能刪除當前分支,要先切換到其他分支,比如git checkout master) 
6)合並分支,比如haishu合並到master 
git checkout master 
git pull(完整命令為git pull origin master) 
git merge haishu 
git push(完整命令為git push origin master) 
7)查看遠程分支 
git branch -r 
8)新建與遠程分支相對應的本地分支 
git checkout -b v2.9 origin/v2.9 
這里的origin v2.9為遠程分支,后面的v2.9為相對應的本地分支

二、git 解決 .DS_Store沖突

1//進根目錄 cd  
2//刪除所有.DS_Store 
find . -depth -name ‘.DS_Store’ -exec git-rm —cached ‘{}’ \; -print  
3//在.gitignore添加忽略文件 
vim .gitignore  添加一行  .DS_Store 並保存 
4// pull確保提交的代碼沒有  .DS_Store 然后提交

三、回朔版本

1.git pull 拉取遠程代碼 
2.reset 歷史版本 
   •   HEAD指向的版本就是當前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset –hard commit_id。 
   •   穿梭前,用git log可以查看提交歷史,以便確定要回退到哪個版本。 
   •   要重返未來,用git reflog查看命令歷史,以便確定要回到未來的哪個版本。

四、git rebase多人開發

1.git checkout Dev/git pull  
2.git checkout yourDev 
3.git rebase/git add ./git commit  
4.git checkout Dev/git merge  yourDev

svn

下載服務器代碼:svn  co  https://IP:Port/pathOfProject/trunk theUrlOfCurrentUser 
更新:svn up 
提交:svn commit -m “do something” 
增加文件:svn add filename1 filename2…
解決 Xcode 4 刪除文件后 missing file 警告

hg

安裝

sudo easy_install mercurial 
然后輸入管理員密碼,自動下載並安裝

hg 配置

進入 
vim ~/.hgrc 
按i進入編輯狀態,輸入下面的信息,把賬號給成自己的 
按esc 然后輸入 :wq保存並退出編輯
*[ui] 
username = yourUsername 
merge = kdiff3 
[auth] 
repo.prefix = https://hgcode.yonyouup.cn/ 
repo.username = yourUsername 
repo.password = yourPassword 
[hostfingerprints] 
hgcode.yonyouup.cn = F0:2B:9B:39:2F:06:82:D1:F8:FF:A2:64:82:A6:78:B4:66:A1:C9:61 
[tortoisehg] 
vdiff = kdiff3 
[extensions] 
fetch= 
hgext.extdiff = 
[extdiff] 
cmd.kdiff3 = 
[merge-tools]

Override stock tool location

kdiff3.executable = /Applications/kdiff3.app/Contents/MacOS/kdiff3

Specify command line

kdiff3.args = basebase local other−oother -o output

Give higher priority

kdiff3.priority = 1*
點esc  冒號wq

常見錯誤:

如果多修改,然后就可以用hg更新源代碼了
例如:
hg clone https://code.google.com/p/core-plot/
hg branch  顯示當前使用分支
hg branch liujing_dev_email
hg ci -m”new branch liujing_dev_email”
hg push —-new-branch
hg pull  https://thePathOfYourCode //拉其它人的代碼
新的代碼分支  https://thePathOfYourCode -b release1.0.3

常用命令

hg merge zjb_dev 將分支合並到本地
hg merge    release1.0.3
hg ci -m “merge from zjb_dev” 提交合並結果
hg push    推到服務器上
hg revert file.xxx  恢復服務器上的文件到本地,覆蓋掉本地文件
hg revert —all  用服務器上的版本完全覆蓋本地
hg st  查看代碼更改狀態
hg diif 查看代碼變更詳情

提交流程

hg add
hg ci -m “用戶設置修改”
hg st
hg push

重建分支

hg branch release1.0.3_wyz_yijianfankui     release1.0.3_wyz_Email
hg push —-new-branch

提交

hg ci -m ‘release 1.0.3 branch’
hg revert + 路徑    回復原狀不提交
hg remove tesn/image/首頁/.DS_Store -f  刪除文件
rm + 路徑  刪除本地文件   
rm tesn/controllers/UIMainNavigationViewController.m.orig

注意事件

提交之前先ci -m”update“
拉取別人代碼:pull https://hgcode.yonyouup.cn/mobile/ios_zhangjinbo -b some_dev_version
拉取之后合並:hg merge some_dev_version
合並之后查看:hg st
再提交:hg ci -m”mergeFrom zjb_dev_1.0.3”
再查看:hg st
最后push到服務器: hg push
成功之后提示類似於:r123:9aa725d1367c
出現!  表示之前的文件已經刪除  hg addremove之后就可以

分支的合並,要小心從default主分支建立

合並分支
根據 Hg 的設計特征, Hg 似乎是不推崇創建大量分支來作為開發手段,其中一個很重要的特性就是沒有刪除分支這一功能!所有分支只能關閉,或者任由其存在。
如果實在要合並某一個以后不再使用的開發分支,有一個變通的方式。簡單的說就是:
update 到需要關閉的分支 needCloseBranch 
關閉 needCloseBranch 分支 
update 到需要合並后保留的分支 default 
合並 needCloseBranch 到 default 
最終 needCloseBranch 這個分支並不會真正消失,不過在默認情況(不顯示已關閉分支)下是看不到的
以下是命令行的范例(支持 hg 2.x 版本)
hg update needCloseBranch 
hg commit –close-branch #關閉功能在 TortoiseHg 是沒有的,只能在命令行操作
hg update default
hg merge needCloseBranch


免責聲明!

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



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