Git的详细使用教程(一)

1.Github的注册和Git的简述及安装

这里跳过前期的准备工作,可以参考这里自行操作完成,安装后别忘记做一个全局配置,里面也有提到。另外在进行Demo时,请建立一个空的文件夹。

2.Git的基本命令

记载前,放几张关于git的流程图,方便后续理解

2.1 git init

此命令是指初始化一个文件夹,执行完毕后,会在目录里看到一个隐藏文件“.git”,当然我这里说的隐藏文件是基于Linux操作系统里的,因为Git的命令行,如果学过Linux操作系统的,不难发现,两者很相似,只不过有些Linux操作系统的命令行在Git里不能简写或者说是缩写。在这个隐藏文件里还有很多的文件,此时的目录结构是Demo/.git,我们把除了隐藏文件之外的所有Demo空间称之为工作区,“.git”我们称之为版本库。当我们进入Demo/.git,如果我们往里面添加心得文件,稍后会看到有一个文件是“index”,我们把它称之为暂存区。

2.2 git add

此命令是指将一个已经编辑好的文件添加到暂存区,一般来说我们会在其后面添加上相对应的文件名。这里留意一下,就是当同一个文件被修改后,如果想再次提交到版本库时,一定还要进行一次,git add

2.3 git status

此命令是指查看目前暂存区的状态,一般基于上面的添加完文件,暂存区状态发生改变,会给到一个状态的反馈。

2.4 git commit

此命令是指将暂存区的文件,正式提交到版本库里,留意一下,这里的提交文件是指将暂存区的文件进行提交,没有放进暂存区的文件,是不会被提交到版本库里的。一般来说,常见的命令行是:git commit -m '需要备注的信息',后面的参数-m是指提交时进行备注,可以理解为是message的缩写首字母,单引号里面是备注的信息,我在正常使用的过程中,会把重要的修改信息,提交在这个备注里,方面后续版本回退时,一眼知道,该回退到哪个版本。有时候在看资料也会看到这样的两条命令行:git commit -am ' 'git commit -amendgit commit -a,前者的参数-am,是将之前已经commit进版本库的文件,如果发生修改,直接再次提交到版本库,而不需要再像之前一样,再次add后再commit,即跳过了一个上面刚说的再次git add的步骤;中者的参数-amend,是指修改最近一次commit时message的信息,一般多用于commit时少写了某些信息或信息commit错误;后者是指强制性的将工作区改变的文件直接commit到版本库。

2.5 git diff

此命令是指将变动修改的文件,进行对比,看一下发生了怎样的修改,但是前提是你修改后的文件已经add进暂存区,然后再去执行git diff --cached,最后一行如果有“+”或者“-”的字样,代表添加或者删除了什么。注意:在执行git diff --cached,后面没有去添加参数--cached,那么此时它所代表的意义就发生了改变,此时看的是工作区和暂存区的区别,加了的话,看的是版本库和暂存区的区别。这里一定要特别的留意,很多人会经常在这里被绕死。执行git diff --cached,默认会把所有文件的修改变动全部列出来,如果想单独对一个文件的变动修改,再加一个文件名即可。

2.6 git reset

此命令是指将之前修改变动文件里面变动的信息取消掉,通常称叫回滚。

2.7 git mv

此命令是指将文件进行重命名操作,具体格式是:git mv 原文件 目标文件,这个命令很Linux操作系统里的cp命令很相像。但是这里注意一下,此命令会同时修改本地文件名和版本库里的。

2.8 git log

此命令是指将之前一系列的操作,干了些什么,全部以日志的形式展现出来,非常的详细,里面会包含每次提交的唯一版本更新迭代号(实则里面是一段哈希码),执行人是谁,账户是什么,执行日期是什么时间,commit什么信息,都可以看到。很类似Linux里的ls -la。同样的,在查阅资料时,也会看到其他命令行:git log --onelinegit log -n数字git log --allgit log --graph.一一说明,第一个命令行是指以简洁的一行式查看历史;第二个命令是指查看最近的多少次;第三个命令是指查看所有branch的所有记录;最后一个是指以图形化的方式去查看。

2.9 git branch和git checkout

这两个命令,我是放在一起去进行学习的,因为涉及到新建分支,查看分支,切换分支以及删除分支,也是Git中最为繁琐复杂,让人难以理解,很大程度上会自行绕死自己,走不出死胡同。

git branch这个命令行是用于操作git分支,因为在开发过程中,为了不影响其他人员的工作进度,会不断的建立新的分支,后期开发完毕后,再进行合并。常见的命令行有:git branch -vgit branch -d 分支名.前者是看本地有多少分支,后者是删除叫什么名字的分支。

git checkout这个命令行是用于创建和切换分支,常见的命令行:git checkout -b 新分支名 原分支名git checkout 分支名.前者是创建一个新的branch,前面的参数-b要留意一下,后者是切换分支。特殊的是:git checkout 在去创建新分支时,可以就git log中查看到的哈希值,直接去指定版本号,只要保证其唯一性就行。

2.10 分离头指针

a.什么是分离头指针?

首先理解分离,就是在主干线以外的区域,进行派生出一个新的副干线。它是不属于分支的分支,可以理解为缓存区域,在这个区域里做的任何操作,不会影响其他区域。后期如果这个区域的修改不错,那么可以进行新建branch,键入:git branch 新分支名 修改后临时版本的哈希值,如果修改的不如意,随时可以进行丢弃,不影响。

b.什么时候用到?

一般情况下,是在某个开发版本过程中,尝试添加新的功能,临时给的一种需求。那么如果在原来的基础上去改的话不太好,因为它会影响原来的branch,假设要回滚,还要回滚好多的东西,那么此时就可以进行分离头指针。

2.11 gitk

此命令是直接打开一个图形化界面,直观清晰的展现出一个树状关系图,可以看到各个版本的信息,包含父子关系,提交时间,修改信息。这里提及一下,在gitk出现的图形化界面中,选择View>New View>All refs>OK后,可以进行手动tags,于此同时可以关注一下版本之间的关系,其中Child是指当前版本的下一个版本,相当于子系;Parent是指当前版本的上一个版本,相当于父系。也可以查看到,当前一共有多少branch拥有此版本。

2.12 git rebase

此命令称为变基操作,说直白点就是,指定修改历史版本中的提交信息,一般来说会结合git log,去一起进行操作。执行git rebase -i 版本号(哈希值),那么后续版本所执行的所有变动都会呈现出来,同时界面会把所有的命令展现给开发者,可以自行选择command。

2.13 git rm

此命令执行的是删除操作,这里会分删除工作区的文件还是暂存区的文件。删除前者,直接执行git rm 文件名,删除后会把相关的变动放到暂存区里;删除后者,直接执行git rm --cached 文件名.

2.14 git stash

此命令主要的运用场景是:临时任务的加塞。说直白点就是,当开发者在进行开发时,突然接到验证某个历史版本中的Bug,既不能放弃目前所开发的代码,也不能不去执行Bug的验证,那么此时就运用到此命令。假设目前所处的场景就是,我作为一个开发者,代码开发到一半,这个时候我执行git stash,系统紧接着会给到一个反馈并附有临时版本号(哈希值),如果还是不放心,可以进一步执行:git stash list,所有临时保存的版本号(哈希值)都会呈现在下面。这是选择要验证某个版本,切换过去,该是什么流程就是什么流程,验证改完Bug后,是要回到原先的开发环境,这时执行:git stash apply,就会回到原先的开发环境,如果出现文件内容有更改,影响到目前开发的版本,那么系统会用类似<<<<<<……………….>>>>>>这种样式去提醒你。当然有时查看资料时,也会看到:git stash pop,此命令是指将之前放在list下暂时保存的缓存移除掉,所以要小心执行此命令。

2.15 git clone

此命令是指克隆某个仓库,它所支持的协议有很多,包含经常接触的http,https,ssh,git……,形式是:git clone URL,这里有一个简便的用法,如果访问Git URL进行clone,clone一般都是想要的是master分支,需要指定用户名去进行登录,执行:git clone 用户名@URL,后续输入密码即可。我经常使用的环境就是进行Router固件进行编译时,会经常clone OpenWrt的仓库进行操作,操作系统会去使用Ubuntu发行版。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2019-2024 Carrol Chen
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信