git简要操作

若要说到项目托管,不得不提github。虽然经常在上面查阅各种项目,但不知为何,之前总对在github上建项目不屑一顾,可能是不想在自己的博客上分心。

随着自己工作经验的增加,觉得写博客也比较费劲了,语言的组织和描述,图文形式的安排,如果一两个月没有一篇博文,自己便会有一份愧疚感,同时也发现之前写的东西比较分散,其中的代码也不会想着去整理和优化。以上这些当然没有直接在github直接push代码爽快,于是今年的一月在github建立了账号,但是直到十月份才在上面发布第一个项目!以下就说说它的一些简要操作。

下载与安装

进入地址 https://desktop.github.com/ 下载对应系统的git工具,它是在线安装的,当安装完成后在桌面会出现以下图标。其中 Github 是通过可视化操作来处理项目,而 Git Shell 则是通过命令行。

github-git

备注:若安装不成功,可以通过以下两种方式进行解决

1.之前安装过github未卸载干净,可通过清除注册表,再安装

2.网上查找离线安装包

网页上新建项目

在你注册了github后,网页中新建项目就是创建新仓库。此处我们建立一个 test 项目

新建项目

当线上仓库创建完后,我们就需要将项目克隆到本地,然后在里面添加页面和文件,修改或更新后发布到线上。打开 Git Shell ,然后cd到需要存放项目的目录,这里我放到 G:\git,然后在新建项目页面上,复制链接地址,如下:

克隆项目

此时,我们在G:\git就能看到 test文件夹,如果在里面包含了.git文件,这是github自带的系统文件,请忽略。

如果你在github上看到你感兴趣的项目,也可以通过此种方式下载到本地。

将账户与线上github账户关联

我们在 Github 客户端登录自己的账号,然后打开 Git Shell ,进入需要存放项目的文件夹,然后在这个项目下设置用户名和邮箱,类似在git客户端登录github:

关联账户

可通过以下方式来查看当前用户信息:

查看用户信息

也可以通过 git config –list 查看全部信息:

查看信息列表

master 为该项目的主分支,也为默认分支。我们先来回答一个问题,为什么要分支呢?

因为一些项目很大,当某个项目稳定后,我们需要往里面新增功能,不能在主分支上直接修改,需要开一个新分支(类型copy一份),然后在这个新分支上进行开发。当开发完成没问题后,可将这个新分支合并到主分支上。从而生成一个新的稳定版本。

Git的三个区

工作区:即本地开发与修改的文件

暂存区:暂时保存的文件,作为工作区与版本区直接的过度,可避免误操作。主要有以下功能:作为过渡层、避免误操作、保护工作区和版本区、分支处理

版本区:即线上稳定版本的文件

一般开发好的文件,需要先提交到暂存区,然后再提交到版本区,其实你可以将暂存区理解为我们上线项目的测试环境,而版本区就像生产环境。

我们可以将未开发的文件暂时提交到暂存区,若本地文件丢失了,也可以将暂存区的文件下载下来。

Git 命令

查看本地状态,当本地文件修改,或提交处理操作后,都可通过git status查看。

查看状态
>git status

命令行显示分支在master上,文件夹无任何东西,未做任何操作。

接下来,我们在test文件夹里,新建test.html 和 test.js两个文件,再次查看本地状态:

查看状态02
[master +2 ~0 -0 !]

红色部分为本地工作区,+2 表示在工作区新增了2个文件,~0表示0个修改,-0表示0个删除

提交到暂存区(git add):

将test.html从工作区增加到暂存区,然后再将test.js增加到暂存区。

增加文件

绿色部分为暂存区,+1表示在暂存区新增了1个文件,~0表示0个修改,-0表示0个删除。
而在红色部分里,当只增加了test.html时,红色部分只有一个新增文件了。
当再次增加test.js时,红色部分没有了。

当提交完成后,可再次用 git status 查看状态。

将暂存区的文件提交到版本区(git commit):

此时会弹出一个记事本,你可以在记事本顶部添加相关注释,然后保存,关闭,便可在命令行里提交了文件

提交完,会显示以下界面:

提交文件

修改test.html 和 test.js,git status查看状态,会出现:

提交文件更新状态

接着,我们将文件提交到暂存区,我们也可以同时提交多个文件到暂存区,利用git add . ,表示将本地所有文件都提交到缓存区(注意最后点前面的空格):

增加多个文件

接着,将暂存区的文件提交到版本区,这里使用 -m “first modify”,此时就不会弹出记事本了,另外这里的 “first modify” 表示修改的注释。

提交增加注释

将修改的文件直接从工作区提交到版本区

此时省略了使用 add . 到暂存区,而是直接使用简写 -a -m加注释的方式提交到版本区(git commit -a -m “note”):

增加注释后直接提交

除了以上的命令操作,还有如下命令:

查看历史操作记录(git log )。

退出查看日志(按 q 键)

工作区、暂存区、版本区之间的对比

修改test.html,如下:

<p>这是一个测试文件</p>
<p>这是我的第一次修改 </p>
<p>这是我的第二次修改 </p>
 
<script src="test.js"></script>

然后直接提交到版本区。再修改test.html ,如下:

<p>这是一个测试文件</p>
<p>这是我的第一次修改 </p>
<p>这是我的第二次修改 </p>
<p>这是我的第三次修改 </p>
<p>这是我的第四次修改 </p>
 
<script src="test.js"></script>

接着提交到暂存区。然后再修改test.html ,如下:

<p>这是一个测试文件</p>
<p>这是我的第一次修改 </p>
<p>这是我的第二次修改 </p>
<p>这是我的第三次修改 </p>
<p>这是我的第四次修改 </p>
<p>这是我的第五次修改 </p>
 
<script src="test.js"></script>

这时,三个区的代码都不一致,我们通过命令来对比它们之间的差异。在git中运行 git diff 对比工作区与暂存区之间的区别:

对比工作区与暂存区

可以看出,绿色部分即为差异部分。同理 git diff –cached,为暂存区与版本区的对比:

对比暂存区与版本区

而 git diff master,为 本地与版本区的对比:

对比工作区与版本区

撤销操作

将 暂存区 的文件撤掉到 工作区,通过 git reset HEAD ,修改test.html提交到暂存区后,若要撤回,则如下(由绿色变红色):

暂存区 的文件撤掉到 工作区

将 工作区 撤销回到 版本区。当我们本地修改错误出错时,想要将版本区的文件撤回到工作区,可通过 git checkout —

工作区 的文件撤回到 版本区

撤销对于提交到版本区的误操作(之前只提交了一个,现在我需要提交两个。引号里的是注释说明)

删除操作

在test文件夹新建 test.css文件,然后git status,再提交到暂存区

新增样式

假如我们本地不小心删除了 test.css,我们通过 git status查看,会发现暂存区存在test.css,而工作区没有:

更新删除状态

这样,我们需要同步删除暂存区的test.css ,通过 git rm

同步删除

但是,如果工作区有 test.css 文件,你不能通过 git rm 直接删除暂存区的test.css。但是可通过git rm –cached 来进行删除 。我们先提交到暂存区,再进行删除

删除工作区的文件

假如我们要把工作区和暂存区的文件都删除,可通过 git rm -f 。以下操作是先提交到暂存区,然后再一起删除:

全部删除

恢复操作

我们在工作区新建test.css提交到暂存区和版本区,假如现在我们不小心手动删除了test.css,git status 查看状态:

查看删除记录

倘若,我们要恢复删除操作,则需要先通过 git log 查看历史记录。

查看历史记录

然后,再利用 git checkout id 来恢复到相关版本:

恢复相关版本

此时,本地的文件夹又看到test.css文件了。除了恢复单个文件,我们可以通过 git reset –hard id来恢复某个版本:

恢复到某个版本

假如不指定某个版本进行恢复,可通过 git reset –hard HEAD^ 来恢复上一个版本。而 git reset –hard HEAD~3 则是回到前面的第三个版本。

假如又来一个奇葩需求,我们要回到没有恢复删除前的版本,可先通过 git reflog 列出所有操作版本,然后根据它们前面的id,最后恢复到指定版本:

列出所有版本,并指定恢复到某个版本

将开发完的文件提交到github

要提交到远程github,需要先登录 GitHub 客户端。再回到 git命令行,然后通过 git remote 查看仓库名称,通过git remote -v查看远程对应的地址,最后通过git push master 来提交到远程仓库。

发布到github

如果有问题,可通过 git push master -f 来强制提交。

在github创建演示页面

首先确保你github客户端登录,假设你github上有一个项目,如下:

github上的test项目

当你想要展示test.html页面时,又该如何做呢?要在github创建演示页面,只要六步。

第一步,git命令行进入项目文件夹(注意需要先设置name和email与github客户端一致)

第二步,查看仓库名与对应的远程地址

第三步,从github远程仓库拉取最新的文件

第四步,新建并切换到分支 gh-pages

第五步,在 gh-pages 分支上提交文件

第六步,将版本区的文件提交到github远程仓库

具体操作如下:

创建预览分支

当完成这六步,刷新项目页面,会看到分支变成了两个,即多了一个 gh-pages 分支。

此时,打开页面 https://joy-c.github.io/test/test.html 即可访问 test.html 。或许你不停刷新后看到的仍然是404页面。不要着急,第一次部署,大概需要等待十分钟左右才能正常预览。当我们再次部署,则很快便能看到。

分支操作

为什么会存在分支操作?正如前面所描述的,通常情况下一个项目会有两个分支,一个稳定版本(通常是master分支),一个开发版(通常是dev分支,不过我这里用gh-pages分支)。如果我们需要给项目新增功能或者更新文件,通常都是在开发版操作,提交到开发版分支后,再回到稳定版本主分支,进行合并。这样,我们就保证了两个分支的一致性!常见命令如下:

新建分支(dev)

>git branch dev

删除分支(dev),-D是强制删除

>git branch -d dev
>git branch -D dev

查看所有分支

>git branch

运行命令后,你会看到本地所有分支。前面带*并且绿色为当前所处分支。

切换到其他分支(gh-pages)

>git checkout gh-pages

在gh-pages分支开发完,提交到远程分支后,再切换到主分支master并且合并,最后提交

>git checkout master
>git merge gh-pages
>git push

参考:https://help.github.com/articles/creating-project-pages-manually/

评论功能已关闭。