设为首页 收藏本站
查看: 943|回复: 0

[经验分享] git的基本介绍和使用

[复制链接]

尚未签到

发表于 2018-1-15 12:30:49 | 显示全部楼层 |阅读模式
  前言:从事iOS开发一年多以来,一直使用svn管理源代码。对svn的特点和弊端已经深有体会。前些天双十二前后,项目工期紧张到爆,起早贪黑的加班,可谓披星戴月,这还不止,回到家中还要疯狂的敲代码。那么问题来了,公司svn服务器是内网服务器,在家里无法访问,提交/更新代码就成了问题。跟技术总监(笔者公司为初创型小公司,直接和技术总监对话)沟通后,技术总监同意了把svn服务器改为外网服务器。但是,这并不是好的解决办法,毕竟svn服务器挂到外网上,从安全性上总是说不过去。于是乎,git成了我心中取代svn的上上策。昨天上班开会就跟CTO提出使用git管理代码的建议,他也愉快的答应了。
  但是,多数人对git并没有像对svn这般了解,所以,针对于git和svn的特点和区别,我希望能够通过这篇文章拨开大家心中的疑惑。

简介
  git是一款开源的分布式版本管理工具,git的诞生也是相当传奇的,由Linux之父-Linus Benedict Torvalds开发而来,当初Linus Benedict Torvalds仅仅是为了辅助Linux内核的开发才一并开发了这个至今为止世界上最快的、最简单的版本管理工具。关于这个传奇的故事,笔者就不在此赘述。
  目前,git虽然很流行,但也仅仅是在国外。在国内,多数公司还在使用svn进行版本控制,不过不用担心,据笔者所知,已经有很多大公司(像BAT这样的互联网公司)开始由svn转向git。并且,越来越多的开源项目已经转移到git,很多开源网站上的代码就是git来管理的,所以git取代svn是大势所趋的。

git的特点
  前面已经说过,git是一款开源的分布式版本管理工具。相对于分布式,还有一种集中式,集中式版本管理工具的杰出代表就是svn。关于svn的详细介绍,读者可以查看笔者之前写过的几篇文章:http://www.cnblogs.com/wsnb/p/4765597.html   http://www.cnblogs.com/wsnb/p/4771379.html
  如下两张图,可以概括分布式和集中式管理工具的架构,图(1)为分布式版本管理工具架构,图(2)为集中式管理工具架构。

  我们修改或者新添加的文件起初是处于工作区,通过git add命令可以把工作区的文件移动到版本库中的暂缓区(stage)。
  处在暂缓区(stage)的代码可以通过git commit -m “提交的注释” 提交到版本库中的分支(master)。
  处在分支(master)中的代码可以通过git push命令push到共享版本库。
  注意:只有分支中的文件才可以push到共享版本库。

git常用命令
  

1.初始化一个代码仓库  
git init
  

2.如果使用git必须给git配置一个用户名和邮箱  
给当前的git仓库配置一个用户名和邮箱
  
git config user.name “ws”
  
git config user.email “ws@
163.com”  
配置一个全局的用户名和邮箱
  
git config --global user.name “ws”
  
git config --global user.email “ws@
163.com”  

3.初始化项目  
touch main.m : 创建了main.m
  
git add main.m : 将新添加的文件或者修改的文件添加到暂存区
  
git commit
-m “初始化项目”  
git add . : 将所有没有被添加到暂存区或者代码仓库的文件添加到暂存区
  
注意:无论是新添加的文件或者修改的文件,都需要先通过add命令添加到暂存区中,之后再通过commit命令添加到本地仓库中
  

4.查看文件的状态 git status  
红色 : 新创建的文件或者被修改的文件,没有被添加到暂存区
  
绿色 : 表示文件在暂存区,但是没有被添加到本地仓库中
  

5.给命令起别名  
git config alias.st “status”
  
git config alias.ci “commit
-m”  
git config --global alias.st “status”
  

6.git删除文件  
git rm 文件名
  

7.查看版本号  
git log
  
git reflog
  
git config
--global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit”  
git lg
  
8.git的版本号是由sha1算法生成40位的哈希值
  
9.版本回退
  
git reset --hard HEAD : 回退到当前的版本
  
git reset --hard HEAD^ :  回退到上一个版本
  
git reset --hard HEAD^^ : 回退到上上个版本
  
git reset --hard HEAD~100 : 回退到前100版本
  
git reset --hard 版本号(前5位)
  




  •   用户名和邮箱地址的作用
      用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变。
      每次commit都会用用户名和邮箱纪录。
      github的contributions统计就是按邮箱来统计的。

  •   查看用户名和邮箱地址:
      

    $ git config user.name  

      
    $ git config user.email
      

      


  •   修改用户名和邮箱地址:
      

    $ git config --global user.name "username"  

      
    $ git config --global user.email "email"
      


  • 每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录.
  • 用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。


初始化共享版本库
  真实的git服务器的搭建是非常繁琐且复杂的,并且git服务器只能搭建在Linux系统上。笔者对git服务器的搭建不做介绍,日后有时间再加以补充。在此仅对共享版本库的搭建进行详细介绍。

文件夹作为共享版本库
  

1.创建共享版本库文件夹,然后终端进入该文件夹下执行以下命令创建一个空的共享版本库  
git init --bare
  

2.项目经理将共享版本库的内容先下载下来,命令后面的地址即为共享版本库所在服务器的地址+路径  git clone 地址
  

3.添加需要忽略的文件  
touch .gitignore
  
去github上搜索.gitignore
->Objective-C,把Objective-C中的内容粘贴到创建的.gitignore文件中(或者直接把github中的Objective-C文件下载到该目录下)。然后执行以下命令  
git add .gitignore
  
git commit
-m “添加了需要忽略的文件”  

4.项目经理初始化项目  
git commit
-m “初始化项目”—>提交到本地代码仓库  

5.将项目push远程仓库中  
git push origin
  

6.当源代码管理是使用git,并且在Xcode进行多人开发的操作  
注意:当使用git,项目中用到了静态库就不需要通过命令行进行添加
  


git版本备份
  

1.1.0版本开发完成,之后对1.0版本进行备份  
git tag
-a weibo1.0 -m “这个是1.0版本” : 给某一个版本打上标签(weibo1.0是标签名称)  
git tag : 查看所有的标签
  

2.需要将1.0版本的标签,push到服务器  
git push origin weibo1.
0  
3.继续开发2.0版本
  
4.发现1.0版本有bug,从标签里面clone 1.0版本,从标签创建一个fixbug分支,在分支中修复bug
  
git clone 共享版本库
  
git checkout weibo1.0(标签的名称)
  
git checkout -b weibo1.1fixbug(分支名称)
  
5.修复后的版本上传AppStore/将1.0fixbug进行备份/将1.0fixbug版本和2.0版本进行合并\
  
git tag -a weibo1.1 -m “这个是修复了1.0版本bug的1.1版本”
  
git tag
  
git push origin weibo1.1
  
将子分支中代码合并到主分支,pull—>weibo1.1fixbug—>push master—>其它同事更新
  
6.删除分支
  
git branch -r(r是远程仓库的意思,这个命令可以查看远程仓库中的分支)
  
git branch -r -d 分支名称
  

  以上主要介绍了git的原理和如何用命令创建一个代码仓库,关于如何使用第三方git服务器托管代码,请见下一篇文章。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-435316-1-1.html 上篇帖子: 聊下git pull --rebase 下篇帖子: git merge 合并分支 [转]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表