一、Git是什么及安装
1、Git是什么
现在市面上的控制系统有几十上百种,但是最为流行的版本控制系统为下面三者:
- Git
- Subversion
- Mercurial
尽管有着不同的版本控制系统,但其主要类别分为两种:
- 集中式模型:所有用户都连接到一个中央的仓库(master repository)
- 分布式模型:每个用户都在自己的计算机上拥有完成的仓库。
在集中式模型中,有一台功能强大的中央服务器托管项目。每个每户都必须通过这台中央服务器。
在分布式模型中,没有中央信息库,每个开发者的计算机都有一份完整的项目拷贝。因为每台计算机都有完成的项目拷贝,这就意味着我们可以离线工作,不受网络的限制了。
并且Git是一个版本控制软件。
什么是版本控制?简单说就是我写一个项目,写了1.0版本的,后面修改、增加功能等等,生成了2.0,3.0,4.0等等版本,后面我觉得4.0版本不好,想要回3.0版本,那么就可以返回到3.0版本去并且每次修改都会有对应的记录,比如谁谁谁修改、增加了什么,时间是什么时候,原有的版本被修改了哪里,而且每次修改是基于上一个版本的。能够实现版本与版本之间的来回穿梭,所以它叫做版本控制软件。
除此之外,我们每次提交的代码都可以把当前版本提交到远程仓库上,我们从远程仓库拉取代码的时候除了会把有变动的代码同步到自己的电脑上,还会把所有修改的记录也同步到自己的电脑上。所以说,我们会知道彼此修改的内容。
另外,补充一下,
主流的版本控制器有如下这些:
- Git
- SVN (Subversion)
- CVS (Concurrent Versions System)
- VSS (Micorosoft Visula SourceSafe)
- TFS (Team Foundation Server)
- Visual Studio Online
…
SVN使用的是 集中版本控制模式,也是用得比较多的一个版本控制器。大家可以去了解学习一下。
2、安装
Windows 平台上安装,安装包下载地址:https://gitforwindows.org/
完成安装之后,就可以使用命令行的 git 工具(已经自带了 ssh 客户端)了,另外还有一个图形界面的 Git 项目管理工具。
在开始菜单里找到"Git"->“Git Bash”,会弹出 Git 命令窗口,你可以在该窗口进行 Git 操作。
二、Git 配置
这里推荐的是gitee(码云)
GitEE码云使用:
1.账户注册:
无论是GitHub还是码云(下称Gitee),要使用他们,我们都需要先注册账户,已有账户的可以跳过此步骤。
2.创建仓库
登录码云 https://gitee.com/创建一个仓库
1)Git Bash安装
本地仓库的初始化需要借助软件Git Bash 来完成。https://git-scm.com/
下载适用您的电脑的Git版本,下载完成后运行安装程序,过程中使用默认选项即可,若须修改安装路径,须保证安装路径为全英文。
完成安装后运行Git Bash,出现下面这样的命令行窗口,
Hanani@LAPTOP-AFP6HIES MINGW64 ~ 是什么意思,
@前是计算机用户名,
@后是计算机名,
MINGW64表示正在运行的Git Bash的信息
~表示根目录,默认情况下是C:\Users\Administrator,这里是C:\Users\Hanani
2)获取SSHKey
首先要在本地创建一个ssh key 这个的目的就是你现在需要在你电脑上获得一个密匙。
按如下命令来生成sshkey:
$ ssh-keygen -t rsa -C "[email protected]"
Generating public/private rsa key pair...
#三次回车即可生成 ssh key
查看你的 public key,
$ cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2E... [email protected]
并把他添加到Gitee(gitee.com SSHKey添加地址)或GitHub(github.com SSHKey添加地址)
添加后,在终端中输入
$ ssh -T git@gitee.com
第一次绑定的时候输入上边的代码之后会提示是否continue,输入yes后程序会自动连接,如果要求登录,直接输入登录信息即可。
再次执行上面的命令,检查是否成功连接,如果返回一下信息,则表示添加成功
3) 设置基本信息
接下来还需要简单的设置一些东西。
$ git config --global user.name "yourname"
$ git config --global user.email "[email protected]"
name尽量和码云保持一致,但email必须是码云注册时使用的邮箱。命令不分前后,没有顺序。
4)在gitspace文件夹中执行下面命令,完成初始化
git init
初始化仓库
git remote add origin <你的项目地址>
//注:项目地址形式为:https://gitee.com/xxx/xxx.git或者 [email protected]:xxx/xxx.git
5)、本身没有仓库的情况,加入仓库(成员)
1、初始化仓库
git init
2、添加远程仓库
git remote add origin 远程仓库地址
三、基础指令
1、初始化仓库
git init
2、克隆仓库
这里克隆指下载项目到本地
git clone <项目地址>
弹出窗口,输入码云的账户名、密码
3、从远程仓库同步最新版本到本地(拉取、更新)
git pull origin master
4、提交项目到码云
注意:安装顺序
在本地项目中做一些修改,比如添加一个"说明.txt"文件
执行下面命令,完成第一次提交
保存到缓存区,或 git add 被拖入的项目名
git add .
描述这次提交的内容 (推送到本地库中)
git commit -m “要描述的内容”
推送到远端仓库码云上,项目大的话,时间会久些
git push origin master
注意:如果最后一步报错,可以使用 git push -f origin master,来强制覆盖。
git push origin master //(正常提交)和
git push origin master -f //(强制提交,强制提交可能会把之前的commit注释信息,不会改变修改的代码,慎用),都是提交到master分支
四、分支
一般的项目不会是一个完成的,并且几个人完成一个仓库很容易出现冲突报错,所以一般的项目都是有分支,即组长的话是主分支(master),其他成员可以是分支,分别负责完成自己的项目部分,成员之间不冲突。等完成项目之后,组长就可以把各个分支进行合并,最终完成项目。
(分支上会有主分支的内容,只要各个成员之后负责的代码内容不冲突,不一起提交同一个内容一般不会报错,报错的话看后面)
此处是在项目初始化之后开始的。
1、创建分支
git branch 分支名
2、切换分支
git checkout 分支名
3、提交代码到分支上
git add + 需要添加的文件名
或者 将当前目录下所有的文件全部添加
git add --all(git add *)
4、添加描述
git commit -m "分支名"
5、上传分支
git push origin 分支名
6、合并分支
git merge 分支名
五、撤销
有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令尝试重新提交:
git commit --amend
这个命令会将暂存区中的文件提交。 如果自上次提交以来你还未做任何修改(例如,在上次提交后马上执行了此命令),那么快照会保持不变,而你所修改的只是提交信息。
取消暂存的文件
假如你已经修改了两个文件并且想要将它们作为两次独立的修改提交,但是却意外地输入了 git add * 暂存了它们两个。 如何只取消暂存两个中的一个呢? git status 命令提示了你:
$ git add *
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: README.md -> README
modified: CONTRIBUTING.md
使用git reset HEAD <file>...
来取消暂存
撤消对文件的修改
如果你并不想保留对 CONTRIBUTING.md 文件的修改怎么办? 你该如何方便地撤消修改 - 将它还原成上次提交时的样子(或者刚克隆完的样子,或者刚把它放入工作目录时的样子)? 幸运的是,git status 也告诉了你应该如何做。 在最后一个例子中,未暂存区域是这样:
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: CONTRIBUTING.md
使用 git checkout -- <file>...
$ git checkout -- CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: README.md -> README
六、查看提交历史
如果项目已经完成过几次提交,又或者克隆了某个项目之后,你想要查看已经完成过的操作,可以使用以下命令:
git log
在这其中,常用的选项是 -p
,用来显示每次提交的内容差异,可以加上 -2
来仅显示最近两次提交
git log -p -2
--stat
选项在每次提交的下面列出所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行被移除或是添加了。 在每次提交的最后还有一个总结。
git log --start
另外一个常用的选项是 --pretty
。 这个选项可以指定使用不同于默认格式的方式展示提交历史。 这个选项有一些内建的子选项供你使用。 比如用 oneline 将每个提交放在一行显示,查看的提交数很大时非常有用。
git log --pretty=oneline
另外还有 short
,full
和 fuller
可以用,展示的信息或多或少有些不同
七、回退版本
1、回退到之前的版本,现在的版本不要了
(1)、查看版本号,找到需要回滚的目标版本号
git log
(2)、使用命令将版本回退
git reset --hard
(3)、使用下面命令提交更改,此时使用git push会报错,因为本地库HEAD指向的版本比远程库的要旧,所以要强制推上去
git push -f
2、撤销之前的某一版本,保留该目标版本后面的版本,记录下这整个版本变动流程
(1)、查看版本号
git log
(2)、使用“git revert -n 版本号”反做,并使用“git commit -m 版本名”提交
git revert -n 版本号
git commit -m 版本名
(3)、使用“git push”推上远程库
git push
八、标签管理
1、创建标签
Git中打标签非常简单,首先,切换到需要打标签的分支上,然后使用下面的指令:
git tag 标签名
查看标签
git tag
一般标签可以用于版本的版本号这些的
比方说要对add merge这次提交打标签,它对应的commit id是f52c633,敲入命令:
git tag v0.9 f52c633
2、操作标签
1)、标签打错了,删除标签
git tag -d 标签名
2)、推送某个标签到远程
git push origin 标签名
3)、一次性推送全部尚未推送到远程的本地标签
git push origin --tags
4)、从远程删除标签
先从本地删除:git tag -d v0.9
然后,从远程删除:git push origin :refs/tags/v0.9
九、分支开发工作流
在工作中,一般的项目不止有主分支和其他分支,master分支保留完整稳定的代码,这是即将发布或者已经发布了的代码。同时还有一些平行分支,即develop
或者next
,一般是用来做后续开发或者测试稳定性的,这些分支往往不必保持绝对的稳定性,但是到达稳定性后就可以纳入master分支中。
除此之外,还有特性分支,这是一种短期分支,用来实现项目的一些特性或者相关的工作,一天之内被多次创建或者使用、合并、删除都是常有的。
十、Git图形界面工具——TortoiseGit
下载安装 TortoiseGit
下载地址:https://tortoisegit.org/download/ (一直 next 即可完成安装)
下载安装 TortoiseGit 语言包
下载地址:https://tortoisegit.org/download/(一直 next 即可完成安装)
使用前提:
必须先安装Git,才能使用这个可视化工具,我这里是汉化后的TortoiseGit。
在这里我的建议是,初学者不建议直接使用图形界面的工具,因为对git的指令不熟悉,很容易出错,可以先对Git有一定的熟悉之后再使用TortoiseGit工具。
1、克隆项目
2、提交到本地仓库
3、拉取(更新)项目
4、推送项目到仓库
除了上面的一些基本指令外,TortoiseGit 基本都有Git的指令,大家可自行查看。