之前公司项目一直在使用SVN作为项目代码版本控制,最近我想整理下项目中iOS端CC视频SDK封装,CC移动端SDK本身只提供视频播放信息以及播放器初始化,因此需要自定义播放器的控制逻辑。当整理好了代码准备分享时,发现还是Git才是版本控制的王道。
首先,要使用Git需要在GitHub上注册一个自己的账号
初始账号默认只能免费创建公共仓库,首先Create a New Repository
第二部,下载安装GitHub客户端
Mac版GitHub
Windows版GitHub
Linux版GitHub
桌面版GitHub
配置Git
以下为在Mac环境上配置Git。
想要通过本地上传代码至GitHub中,必须得有一份ssh key用于验证身份。
创建ssh key:
$ ssh-keygen -t rsa -C "example@youremail.com"
example@youremail.com修改为GitHub上注册的邮箱,之后要求确认路径和密码,三次回车即可。
$ open ~/.ssh
创建ssh文件后,进入~/.ssh文件夹,会有id_rsa和id_rsa.pub两个文件。id_rsa为私钥,自己保存好;id_rsa.pub为公钥,用于提供给他人使用。
打开id_rsa.pub后复制全部内容,在GitHub中,创建SSH时,title可随意填写,key为id_rsa.pub内的复制内容。完成后,还需要输入:
$ ssh -T git@github.com
如果是第一次会提示是否continue,输入yes就会看到:You've successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github
此时GitHub中的ssh key左侧的钥匙图标会变为绿色。
此外,还需要配置GitHub全局的用户名与邮箱。
$ git config --global user.name "Your Name"
$ git config --global user.email "example@youremail.com"
在GitHub创建完项目时,GitHub会提示如何创建新仓库与push已存在的仓库。
因为是将已有的项目文件第一次上传,所以,首先进入项目路径下,并创建一个README.md文件
$ touch README.md
$ git init
$ git add *
$ git commit -m "此处可添加提交代码相关的注释"
$ git remote add origin https://github.com/yourUserName/repositoryName.git
$ git push -u origin master
上述命令中,分别作用为:
- 在项目中创建README.md文件;
- 初始化git仓库;
- 向git添加所在目录下的所有文件;
- 添加提交说明;
- 添加一个新的仓库并连接到指定的远程服务器上,https://github.com/yourUserName/repositoryName.git就是在GitHub上创建仓库的URL;
- 推送提交项目中的改动至远程服务器,master可以修改为想要推送的任意分支,此处master为默认分支。
此时,已经把项目上传到了GitHub指定的远程仓库中,目的完成。
工作流程
Git本地仓库实际上由三个tree组成,1.工作目录,持有实际文件 2. 暂存区,临时保存改动 3. HEAD,指向最后一次提交的结果
$ git add (文件名)
上述命令表示本地提出更改,添加至暂存区
$ git commit -m "代码注释信息"
上述命令表示改动已提交至HEAD,当改动在HEAD中时就可执行以下命令提交推送至远端仓库:
$ git push origin (指定分支名称)
克隆
创建本地仓库的克隆版本:
$ git clone /path/to/repository
创建远端服务器上的克隆版本:
$ git clone username@host:/path/to/repository
分支
创建仓库时,默认只有master分支,创建其它分支后可在分支上开发,完成后合并到主分支上。
创建名为“feature”并切换到该分支:
$ git checkout -b (分支名)
切换其它分支:
$ git checkout (分支名)
删除分支:
$ git branch -d (分支名)
更新
多人开发时,在push前一定要先更新本地仓库至最新改动,避免许多不必要的冲突:
$ git pull
合并,将指定分支合并到当前分支中:
$ git merge (指定要合并分支名)
在合并过程中,会出现Fast-forward词。出现此情况时,当前所在分支所指向的是要提交合并分支的直接上游,当试图合并两个分支时,若顺着一个分支能够到达另一分支,Git只会将指针向前推进,合并操作中没有解决的分歧。合并完成后,可以删除之前被合并的分支。
当合并遇到冲突时,查看因包含冲突而处于未合并状态的文件:
$ git status
当解决掉冲突之后,需要使用git add (指定文件)来将其标记为冲突已解决。
合并改动之前,可以用命令浏览版本差异:
$ git diff (原分支) (目标分支)
标签
将发布的版本进行标签标记:
$ git tag 1.1.1 xxxxxxxxxx
xxxxxxxxxx是要标记的提交ID,可使用以下命令获取:
$ git log
撤销本地改动
$ git checkout --(filename)
会将HEAD中的最新内容替换掉当前工作目录中的内容,已添加到暂存区的改动以及新文件不受影响
若想放弃所有改动和提交,可将远端仓库中的版本获取至本地,并将主分支指向它:
$ git fetch origin
$ git reset --hard origin/master
该文章首次发表在 简书:我只不过是出来写写代码 博客,并自动同步至 腾讯云:我只不过是出来写写iOS 博客