Git和SVN的区别及Git的使用
一、Git是什么?
Git是目前世界上最先进的分布式版本控制系统。
二、SVN与Git的最主要的区别?
SVN为集中式版本控制系统,版本库是集中存放在中央服务器的
单独搭建SVN服务器,不能离线工作
操作简单,代码保密性较强
GIT为分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库
适合分布式开发,强调个体
公共服务器压力和数据量都不会太大
速度快灵活
可以离线工作
操作复杂,代码保密性差
GitHub,免费的远程仓库,如果是个人的开源项目,放到GitHub上是完全没有问题的。GitHub还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人的开源项目。
SVN的存储需要依赖一个服务器,而git所有的东西是放在线上的。节约成本,省时省力。
三、如何使用Git
远程仓库url:https://github.com/Bigtreeor/GitTest
1.安装git之后,要进行全局配置
查看全局配置 git config --global --list
命令 git config --global user.name "你的git名称"
命令 git config --global user.email "你的git验证邮箱"
git命令行的操作命令:
cd mkdir pwd rm ls
2.创建本地仓库
git init
本地仓库由 git 维护的三棵“树”组成:
第一个是你的 工作目录,它持有实际文件;
第二个是 暂存区(Index),临时保存你的改动;
最后是 HEAD,指向你最近一次提交后的结果。
-
git init -> 创建版本库
-
git add 文件名 -> 添加到暂存区
-
git commit -m '提交注释' ->提交到本地仓库
3.提交到git服务器
-
打开Git Bush
git add ‘文件名’
git add -u 提交所有被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add . 提交所有新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
git add -A 提交所有变化
add将修改的文件放到暂存区(暂存区在本机)
-
提交
git commit -m '我提交时候的备注(注释)'
查看commit状态: git status 用于显示工作目录和暂存区的状态
查看修改内容:git diff 你的文件名
-
版本回退
git log ( 查看日志)
git reflog (版本号)
回退命令:
git reset --hard HEAD^ 退回到上个版本 如果需要退回好多版本就在后面加上 ^ 例: git reset -- hard HEAD^^退回两个版本
git reset --hard 191e0c7 回退到指定版本
然后去查看readme.txt是否成功退回
-
删除
rm test.txt
git status 查看提交
git commit -m '确认删除'
或 放弃修改 git reset --hard 版本号(通过 git reflog)
4.推送到远程仓库
1. git remote add origin https://github.com/Bigtreeor/GitTest 设置远程仓库地址
2. git push -u origin master 将本地的库推送到master分支 (第一次推送要带上-u)-f 强制推送
git remote -v 查看远程仓库地址
git remote rm origin 删除远程仓库地址
之后 git push h就可以把本机的代码提交到远程仓库
git push (提交master分支 到远程仓库)
git push origin 分支名 (提交其他分支 到远程仓库)
获取远程仓库的更新数据:
git fetch:相当于是从远程获取最新到本地,不会自动merge
git pull:相当于是从远程获取最新版本并merge到本地
git pull origin 分支名 更新某个远程分支到本地
从服务器克隆数据: git clone https://github.com/Bigtreeor/GitTest
5.分支操作
-
查看分支:git branch
当前分支前有 * 号
-
创建分支:git branch <name>
-
切换分支:git checkout <name>
-
创建+切换分支:git checkout -b <name>
-
合并某分支到当前分支:git merge <name>
合并完以后就push,最好先pull一次 然后 git push
-
删除分支:git branch -d <name>
6.设置忽略文件
1.创建文件:.gitignore
2.忽略文件列表
# .gitignore 忽略文件列表
.DS_Store
node_modules/
/dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln