Git入门教程

北慕城南 提交于 2020-03-12 03:36:13

一.Git是什么

​ Git是目前世界上最先进的分布式版本控制系统

二.SVN与Git的最主要的区别?

​ SVN为集中式版本控制系统,版本库是集中存放在中央服务器的,

​ 单独搭建SVN服务器,不能离线工作

​ 操作简单代码保密性较强

在这里插入图片描述
​ Git为分布式版本控制系统,根本没有"中央服务器",每个人的电脑都是一个完整的版本库

​ 适合分布式开发,强调个体

​ 公共服务器压力和数据量都不会太大

​ 速度快,灵活

可以离线工作

​ 操作复杂,代码保密性差
在这里插入图片描述
​ GitHub,免费的远程仓库,如果是个人的开源项目,放到GitHub上是完全没有问题的。GitHub还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人的开源项目。 SVN的存储需要依赖一个服务器,而git所有的东西是放在线上的。节约成本,省时省力。

三.安装Git

​ 在这个网站去下载 https://desktop.github.com/ Git最新版,windows和linux系统都有,我这边给大家是windows环境上演示

​ 下载之后,安装,傻瓜式操作,一直下一步 (next),安装成功之后咱们电脑的程序菜单会出现3个栏目如下图

在这里插入图片描述

​ <1>git bash 支持linux命令的控制台(常用)
​ <2>git CMD 支持windows命令的控制台
​ <3>git GUI git软件图形化界面(不建议用)

​ 这里呢,我要给大家操作的是linux系统的,主要以Git Bash为主,使用linux命令.打开Git bash会出现,如图:

在这里插入图片描述

如果没有Git账号的可以自行去Github官网去注册账号,注意用户名和常用邮箱号,然后我们打开Git bash后还要做些设置.

​ git config --global user.name "你的昵称"
​ git config --global user.email "你登陆git的邮箱"

在这里插入图片描述
然后可以通过 git config --list 查看配置列表

以下是git命令行中常用的操作命令:

cd E:进入相应的磁盘

cd /e/test/js 进入文件夹

cd .. 返回上一层目录

mkdir 创建目录

pwd 显示当前工作目录的全路径

touch test.js     新建某某文件

vi test.js 编辑xx文件, 按i切换到编辑模式,按esc切换到命令模式,输入冒号:wq 回车,保存并返回

rm  test.js 删除文件

ls  查看当前目录的所有文件

clear  清屏

在这里插入图片描述
​ 那上述的准备工作已经做好了,我们来正式的使用git,最重要的步骤来了,我们先通过cd /e/test/js (你的文件路径)进入地址然后使用git init命令初始化当前项目,此时你的目录下会多出一个.git的隐藏文件(设置隐藏文件可见),存储着当前项目所有的版本信息.特别注意,不要胡乱的动这个.git的文件夹,不要管它.

​ 我们在当前目录下,新建一个readme.md的文件,里面随便写点内容便于我们后面操作.
在这里插入图片描述

四.操作文件,提交到git服务器

你的本地仓库由 git 维护的三棵“树”组成:  

​ 第一个是你的 工作目录,它持有实际文件;  

​ 第二个是 暂存区(Index),临时保存你的改动;  

​ 最后是 HEAD,指向你最近一次提交后的结果。

现在来开始使用git命令操作版本控制工具上面我们初始化了当前项目,有了.git文件,也测试新建了一个readme.md的文件,我们现在通过命令操作

#### 1.gid add 文件名 提交到暂存区

​ git add -u 提交所有被修改(modified)和被删除(delete)文件,不包括新建文件

​ git add . 提交所有新文件和被修改的文件,不包括被删除的文件

​ git add -A 提交所有变化

​ git add * 提交所有变化(忽略.gitignore)

​ 注意:在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

2.git commit -m "提交的备注"

​ 把刚才的提交到暂存区的文件,提交到本地仓库中

3.查看commit状态 git status

​ 使用git status 查看当前工作目录和暂存区的状态

​ 当出现 nothing to commit, working tree clean 时,说明咱们刚才的提交是ok的.

​ 我们再修改下readme.md中的内容,并重新使用git status

​ 会出现一些变化,git告诉我们,我们本地进行了一些修改,但是这些修改并没有被提交

#### 4.查看修改内容,与上版本文件对比 git diff

​ 可以查看工作区和暂存区代码的区别

​ 使用git diff命令,会出现更改信息,会把刚才咱们修改的内容明显标出来

​ 那我们还跟上面操作一样,先add ,然后在commit

#### 5.恢复到工作区 git checkout 文件名(单文件)

​ 比如我们再修改了readme.md的文件,写了很多不想要了,然后又想恢复到我们暂存区的那个一个版本文件,可以使用 git checkout readme.md,立马恢复到上次提交到暂存区的文件

​ 也可以 git checkout [版本号] 恢复的文件

​ git checkout 56sf6ss readme.md(注意,下面可以获取前7位的版本号)

6.查看日志和版本git log git reflog

​ 可以查看版本日志,查看之前之前提交过的所有的历史版本

​ git log 查看完整的版本号(hash值)

​ git reflog 查看前7位的版本号(hash值)

7.回退版本(恢复到指定任意版本) git reset --hard HEAD^(多文件)

git reset --hard HEAD^ 回退到上个版本
git reset --hard HEAD^^ 回退两个版本
git reset --hard 56sf6ss 回退到指定版本

8.删除 rm 文件名

​ 先rm readme.md (本地删除)

​ 通过git status 查看状态 会说本地工作区和暂存区的区别,删除了文件

​ 此时如果我们继续提交被删除的文件可以执行下面操作

​ git add -A 再git commit -m "删除了刚才的readme.md文件"

​ 那现在版本库上的也没有了,你可以通过git checkout readme.md试一下,报错,会说找不到文件路径

​ 如果不想提交,放弃刚才删除的,可以通过git reset --hard 版本号 来恢复文件

​ 上面8项操作,解决了我们本地工作区到暂存区的增加,删除,修改,退回,恢复等操作.

​ git init -> 创建版本库

​ git add 文件名 ->添加到暂存区

​ git commit -m "提交注释" ->提交到本地仓库

9.创建密钥(一台电脑配置一次) ssh-keygen -t rsa -C "邮箱账号"

a.首先检查电脑是否曾经生成过密钥

​ cd ~/.ssh 回车

​ ls 回车

​ 如果打开该文件加为空,则表示没有生成过密钥进入b步骤 (~表示根目录)

b.生成密钥

​ ssh-keygen -t rsa -C "你注册git使用的邮箱"

​ 命令要求输入密码,不用输,三个回车即可.执行成功之后,主目录.ssh目录下会生成 两个文件:id_rsa 私钥文件,id_rsa.pub 公钥文件

​ 如果找不到两个文件,可以这样找到

​ windows电脑通过 C盘 => 用户 => 你名字的用户 => .ssh隐藏文件夹

c.去Github配置密钥

​ 登陆github帐户点击头像,然后 Settings -> 左栏点击 SSH and GPG keys

​ -> 点击 New SSH key在远程仓库gitlab上添加title和key,和本地的一致。 title可以自己取一个容易区分的名字,key为id_rsa.pub中的内容(全部复 制,可用cat id_rsa.pub命令打开)

​ 配置了ssh秘钥,使用远程仓库的 ssh 地址提交

10.连接远程库 git remote add origin 项目地址

​ git remote add origin https://github.com/lechar0327/GitTest.git

11.将本地的库推送到master分支上(推送到服务器) git push -u origin master

git push -u -f origin master

​ 提交到远程仓库,这个命令中的 -f是强制推送,因为远程仓库只有初始化文件,所 以强制推送上去就行了,不加-f 会报当前分支没有远程分支,强制推送可以覆盖master, 这样就完成了第一次提交的步骤.

​ 【注】windows电脑会要求输入账号和密码(输入github账户的账号密码)

​ git remote -v 查看远程仓库地址

​ 然后去服务器上查看是否推送成功.

​ 那以上11个步骤,就完成了我们从本地初始化,到添加到暂存区,然后提交,最后连接远程库,并且推送成功的所有操作了,这上面很多都是只需要配置一次的,当第二次开始的时候,就不需要那么多步骤了.只需要

​ <1> 工作区 => 暂存区
​ git add *
​ git commit -m ""
​ <2> 检查暂存区的状态
​ git status
​ <3> 将暂存区的数据推送到远程仓库去
​ git push

12. git push 推送到远程仓库

​ 将暂存区的文件全部推送到远程仓库

​ git push (提交master分支 到远程仓库)

​ git push origin 分支名 (提交其他分支 到远程仓库)

​ 注意:如果我们在执行上述 第10步操作时,报错了,提示fatal: remote origin already exists.这个错误信息,我们解决办法如下:

​ 1、先输入$ git remote rm origin

​ 2、再输入$ git remote add origin git@github.com:djqiang/gitdemo.git 就不会 报错了!

​ 3、如果输入$ git remote rm origin 还是报错的话,error: Could not remove config section 'remote.origin'. 我们需要修改gitconfig文件的内容

​ 4、找到你的github的安装路径,我的是 C:\Users\ASUS\AppData\Local\GitHub\PortableGit_ca4ec8\etc

​ 5、找到一个名为gitconfig的文件,打开它把里面的[remote "origin"]那一行删掉就 好了!

五.拉取远程仓库数据

1.从服务器克隆数据 git clone

​ git clone https://github.com/lechar0327/GitTest.git

​ 获取远程仓库的更新数据

​ git fetch:相当于是从远程获取最新到本地,不会自动merge

​ git pull:相当于是从远程获取最新版本并merge到本地

​ git pull origin 分支名 更新某个远程分支到本地

六.分支操作

​ 1.查看分支 git branch

​ 2.创建分支 git branch 分支名

​ 3.切换分支 git checkout 分支名

​ 4.创建+切换分支 git checkout -b 分支名(合并2和3的操作)

​ 5.提交分支上的代码 git add . git commit -m "提交注释"

​ 6.合并分支(需要切换到主分支进行合并)

​ 7.合并完以后就push ,先pull一次在git push ,也就是先更新在提交

​ 8.删除分支的命令 git breach -d 分支名字

七.设置git忽略文件

​ 1.创建文件:.gitignore

​ 2.忽略文件列表
以斜杠“/”开头表示目录;
以星号“*”通配多个字符;
以问号“?”通配单个字符
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;

​ .DS_Store
​ node_modules/
​ /dist/
​ npm-debug.log
​ yarn-debug.log

​ yarn-error.log
​ #Editor directories and files
​ .idea
​ .vscode
.suo
​ * .ntvs
.njsproj
上面是操作Git的基本流程,用于工作之中也够用了,后面如果有补充的我会做补充,希望大家多多关注!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!