一.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的基本流程,用于工作之中也够用了,后面如果有补充的我会做补充,希望大家多多关注!
来源:https://www.cnblogs.com/lechar/p/12466845.html