版本管理工具使用总结(git,svn,hg)
目录
- git
- 一、git常用命令
- 二、git 解决 .DS_Store冲突
- 三、回朔版本
- 四、git rebase多人开发
- 五、 分支
- 六、 切换
- 七、tag 操作
- 八、 常见问题解决(提交失败、版本回溯)
- 1)提交失败
- 2)、回朔版本
- 3)、查看更改当前git用户
- Git fork vs. clone:有什么区别?
- svn
- 下载服务器代码:
- 更新:
- 提交:
- 增加文件:
- hg
- 安装
- hg 配置
- Override stock tool location
- Specify command line
- Give higher priority
- 常见错误:
- 提交流程
- 重建分支
- 提交
- 注意事件
- 分支的合并,要小心从default主分支建立
git
一、git常用命令
1提交代码
git add . //把修改的或增加的文件添加到本地库里
git commit -am “说明性文字”
git pull //从服务器上更新代码,避免覆盖别人的代码
git push //把自己修改的上传到服务器
2基本使用指令
git init 初始化git仓库
git add . 添加当前文件夹下的所有文件
git status 显示状态
git commit 提交代码
git commit -m ‘注释’ 提交代码加注释
git log 看提交记录
git push 推送
git push origin master 推送到远程master分支
git push origin ‘版本号’ 按照版本号推送到远程
git remote add origin 关联远程仓库
git tag -a ’版本’ -m ‘描述’ 打标签
git push - -tags 提交到远程
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
五、 分支
1)创建分支
git checkout -b qunye
2)切换分支
git checkout qunye
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 merge qunye
git push
六、 切换
命令:git stash
1).使用git stash保存当前的工作现场,那么就可以切换到其他分支进行工作,或者在当前分支上完成其他紧急的工作,比如修订一个bug测试提交。
2).如果一个使用了一个git stash,切换到一个分支,且在该分支上的工作未完成也需要保存它的工作现场。再使用git stash。那么stash 队列中就有了两个工作现场。
3).可以使用git stash list。查看stash队列。
4).如果在一个分支上想要恢复某一个工作现场怎么办:先用git stash list查看stash队列。确定要恢复哪个工作现场到当前分支。然后用git stash pop stash@{num}。num 就是你要恢复的工作现场的编号。
5).如果想要清空stash队列则使用git stash clear。
6).同时注意使用git stash pop命令是恢复stash队列中的stash@{0}即最上层的那个工作现场。而且使用pop命令恢复的工作现场,其对应的stash 在队列中删除。使用git stash apply stash@{num}方法除了不在stash队列删除外其他和git stash pop 完全一样。
7)查看远程分支
git branch -r
8)新建与远程分支相对应的本地分支
git checkout -b v2.9 origin/v2.9
这里的origin v2.9为远程分支,后面的v2.9为相对应的本地分支
七、tag 操作
git tag //查看版本标签
git tag -a 1.0.0 -m ‘1.0.0版本完成’ //打完tag 还是处于本地
git push --tags //本地所有tags都提交
git push origin --delete tag 1.0.4//删除远程tag谨慎使用
八、 常见问题解决(提交失败、版本回溯)
1)提交失败
样例:
zhuqunyedeMacBook-Pro:statistical-ios zhuqunye$ git push
Counting objects: 311, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (297/297), done.
error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 Request Entity Too Large
fatal: The remote end hung up unexpectedly
Writing objects: 100% (311/311), 81.70 MiB | 6.03 MiB/s, done.
Total 311 (delta 42), reused 0 (delta 0)
fatal: The remote end hung up unexpectedly
增加秘钥后提交
zhuqunyedeMacBook-Pro:statistical-ios zhuqunye$ ls ~/.ssh/
github_rsagithub_rsa.pubid_rsaid_rsa.pubknown_hosts
zhuqunyedeMacBook-Pro:statistical-ios zhuqunye$ cat ~/.ssh/github_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCh+4AQL1t4mnqYb/27EZMZQdDZchbB8Fxw0N4CVorqsE5Hc5Lxrx2i7/NqPZoFOZ2yLQUEgZ6p9iTaIJEomeRNpqWO8BD/00JN9NW2VPi6kxspNkv9gXvVE3caa0NqEhekWXAWILtLwv502QXXUL9Giy++3DQirRin7yUH/gAXi/HlWJo8hGMuy1VY02rrMcoz1Ptnau9/5eMPU5j6bZ9l0f34wKH3e6pOHq882QMmYuW5m5OculANq3UlaTw0m27woUmEfyp64q91zluJwVvYPOR7C/p9x0lru5S4e+9ZtwBlPnj7tApGhxvHFVNF8niThKxTZ8iwQejWME2UQWwL zhujunggsddu@github.com
zhuqunyedeMacBook-Pro:statistical-ios zhuqunye$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCW5GedK3Ys/DTrQ00gDiKG+Z+r/VPHcE1eLhB20WJnVjhhuOtAXomywGaTIuudafiKhCbKd4kmh0NuUaKQonBD8ljWoDYhLGXuIReT+NEUZv1U39sYv7LhirKMdUK/onN83sx7IJmRSGhAAMCsY5FEXsx+9mO8bSfap70gpyTqzQuY1UQIJxkl2UzP8MS4S29iZYFAZBL9oovkKYlFwHIIjsfpggFSMwhvjxtm6d4K83guP1R4kR7+YUepM/jUuf1ETD2UbqmthEsYfpAmhFAiDkkrTusZHeeBcUqGCYIkRVAfvcsYlYlul8DoMMLKH/7XqUToTR4dyuAdAl8dBnbT zhuqunye@sogou-inc.com
zhuqunyedeMacBook-Pro:statistical-ios zhuqunye$ git push
2)、回朔版本
git pull 拉取远程代码
reset 历史版本
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
3)、查看更改当前git用户
查看用户名和邮箱地址:
$ git config user.name
$ git config user.email
修改用户名和邮箱地址:
$ git config --global user.name “username”
$ git config --global user.email “email”
Git fork vs. clone:有什么区别?
Git fork 和 clone 都会创建存储库的副本,但它们提供对目标存储库的完全不同级别的访问、隔离和控制。
Git clone 和 fork 之间的主要区别在于,一旦复制了代码库,您希望对其进行多少控制和独立。
任何公共 Git 存储库都可以分叉或克隆。一个 fork 创建一个完全独立的 Git 存储库副本。与 fork 相比,Git 克隆会创建一个链接副本,该副本将继续与目标存储库同步。
svn
下载服务器代码:
svn co https://IP:Port/pathOfProject/trunk theUrlOfCurrentUser
更新:
- svn up
提交:
svn commit -m “do something”
增加文件:
svn add filename1 filename2…
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 = $base $local $other -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
版本管理工具使用总结(git,svn,hg)相关推荐
- Git(分布式版本管理工具)
Git(分布式版本管理工具) 1. Git 概述 1.1 什么是版本控制? 1.2 版本控制工具都有哪些 1.2.1 集中式版本控制工具 1.2.2 分布式版本控制工具 1.3 Git 简史 1.4 ...
- python模块版本管理工具_【转】Python包管理工具
Python 包管理工具解惑 本站文章除注明转载外,均为本站原创或者翻译. 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商: 本站部分原创和翻译文章提供m ...
- 代码管理工具系列介绍 Git的使用 和 Git ,Github,Gitlab,Gitee,Gitpod的区别
Git Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等. 如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概念和特征. Git ...
- idea学习系列三之版本管理工具
idea学习系列三之版本管理工具 上一篇文章主要介绍了将idea中常用的快捷键,快捷键要想熟练那就得在实际的工作中多使用,刚开始可能很麻烦经常去笔记中找,不过用多了自然就熟练了. 这篇文件将会介绍一下 ...
- 谈一谈git和SVN两大版本管理工具。
Git 和 SVN 的区别? 写在前面: git和SVN都是一个版本管理工具,没有孰优孰劣之分,在这里,只是简单的说一说git和svn的优缺点.选用哪一个看自己公司的实际情况而定. 1) 核心的区别在 ...
- 软件测试——版本管理工具:SVN和Git
软件测试--版本管理工具:SVN和Git SVN SVN的安装和介绍 SVN的安装 操作 冲突 Git Git的安装和配置 git的命令行用法 git 代码冲突 持续集成和持续交付 定义 目的 持续集 ...
- Git——版本管理工具(一)
Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介绍 Git -- The stupid content tracker(傻瓜式的内容跟踪器) 1. Git 背 ...
- 版本管理工具-Git
版本管理工具-Git 在我们学习编程的时候,一个项目的代码量很多,同事之间各司其职,这个时候统一项目的代码,完善项目的流程就非常重要了,像Git,Svn都是非常棒的项目管理工具,以下总结一下相关的简单 ...
- 《Git》版本管理工具的初识与入门
前言 我所在的公司一直是使用svn作为版本管理工具,因此我没有接触过git,但是不管如何git作为目前大火的版本管理工具,了解并掌握是很有必要的,因为你不能确定下一家公司使用的是svn还是git作为版 ...
最新文章
- Mysql使用trigger触发器说明
- 如何在Python中捕获SIGINT?
- curl 探测java网站_使用cURL查找网站重定向的位置?
- 聊聊 MySql 索引那些事儿
- php中如何写js代码提示_PHP 如何编写类似js中alert() 提示框
- mysql etc my.cnf_mysql配置文件 /etc/my.cnf 详细解释
- php扩展实现hook,ThinkPHP3.2 扩展(钩子,HOOK)
- 《Python Cookbook 3rd》笔记(5.19):创建临时文件和文件夹
- Flutter PageView 实现的自动轮播图效果 Timer实现的自动轮播效果
- 信捷步进指令的使用_电工想做PLC工程师?那步进电机的编程控制指令你一定要了解...
- 多年软件测试大牛分享成长经历,一个好的软件测试工程师应该做到这些!
- 再谈WinRT自定义组件的开发
- netty nio处理
- css中margin标记可以带一个、二个、三个、四个参数,各有不同的含义
- Ifc 人工解析——拿墙IfcWallStandardCase来举例说明
- 怎么删除服务器的ibd文件,mysql数据库ibd文件
- hive hue 中文乱码的问题
- java时区和时间的关系_Java 时间、日期与时区的关系
- 扬州大学c语言作业,扬州大学c语言0600706期末试题
- java动物识别_java编写的专家系统(人工智能)动物识别
热门文章
- Apache和php安装
- 【晶振专题】案例:为什么对着STM32低速32.768K晶振哈口气就不起振了?
- 鼓励参与期货市场套期保值
- 同IP反查域名的原理
- 进化:从孤胆极客到高效团队_极客历史记录的本周:Gmail公开,国际象棋获得深蓝胜利以及托马斯·爱迪生的诞生...
- 计算机课程成绩折算成百分制,百分制的分数怎么折算为GPA成绩
- Spark的性能优化案例分析(下)
- 蓝汛CEO推动CHN-IX发展,为互联网行业增效减负
- 关于阳明学“心即理”的浅显理解
- 测试软件jm,JM3818无线静态应变测试分析系统