打开终端:
查看Git的版本的终端命令:git —version
输入:ssh
查看是否已经存在ssh.
如果存在,先将已有的ssh备份,或者将新建的ssh生成到另外的目录下
如果不存在,通过默认的参数直接生成ssh
生成过程如下:
ssh-keygen -t rsa -C [email protected](注册Github时的email)
在github中添加ssh(如图示:)
登录github,选择Account Settings—>SSH Keys添加ssh
Title:邮箱
Key:打开你生成的id_rsa.pub文件,将其中的内容拷贝至此。
打开终端,先测试一下你的账号跟github连上没有:ssh -T [email protected]
如果出现一下提示,表示你已经连接上了。
接下来就可以上传你的代码了,在github下建立自己的Repository。Create a new Repository如下:
Repository name:通常就写自己要创建的工程名。
Description:就是你对工程的描述了。
选择Public
点击“Create resposity”,出现如下图:
按照上面的步骤来就可以了(注意记得在终端中输入时把目录切换到你要长传的工程目录下)
touch README.md //新建一个记录提交操作的文档
git init //初始化本地仓库
git add README.md //添加文件或者文件夹(需要多次使用以添加文件在Github上)
git commit -m “First commit” //提交到仓库,并写一些注释。
git remote add origin [email protected]:youname@工程名.git //连接远程仓库并创建了一个名为:origin的别名。
git push -u origin master //将本地仓库的东西提交到地址是origin得地址,master分支下。
使用命令行提交代码
相关功能开发完毕之后,切记使用 show diff 操作检查代码避免修改了不必要的代码。
1
2gitshowdiff
检查代码之后,使用命令 git add . 把新添加的文件或者改动加入 git 暂存区。
1
2gitadd.
如果已经把改动增加到暂存区后,使用 show diff 不会再有提示,此时可以使用
1
2gitshowdiff--cached
提交代码,使用命令
1
2gitcommit-m"注释内容"
推送到远程仓库,使用命令
1
2gitpushorigin本地分支:远程分支
此时可到远程仓库验证新分支。
使用 Xcode 提交代码
新建分支后对代码进行的操作都是本地的,多人合作开发时还需要提交到远程仓库。提交代码分两步,先 commit 后 push。这两步有什么区别,我们分别来看看。
push without commit
进入Source Control 菜单,直接选择 push
在弹出的窗口中选择需要 push 到的分支,push 成功后会有提示。
此时进入你的远程仓库查看,比如 GitLab,会发现没有新的代码加入。
push with commit
进入Source Control 菜单,先选择 commit。
在弹出的窗口中我们可以看到当前代码和之前的代码间的差异,确认没问题后在下方的输入框中填写 commit message 后点击 Commit,不输入 commit message 是无法提交 commit 的。
回到上一步进行 push 操作,此时再进入远程仓库查看,会发现已经有新的代码加入。
区别
在我看来 commit 是一个仓库,我们把代码先全部存储到这个仓库中。进行 push 操作就像把仓库中的代码运输到远程仓库中。所以 commit 和 push 缺一不可。
[iOS] 切换 Git 分支
/Git/iOS 项目使用 Git 的流程/[iOS] 切换 Git 分支
2016年2月23日
冯陈明
iOS 项目使用 Git 的流程
使用 Git 切换分支
使用 Git 命令切换分支主要用到以下两个命令:
1
2
3-gitcheckout分支名
-gitcheckout-b分支名
命令中的-b用于创建分支。使用下图的例子来解释:
查看分支
下载远程仓库中的 development 分支并切换到该分支。
查看分支,可知已经切换到新下载的 development 分支。
此时用的 checkout 命令包含-b,提示已经存在 master 分支,说明-b用于创建 branch。
切换分支
查看分支,可知已经切换到 master 分支。
使用 Xcode 切换分支
在 Xcode 上方的菜单栏中,点击 Source Control 菜单,进入对应的子菜单选择 Switch to Branch,选择想要进入的分支后点击 Switch,切换成功后会有如下提示。
注意:如果对当前分支做了修改,切换其他分支前会提示要先进行 commit 操作。
使用 Git 查看分支
查看分支
查看本地分支命令如下:
1
2gitbranch
查看本地和远程分支命令如下:
1
2gitbranch-va
图中 上面两个为本地分支,其中有 * 前缀的意味着当前所处分支。remotes/ 前缀的为远程仓库中的分支。
更多关于 Git 分支命令请查阅:Git 分支 – 分支的管理
注意:需要 cd 到项目路径下才可执行一系列 git 命令。
使用 Xcode 查看和管理分支
查看当前分支
在 Xcode 上方的菜单栏中,点击 Source Control 菜单,在弹出的菜单中即可看到当前分支。
管理分支
如下图所示,点击 Configure xxx(即项目名)子菜单
在弹出的窗口中选择 Branches 标签即可查看当前项目的所有本地和远程分支
选择其中一个 Local Branches,单击窗口左下角的 “-” 号会弹出提示框,确认删除后选择 Delete Branch 即可删除本地分支。
Git 分支概述
从上文查看全部远程分支一步的截图可以看到,此演示项目有多个分支:
development:该分支代码主要用于 Development 环境(服务器项目)或打测试包(Android 或 iOS 项目);
master:该分支主要用于 Production 环境(服务器项目)或打正式包(Android 或 iOS 项目);
其他分支:基于 development 分支衍生的 feature 分支。
所谓的 A 分支衍生 B 分支、基于 A 分支创建 B 分支,其实就是把 A 分支的代码完全复制一份,并将其命名为 B。
在 Gitlab 上创建
打开项目首页,按照下图所示操作
进入创建分支页面,按图示输入后点击 CREATE BRANCH 按钮。
此时已经在远程仓库新建分支
此时再使用 Pull 操作即可更新本地的 git 仓库,再切换到该分支即可。
在本地创建
使用命令行操作
先检查当前分支
1
2gitbranch
切换到基础分支,即要基于哪个分支开发
1
2gitcheckout基础分支名
使用命令行新建分支
1
2gitbranch新分支名
切换到新分支并进行功能开发
使用 Xcode 新建分支
在 Xcode 上方的菜单栏中,点击 Source Control 菜单,进入对应的子菜单选择 New Branch,输入想要建立的分支名后点击 Create 即可。
需要注意的是新分支的代码是建立在当前的分支基础上的,所以创建新分支前请留意当前所处分支。
使用 Git 命令合并分支
确认当前分支为自己的功能分支
确认的缘由是因为工作中我们会因各种原因需要切换到其他分支查看或修改代码,经常会有人忘记切回自己的功能分支,最后在错误的分支执行了一系列的代码更新、提交、合并等操作。
具体命令行在[iOS] 查看 Git 分支一文中做过详细介绍,此文不再赘述,如忘记可翻阅此文。
执行 git fetch 及 git merge 命令
多人协作的 Git 项目的远程分支经常会被更新,为了减少代码冲突,每次 merge 操作前都进行一次 Fetch 及 Mrege 操作,能减少很多不必要的问题。
命令行如下:
1
2
3gitfetchorigin// 抓取远程仓库更新
gitmergeorigin/远程分支// 将远程分支合并到本地当前分支
git merege 的时候会要求输入 merge 的原因
编辑保存后如果代码无冲突,会有下图提示
如果代码有冲突会有下提示,需要解决冲突后才能合并。
1
2
3CONFLICT(content):Mergeconflictinabc
Automaticmergefailed;fixconflictsandthencommittheresult.
使用 Xcode 合并分支
确认当前分支为自己的功能分支
该操作已在[iOS] 查看 Git 分支一文中做过详细介绍,此文不再赘述,如忘记可翻阅此文。
多人开发的时候难免进度会出现不统一的情况,所以当 development 分支有了更新之后,我们要先进行合并分支操作,避免出现冲突。进入Source Control 菜单,选择 pull 菜单,在弹出的菜单中选择需要合并的分支点击 pull。
假设本地分支为 A,合并进来的分支为 B。此时会出现两种情况。
无冲突
若分支 B 的修改是新建了 B.h 文件而分支 A 原先并没有 B.h 文件,此时直接合并成功,分支 A 中会多了 B.h 文件,这个更改是不会有 commit 操作的,并且在远程仓库中也自动帮你进行了合并( merge )操作。
如果 pull 的代码中包含新文件,手动添加到 Xcode 项目中即可。
有冲突
若分支 A、B 同时修改一份文件,会产生冲突,如下图所示:
此时需要利用下方的四个按钮解决冲突后才可以合并,合并完成后本地代码会更新为最新代码。