一.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:UsersASUSAppDataLocalGitHubPortableGit_ca4ec8etc
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的基本流程,用于工作之中也够用了,后面如果有补充的我会做补充,希望大家多多关注!