1.创建远程仓库
建立远程仓库,就是在代码托管服务器上有可远程访问的空间.
以gitHub为例,打开 Github,如图所示创建仓库。
2.创建本地代码库(init)
本地代码库,其实就是我们的代码目录(如果非要区别普通代码目录和git仓库目录,那就是基于git的代码目录里面会多一个.git的目录,这个目录一般是不可见的。如何将一个普通代码目录变成git工作目录,其实很简单。我们可以使用cmd、git bash
或任何一个命令行工具,进入工作目录,然后运行下面这行代码就可以了:)
git init
当本地仓库初始化好后,其实我们已经可以使用git工作了,比如将代码文件添加到版本记录,创建本地分支,合并本地分支代码等等。
3.绑定本地代码库与远程仓库(remote | clone)
如果是现在本地已经开发的一个全新项目需要推送到远程仓库,你需要先这么做:
git remote add origin https://github.com/username/project.git
如果是在别人已经开发过的仓库中继续开发,我们不需要预先建立并初始化本地仓库,直接执行下面这条命令就可以了:
git clone https://github.com/username/project.git
4.查看仓库文件状态(status)
当我们已经拥有一个本地git仓库或对我们的项目进行了修改后,我们可能迫不及待的想看看我们项目中各个文件的当前状态,我们只需在git bash中执行:
git status
通常情况下,我们可能看到一堆红色标记的列表,包括以下信息:
1)Changes to be committed:等待提交的更改
2)new file:新增文件
3)modified:有改动的文件
4)deleted:删除的文件
5)Untracked files:未添加到版本记录的文件
如果是一个全新仓库,我们只能看到Untracked files项。
5.添加文件并(add )
当我们通过git status看到有红色文件列表,而且其中有我们想要保存到远程仓库中的文件时,我们可通过git add
命令,将相应文件添加到暂存区,我们也可以通过git add .
命令,添加所有新增或有更新的文件,但这里要注意删除的文件不会被添加。
6.将添加的文件提交到暂存区(commit)
执行一个命令git commit
,才能将添加的文件(变化)提交到暂存区。这个命令的用法也有几种,常见的是直接执行git commit -m ‘log info’
7.创建并切换分支(branch & checkout)
在实际开发过程中,我们需要考虑代码的稳定性,未经过测试的代码不能发布到线上环境。这就意味着我们如果我们一直在一个分支上开发代码是很危险的,一步留神就可能把有bug的代码提交到了远程仓库,造成不必要的麻烦,所以一般情况下使用版本控制器,我们都会使用它的分支功能。即开发分支、主干分支,当开发分支上的代码测试稳定后,再合并到主干分支,将主干分支提交到远程仓库,这样出错的概率就降低了很多。
使用git bash可以很方便的建立分支,我们只需执行git branch newbranch
即可创建一个名为newbranch的分支,然后我们只需执行git checkout newbranch
命令,即可将我们的工作环境切换到newbranch分支上。
还有一种更为简便的方法,可以直接使用checkout命令,完成创建并切换到分支:
git checkout -b newbranch
8.合并分支(merge)
前面我们提到了,当开发分支上的代码测试稳定后,我们就可以合并到主干分支上,并提交到远程仓库。那么如何合并两个分支的代码成了一个问题。难道要对比两个文件的差异,一行一行的copy代码?显然git不会这么笨,它是很智能的,我们只需简单的运行一条命令即可完成代码自动合并。我们设想开发分支(newbranch)将被合并到主干分支(master)上,那么首先我们要先将开发分支的代码提交到暂存区,然后切换到主干分支,最后执行合并操作,完整的操作流程大致如下:
git add .
git commit -m 'newbranch
上的变动内容'
git checkout master
git merge newbranch
但是,我们在合并代码的时候,特别是多人开发的时候,偶尔出现冲突(两个人同时改动了同一个地方)也是在所难免的,这种情况,我么恐怕就需要人肉解决下了。不过问题不大,git将文件冲突的地方都会以特殊的形式标明的。
冲突示例:
<<<<<<< HEADaa # 当前分支上的内容 ======= bb # 被合并分支上的内容 >>>>>>>
9.将本地代码推送到远程仓库(push)
当开发分支上的代码都被合并到主干分支上,并且所有的冲突都解决好后,我们就可以将主干分支的代码推送到远程仓库,提供给别人使用了。这一步很简单:
git push origin master
还记得我们执行git remote add后面的origin吗?这里和那里是一样的哦,而最后那个master就是分支名称了。如果远程已经有该分支,便会先检查远程仓库在最近一次更新之后发生过更改,如果有会提示先进行更新代码,然后再提交。如果未变动过,本地代码则会直接提交至远程代码仓库。
10.将远程仓库中的代码更新到本地(pull & fetch)
然而,一般情况下,我们在执行git push之前,都会先更新一次远程仓库中的内容:
git pull origin master
这里我们需要注意一下,和git merge命令一样,pull命令是有可能导致代码冲突的。而pull命令从某种意义来讲实际和fetch+merge命令一样,这里就不再对fetch做进一步说明了。
11.比较代码差异(diff)
通常我们在开发过程中涉及的文件比较多,修改的地方也比较多,当我们需要提交代码的时候,往往想不起来我们修改了哪些内容,哪些问需被提交。这时候我们可能希望能查看一下在前次提交代码之后我们对本地仓库所做的改动,那么你可以这么做:
git diff
查看working tree和indexfile的差别,也可以:
git diff --cached
查看index file与commit的差别,还可以:
git diff HEAD
查看working tree和commit的差别。
12.代码回滚与日志(reset & log)
当我们的项目开发到一定阶段后,也许偶尔就发现该版本的升级存在问题,需要临时将项目恢复到上一个稳定版本。但是,人肉的将升级代码改回去,显然是不现实的,更科学的解决方法是使用git的reset命令:
git reset --hard commitId
将本地仓库代码回滚到commitId对应的版本,或者:
git reset --hard HEAD~number
将最近number次的提交进行回滚,number为一个整数。那么问题来了,当我们需要回滚到指定版本的时候,commitId从何而来?我们怎么知道哪个commit是最近的稳定版本?
说到这里,就该log命令出场了。我们可以使用log命令,查看仓库的提交历史,以及每个提交的更改日志,甚至更改的内容,其最基本的用法如下:
git log -2
# 查看最近两次的提交历史 git log # 默认会输出所有的提交历史,最近的在最上面
我们可以根据日志内容,找到响应的稳定版本代码的commitId,然后再使用reset命令进行代码恢复。怎么样,是不是很强大?但是笔者要告诉你的是,reset和log命令非常强大,参数也比较多,特别是log命令,上面仅仅列举了最最基本的使用方法,如果读者还想了解更多,更深入的东西,还需要翻看更多,更全面的资料学习。由于笔者能力有限,且考虑到篇幅问题,就不再啰嗦了。
13.给代码库打标签(tag)
tag命令,是用来给我们的代码库打标签的。听起来可能有些不太理解,其实日常使用中,通常是用来添加版本标记。
git tag v1.0.0
表明在这里我们发布了1.0.0版本。这样就可以很方便的让我们回顾项目每个版本的样子,历史就是这样用血写成的。我们也可以通过tag命令查看已有的标签,只需要执行:
git tag
这样就行了。
借鉴原文:前端早读课
网友评论