Git指令,版本管理神器——程序员的入门技能

在前面几篇中,笔者曾多次和大家提到过Github网站,作为全球最大的同性交友网站,想必,各位小伙伴们也是迫不及待地在这个网站上找到自己的知己。如同在百合网相亲一样,我们需要上传个人信息供其他人了解自己,在Github上,代码就是我们的名片。今天笔者带大家熟悉一下几个常用的Git指令。

Git常用命令速查表

这张表包含了大部分项目上传用到的命令,笔者将按照上传一个项目的流程过一下Git命令。

上传代码流程

注册Github账号

注册Github账号

进入Github网站注册账号,注册流程在此不多讲解。

新建Github仓库

新建Github仓库

仓库指的就是Github网站上存放代码的地方,每个项目一个仓库,点击这里新建项目。新建时,有一个Initialize this repository with a README选项,如果勾选,会在新建项目过程中生成一个README.md的文件,md指的是Markdown文件,其作用是对描述项目的,以比较有名的ButterKnife为例(如下图所示),将编辑好的Markdown文件命名为README.md,放到项目根目录即可。

Butter Knife说明页

新建完毕后,若出现下图所示内容,表示新建项目完毕:

Github项目结构

配置Git命令环境

Git命令需要在对应的环境下才能使用,下载配置Git命令环境,点击这里进入Git下载页面:

git下载页面

上传本地工程代码

笔者以安卓工程为例,打开命令行,进入项目根目录,进行如下操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 进入项目根目录,当前项目名为Mitu,本地项目名和远程仓库的命长可以不一致
cd /Volumes/J_Eric/J_workRoom/AndroidStudio/MiTu
// 初始化本地项目的git,会在当前目录下生成一个.git文件夹,所有的git配置都在其中
git init
// 建立远程连接,项目连接可在Github相应目录下得到,如下图
git remote add origin https://github.com/inerdstack/MyFirstProject.git
// 添加账户信息:账户名
git config user.name "inerdstack"
// 添加账户信息:绑定的邮箱
git config user.email "wjnovember@gmail.com"
// 添加本地项目文件(夹子),"."或"-A"表示添加所有文件
// 若添加个别文件,可以输入文件路径,多个文件之间以空格隔开
git add .
// 添加本次提交描述
git commit -m "我的第一次提交"
// 因为我们远程新建项目的时候,自动生成了README.md的文件
// 所以我们需要将远程的文件先拉到本地,与本地文件进行合并比较
// master表示项目的分支,默认主分支(master)
git pull origin master
// 拉到本地后,进行核查,如果文件不存在冲突,则进行上传,将本地项目推上去
git push origin master

得到远程链接

至此,项目上传完毕,同时Github网站的仓库页面变成下图所示内容:

远程代码

以上讲解的是HTTPS的上传方式,接下来讲解SSH的方式上传,与HTTPS基本一致,区别有以下两点:

  • 在git push命令前添加项目的deploy key

Add deploy key

在Terminal中输入:

1
2
3
4
// 生成key
ssh-keygen -t rsa -C "Github的注册邮箱地址"
// 打开key文件所在的文件夹,默认路径:~/.ssh
open ~/.ssh

.ssh文件

打开id_rsa.pub文件,复制所有内容,进入Github仓库里的Deploy key设置页面,点击Add deploy key,在key项粘贴复制的内容,输入标题(命名最好与目前设备相关),点击Add key完成key的添加。

  • git remote add origin链接

如下图所示:

SSH

创建分支

在实际开发中,开发者会把上线的代码和开发时的代码区分开,需要创建新分支(注意与默认的主分支master区别开),上线的代码放到主分支上,开发代码一般放在新分支,命名为dev(或其他名称)。

创建分支分两部分:

远程创建分支

远程创建分支

在远端的项目仓库中,点击branch,在输入框输入新分支的名称,按回车键完成远程分支的创建,新建的分支,其文件默认与master的一样。

本地创建分支并上传

打开Terminal,在本地项目根目录下,实现如下操作:

1
2
3
4
5
6
// 创建一个新的分支
git checkout -b "debug"
// 拉分支上的代码到本地,实现代码同步
git pull origin debug
// 推本地的代码到远程的分支
git push origin debug

克隆工程

开发过程中,当有新的成员加入时,需要拿到项目的代码,可使用克隆将远程的代码同步到本地,Terminal命令如下:

1
2
3
4
// 将远程的仓库克隆到本地
git clone https://github.com/inerdstack/MyFirstProject.git
// 若想远程克隆其他分支上的代码,则添加-b 分支名
git clone -b debug https://github.com/inerdstack/MyFirstProject.git

分支合并

当项目上线时,开发分支的代码同步到主分支,需要用到分支的合并,打开命令行,进行如下操作:

1
2
3
4
// 将当前分值切换到主分支
git checkout master
// 将次分支的文件合并到主分支
git merge origin/debug

通过以上指令,可以实现debug分支的代码向master分支的合并。

冲突解决

文件冲突在分支合并的时候会经常用到,比如A对x文件的第n行代码进行了更改,B对x文件的对应代码也进行了更改,当进行merge操作的时候就会发生冲突。这时候就需要A、B两名程序员针对冲突的地方进行沟通,达成一致修改方案后,对文件对应代码位置进行修改,标记冲突为resolved,文件的冲突状态消失,然后上传代码即可。

再小的鼓励也是一种支持!