git 和 SVN 的区别
SVN优缺点
- 优点:
- 集中是管理系统
- 管理方便,逻辑明确
- 易于管理,集中式服务器更能保证安全性
- 代码一致性非常高
- 适合开发人数不多的项目开发
- 缺点:
- 服务器压力太大,数据库容量暴增
- 如果不能连接到服务器上,基本上不可以工作,如果服务器不能连接上,就不能提交,还原,对比等等
- 不适合开源开发
git优缺点
- 优点:
- 适合分布式开发,强调个体
- 公共服务器压力和数据量都不会太大
- 速度快,灵活
- 任意两个开发者之间可以很容易的解决冲突
- 离线工作
- 缺点:
- 学习周期相对而言比较长
- 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息
git Bash 使用(命令行使用)
注册github账号或gitee账号
- 从github或gitee上下载项目
- 切换到存放git版本库的地方
git clone url git创建地址或gitee仓库地址
设置全局用户名和邮箱
提交代码的时候就会将用户名 和邮箱存入版本库中,其他开发人员就可以看到是谁提交的代码
git config --global user.name 用户名
git config --global user.email 邮箱
查看全局用户名和邮箱
git config --global user.name
git config --global user.email
查看所有配置信息
git config --list
git的三个区
- workspace 工作区(当前编辑的代码区):新添 加的,和修改的未 add 操作的。
- stage 暂存区(作为过渡层、避免误操作、保护工作区和版本区、分支处理):add 操作过后,会进入暂存区
- repository 版本库(版本控制,本地仓库):commit 操作后,会进入本地仓库
远程仓库
- remote(远程仓库):push 操作后,会提交到远程仓库
git 常用命令
-
git status 显示有变更的文件
-
将工作区的内容添加到暂存区
git add 文件 文件 ……
git add .
git add -A
git add *
git add 文件夹
-
将暂存区的内容添加到版本库
git commit -m ‘注释内容’
git commit 文件 文件 -m ‘注释内容’
-
将工作区的内容添加到版本库
git commit -a -m ‘注释’
-
查看日志:如果版本太多,一次显示不全,想要退出此状态,请按 q
git log
对比功能
-
工作区与暂存区的差异对比
git diff
-
暂存区也版本库的差异对比
git diff --cached
git diff --staged
-
工作区与版本库的差异对比
git diff master
撤销功能
-
从暂存区撤销回工作区,发现提交错了,退回一步
git reset HEAD 文件名
-
撤销上一次 add 提交的所有文件
git reset HEAD
-
从工作区撤销回上一次提交的版本区
git checkout – 文件名
-
撤销上一次的提交命令,重新提交新的代码
git commit -a -m ‘注释’ --amend
删除功能
-
如果工作区删除了一个文 件,通过此命令可以把暂存区的文件删除
git rm 文件名
-
如果删除暂存区的文件,那么工作区和暂存区的文件都会删除
git rm -f 文件名
-
只删除暂存区的文件,工作区的文件保留
git rm --cached 文件名
恢复功能
-
还原删除的文件
git checkout (commit id) <指定文件>
-
还原版本
git reset --hard (commit id)
git reset --hard HEAD^ (返回上一个版本)
git reset --hard HEAD~ (返回上几个版本)
-
显示操作记录,可以回到当前版本
git reflog
同步到远程仓库
-
查看远程仓库的名字
git remote
-
推送到远程仓库
git push origin master
-
强制 push 到远程仓库
git push -u origin master -f
多人协作解决冲突
-
从远程获取但不与当前代码合并
git fetch origin
git diff master origin/master (查看两个冲突文件的异同)
git merge origin/master (合并)
-
从远程获取并与当前代码合并
git pull origin master
git分支结构
-
查看所有本地分支
git branch
-
查看所有远程分支
git branch -r
-
查看所有本地分支和远程分支
git branch -a
-
创建一个新分支
git branch 分支名
-
切换分支
git checkout 分支名
-
合并分支
git merge 分支名
-
删除分支
git branch -d 分支名
-
创建并切换到新分支
git checkout -b 分支名