目录

  • 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)、回朔版本

  1. git pull 拉取远程代码

  2. 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)相关推荐

  1. Git(分布式版本管理工具)

    Git(分布式版本管理工具) 1. Git 概述 1.1 什么是版本控制? 1.2 版本控制工具都有哪些 1.2.1 集中式版本控制工具 1.2.2 分布式版本控制工具 1.3 Git 简史 1.4 ...

  2. python模块版本管理工具_【转】Python包管理工具

    Python 包管理工具解惑 本站文章除注明转载外,均为本站原创或者翻译. 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商: 本站部分原创和翻译文章提供m ...

  3. 代码管理工具系列介绍 Git的使用 和 Git ,Github,Gitlab,Gitee,Gitpod的区别

    Git Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等. 如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概念和特征. Git ...

  4. idea学习系列三之版本管理工具

    idea学习系列三之版本管理工具 上一篇文章主要介绍了将idea中常用的快捷键,快捷键要想熟练那就得在实际的工作中多使用,刚开始可能很麻烦经常去笔记中找,不过用多了自然就熟练了. 这篇文件将会介绍一下 ...

  5. 谈一谈git和SVN两大版本管理工具。

    Git 和 SVN 的区别? 写在前面: git和SVN都是一个版本管理工具,没有孰优孰劣之分,在这里,只是简单的说一说git和svn的优缺点.选用哪一个看自己公司的实际情况而定. 1) 核心的区别在 ...

  6. 软件测试——版本管理工具:SVN和Git

    软件测试--版本管理工具:SVN和Git SVN SVN的安装和介绍 SVN的安装 操作 冲突 Git Git的安装和配置 git的命令行用法 git 代码冲突 持续集成和持续交付 定义 目的 持续集 ...

  7. Git——版本管理工具(一)

    Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介绍 Git  -- The stupid content tracker(傻瓜式的内容跟踪器) 1. Git 背 ...

  8. 版本管理工具-Git

    版本管理工具-Git 在我们学习编程的时候,一个项目的代码量很多,同事之间各司其职,这个时候统一项目的代码,完善项目的流程就非常重要了,像Git,Svn都是非常棒的项目管理工具,以下总结一下相关的简单 ...

  9. 《Git》版本管理工具的初识与入门

    前言 我所在的公司一直是使用svn作为版本管理工具,因此我没有接触过git,但是不管如何git作为目前大火的版本管理工具,了解并掌握是很有必要的,因为你不能确定下一家公司使用的是svn还是git作为版 ...

最新文章

  1. Mysql使用trigger触发器说明
  2. 如何在Python中捕获SIGINT?
  3. curl 探测java网站_使用cURL查找网站重定向的位置?
  4. 聊聊 MySql 索引那些事儿
  5. php中如何写js代码提示_PHP 如何编写类似js中alert() 提示框
  6. mysql etc my.cnf_mysql配置文件 /etc/my.cnf 详细解释
  7. php扩展实现hook,ThinkPHP3.2 扩展(钩子,HOOK)
  8. 《Python Cookbook 3rd》笔记(5.19):创建临时文件和文件夹
  9. Flutter PageView 实现的自动轮播图效果 Timer实现的自动轮播效果
  10. 信捷步进指令的使用_电工想做PLC工程师?那步进电机的编程控制指令你一定要了解...
  11. 多年软件测试大牛分享成长经历,一个好的软件测试工程师应该做到这些!
  12. 再谈WinRT自定义组件的开发
  13. netty nio处理
  14. css中margin标记可以带一个、二个、三个、四个参数,各有不同的含义
  15. Ifc 人工解析——拿墙IfcWallStandardCase来举例说明
  16. 怎么删除服务器的ibd文件,mysql数据库ibd文件
  17. hive hue 中文乱码的问题
  18. java时区和时间的关系_Java 时间、日期与时区的关系
  19. 扬州大学c语言作业,扬州大学c语言0600706期末试题
  20. java动物识别_java编写的专家系统(人工智能)动物识别

热门文章

  1. Apache和php安装
  2. 【晶振专题】案例:为什么对着STM32低速32.768K晶振哈口气就不起振了?
  3. 鼓励参与期货市场套期保值
  4. 同IP反查域名的原理
  5. 进化:从孤胆极客到高效团队_极客历史记录的本周:Gmail公开,国际象棋获得深蓝胜利以及托马斯·爱迪生的诞生...
  6. 计算机课程成绩折算成百分制,百分制的分数怎么折算为GPA成绩
  7. Spark的性能优化案例分析(下)
  8. 蓝汛CEO推动CHN-IX发展,为互联网行业增效减负
  9. 关于阳明学“心即理”的浅显理解
  10. 测试软件jm,JM3818无线静态应变测试分析系统