iOS 记录之 Git介绍篇 - Go语言中文社区

iOS 记录之 Git介绍篇


阐述
正如每只猴子都有一根尾巴,每个程序猿都有一个GitHub账号。但是很多人只是有之而不是尽之,Git、GitHub、SVN这些概念都没有理清,故理之录之。(此篇为介绍篇,指令使用部分没有详细介绍)


初探

Git


一个免费并且开源的版本控制系统,用于敏捷高效地处理任意或小或大的项目。


GitHub
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。
因在Git中并不存在主库这样的概念,每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。
GitHub作为一个托管平台,保存着大量的版本库,这些库可以变相的看成主库(只是一种叫法)。


了解 Git 与 SVN
开发者一般对SVN比较熟悉,那我们就从SVN旁敲侧击。
Git             分布式版本库控制系统
SVN           集中式版本库控制系统


Git 与 SVN 比较
速度: 很多情况下,Git速度高于SVN
结构: SVN是集中式管理,Git是分布式管理
其它: SVN使用分支比较笨拙,Git可以轻松拥有无限个分支
            SVN必须联网才能正常工作,Git支持脱机版本控制工作
            旧版本的SVN会在每一个目录下放一个.svn,Git只会在根目录中拥有一个.git
Tip:
.svn 和 .git 在系统中一般都以隐藏文件夹的形式展现 。
macOS 显示隐藏文件:  $ defaults write com.apple.finder AppleShowAllFiles -bool true
macOS 隐藏隐藏文件:  $ defaults write com.apple.finder AppleShowAllFiles -bool false
macOS 显示/隐藏文件快捷键  CMD + Shift + .


SVN (集中式版本库控制系统概念图)


GIT (分布式版本库控制系统概念图)


分布式和集中式的最大区别在于:
在分布式下开发者可以本地提交,每个开发者机器上都有一个服务器的数据库,拥有一个本地的代码库。
在集中式下开发者只能向远程主仓库提交,每个开发者机器上拥有的只是本地的代码库,以及版本快照。


SVN工作示意图

GIT工作示意图


Git的使用
-  图形界面(Mac)
     SourceTree      https://www.sourcetreeapp.com/download/
     GitHub             https://desktop.github.com/
     Xcode
-  Terminal终端 使用Git命令
   Terminal环境 参考官方说明 https://git-scm.com/book/zh/v2/起步-安装-Git

工作原理
远程仓库(remote): 分库(除本机的版本库)
工作区(Working Directory): 仓库文件夹里除.git目录以外的内容
版本库(Repository): .git目录,用于存储记录版本信息
- 暂缓区(stage)
- 分支(master):git自动创建的第一个分支
- HEAD指针:用于指向当前分支


Git 常用命令 
git help                                            git指令帮助手册
git help 其它指令                            查看其它指令帮助手册
git init                                              初始化一个空的本地代码仓库
git init - - bare                                 初始化一个代码共享库
git config 相关 (git的配置信息相关(修改的是 .git/config文件))
git config user.name “Levis”                          管理当前项目Git中的提交用户 name
git config user.email “levis@gmail.com”        管理当前项目Git中的提交用户邮箱
git config -l                                                     查看配置信息
git config -e                                                    编辑配置信息
git config alias.别名 原指令名                         给Git 命令起别名
git config - -global
git status [文件名]                                            查看文件的状态
git diff [文件名]                                                 查看文件最新修改的地方
git add .                                                           将工作区所有的文件添加到暂缓区中
git add 文件名                                                   将指定的文件添加到暂缓区中
git commit -m “注释”                                       将暂缓区的文件提交到本地版本库当前分支

git reset 版本回退(建议加上 - - hard参数)
回退到上一个版本:git reset - - hard HEAD^
回退到上上一个版本:git reset - - hard HEAD^^
回退到上N个版本:git reset - - hard HEAD~N
回退到任意一个版本: git reset - -hard 版本号(7位)

git log [文件名]                                                    查看当前[文件]历史版本
git relog                                                             查看当前项目所有版本
git 版本号是由sha1加密算法生成的一个40为的哈希值
git rm 删除文件
git clone 仓库URL                                 下载远程仓库到当前路径
git clone 仓库URL 存放仓库的路径       下载远程仓库到特定路径
git pull                                                   下载远程仓库的最新信息到本地仓库
git push                                                  将本地的仓库信息推送到远程仓库


git add 和 git commit 原理
+ git add :把文件修改添加到暂存区
+ git commit : 把暂存区的所有内容提交到当前分支





远程仓库
+ 自己搭建Git服务器
+ GitHub上托管项目: 公开项目免费,私有项目收费
+ oscina上托管项目:完全免费,在国内访问速度快


GitHub上创建项目


搭建远程仓库 - - 配置SSH Key
- 配置Mac的SSH Key的公钥(用于限制提交)
- ssh -v 查看ssh版本
- 生成SSH Key 
- cd ~/.ssh
- ssh-keygen -t rsa -C “你的邮箱地址”
- 根据提示 进行输入
- 在 ~/.ssh目录下会生成 SSH Key秘钥对
- id_rsa:私钥,不可泄露
- id_rsa:公钥,可以公开,放置GitHub配置中
- cat id_rsa.pub 使用cat命令查看文件的内容

参考资料
https://git-scm.com
http://www.ruanyifeng.com/blog/2014/06/git_remote.html

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/yanglei3kyou/article/details/78672614
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-09-05 17:56:32
  • 阅读 ( 1951 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢