版本管理工具使用总结(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