git使用入门
git使用入门
最近涉及到了团队开发,未进行合作需要使用git,但遇到了很多问题,所以这里稍微总结一下git的简单使用,以供参考
下载git
下载git很简单,这是官网
进入官网选择download下载即可(我相信屏幕前的你应该是会一点英文的,跟着官网的引导走即可)
下载完成后打开cmd或者power shell,输入git -v
回车后输出git版本即说明下载成功
接下来是两个简单命令
1 |
|
通过上面的两条命令完成你身份的认证后即可开始正常使用git了
使用git进行版本控制
首先,要说明的一点是,git的版本控制最好只使用在纯文本环境中,git本身无法直接的监控二进制文件的具体变化,只好在二进制文件每次发生变化时将之完整的保存一份,长期会导致仓库体积的迅速膨胀(当然,这对新手来说不会是什么大的问题)
其次,当前有很多使用git的图形化工具,各大ide也都集成了git的相关功能,但这里的讲解主要使用命令行完成,因为在你完全掌握了命令行的使用时,再使用图形化界面就很轻松了,更不用说很多时候我们不得不使用命令行
创建仓库
想要通过git管理你的代码,首先要在对应的文件夹下初始化一个git仓库
首先,打开powershell,你会用到这些命令
1 |
|
好的,到这里,我假设你已经成功的来到了你要创建仓库的文件夹下了(如果没搞定的话也可以直接在文件资源管理器中右键对应的文件夹,找到从终端打开,点击即可),接下来就是新建仓库了,使用下面这条命令
1 |
|
代码的提交与保存
接着我们来了解一下git中的几个基本概念
在一个建立了仓库的文件夹下,文件的状态头四种, 未被监控,工作区,暂存区与仓库
未被监控很好理解,直接跳过
工作区即我们写代码的区域,我们能够看见的文件就处于这个区域
暂存区是暂时存储文件的区域,不过嘛,以我个人的看法,这玩意意义不大,可以忽略
仓库是我们保存各个版本的文件的区域
接下来是两个常用的命令
1 |
|
这样,你的代码就被保存到对应的仓库中了
代码版本的查看与回滚
在进行提交以后,你提交时代码的状态就被完整的保存下来了,如果需要查看提交记录
使用git log
来查看提交记录,此时你会看到某个版本的提交者,提交时间,提交说明与一长串意义不明的的十六进制数字
这一长串的数字对应了某个版本的哈希,是该版本的唯一标识,如果你需要将代码的状态回滚到某个版本,请将对应的哈希复制,然后使用如下命令
1 |
|
这里需要解释一下--hard
是硬的意思,即强制回滚到原来的版本,还有软,混合,保留三个模式,但相信我,你不会需要它们的
分支
接下来要将的就是git的最爽的用法了,git的分支
先来看看基本的命令
1 |
|
什么是分支,如果将一个项目想象成一棵树,那么这些分支就是树的树干,有时候想要对你的代码进行修改有不确定会不会搞出一些不可预知的问题?直接创建一个新的分支,随意的改造他,在你满意之后将其合并回主分支即可,如果不小心玩崩了,那就把这个分支删了
当然,分支功能更常用在团队开发中,每人拥有独立的分支,在完成对应的工作后再将自己的分支合并回主分支,避免对其他人的工作中造成影响
那些奇奇怪怪的翻译
由于国内奇奇怪怪的翻译,不少人在使用图形化界面时会遇到困难,下面对一些有代表性的做出解释
签出
这个名字真的稀烂,完全让人看不懂他会干涉,其实就是checkout,不过,checkout的用法不只是切换分支,具体如下
- 加分支名切换分支
- 加版本哈希则跳转至对应的版本,注意,此时你并不在任何分支上,你无法进行提交,但如果你又希望保存你的修改,使用
git checkout -b new-branch-name
创建一个新的分支,之后就可以正常提交了 - 加对应的文件,则将当前文件的内容还原至仓库中的最新版本
说来说去,从checkout的英文含义我们可以理解,这个命令是检查,查看的意思,后面加什么,就是对应的查看什么
合并
merge,这个不必多说
变基
git rebase 要变基到的分支
,这是一个前面没有说过的命令,这玩意的英文名称就让人看不懂要表达什么,更不用说这个奇奇怪怪的中文了简单的理解是merge会将两个分支的最新版本比较,最后在主分支上创建一个全新的版本
而rebase会把分支的每个版本都提交到当前分支,这可以用来整理项目的历史
此外
git rebase -i HEAD~N
可以将最近的N个提交整合为一个,建议新手不要随意使用,会出问题的
配置SSH秘钥
在了解远程仓库的使用之前,先要配置自己的SSH秘钥
由于众所周知的原因,在国内访问github需要一定的技巧,而在实际使用中当我们需要提交相关的代码至远程仓库时,我们不得不面对不易寻找到可用的梯子的问题,这是通过SSH秘钥进行访问就是一种很好的解决方法,略去原理不谈,下面简单介绍一下配置方法
首先,打开cmd,输入
1 |
|
接下来一路闭着眼按回车就行了(接下来弹出的内容是设置密码,对新手来说没什么必要),完成后的效果如图
注意,上图中的第三行提供了你的秘钥的保存路径,你将会看到id_rsa与id_rsa.pub两个文件,前者就是你的私钥,你应该保存好,不向任何人泄露.而公钥部分则可以打开后粘贴到github的个人密码配置中,此后你的电脑就能通过ssh访问github了
那么我们如何在github上配置自己的秘钥呢,只需要打开github登录后进入个人页面,选择settings,进入如下界面
选择SSH and GPG keys选项
选择绿色的New SSH Key选项即可,在跳转的页面中将自己的公钥内容粘贴至框中即可,注意,应当复制公钥的全部内容,包括首行看起来像是题目的东西
远程仓库
接下来聊一聊远程仓库的事,这也是团队开发的关键
1 |
|
这三个命令是最基础的,很容易理解
接下来是进阶使用
1 |
|
强调一下,上面的fetch效果类似于checkout到特定版本的效果,此时你不处于任何分支当中,你需要新建一条分支来进行进一步的操作
git冲突
这是很多程序员的噩梦,当同一个文件的同一处被两个不同的人进行了两次不同的修改后第二人进行提交,或者两个分支都对某处进行了修改时而你选择将它们合并在一起,以及种种对同一文件同一处进行修改时,就可能造成git冲突,即git无法正确的判断文件到底该怎样的进行保存,这时,就需要手动处理冲突,git会提示冲突的地方,你只需要选择保留哪个版本或者对自行对两个版本整合即可
具体的整合可以通过fetch或pull远程最新的提交后再在本地拉一条新的分支,对照不同分支进行修改,完成后把这个新分支合并到自己的分支上
在整合完成后再此进行提交,此时git会认为你已经解决了冲突,会按照你提交的版本进行保存
当然,如果push仍然报错,请使用这个
1 |
|
这个玩意会强制推送,以你的本地内容为准,但会检测有没有其他人在你上次pull之后提交,避免覆盖其他人的工作成果
最后的最后,永远不要使用git push --f
,这会覆盖掉其他人写的代码的!!!
终于搞定了,来,最后放图