SVN is centralized version control tools git is a distributed version control tools
Workspace (writing code) git add - "staging area (temporary storage of data may withdraw) git commit -> local library (the version recorded history irrevocable)
**
user's manual
no git svn repository and there is this is the biggest difference
**
(1)本地库初始化 git init 生成 .git 目录
(2)设置签名以区别不同开发人员
仅在当前本地库有效:
git config user.name xxxx
git config user.email cccc
在当前操作系统都有效:
git config --global user.name xxxx
git config --global cccccc
项目级别优先
做完上述操作之后会在 用户家目录的 .gitconfig 文件里写好你的配置
(3)git status 显示你的状态
no commits yet 表示本地库没东西
nothing to commit 暂存区没东西
git add 进行对文件的追踪并且将此文件放到暂存区里面
git rm --cached 从暂存区中取消
git commit -m "message"存储到本地库
(4)git log 查看历史记录(每次提交都会有一条历史记录) q退出
序列号是hash值 作为版本号的作用
HEAD表示指向记录的指针
(5)git log --pretty==oneline 用精简的方式显示历史记录
git log --oneline在pretty的基础上只显示hash值的一部分(但是这一部分也是可以精确定位一条记录的)(只显示到目前最新版本的记录 比HEAD版本更新的版本看不到)
git reflog 可显示移动到所需要的历史版本所需要的步数(会显示完整的历史记录)
(6)版本的前进和后退
git reset --hard hash版本值
git reset --hard HEAD~n 后退n个版本
**
hard soft mixed three parameters
These three parameters are different operation target
**
soft 本地库
mixed 本地库 暂存区
hard 本地库 暂存区 工作区
**
When delete a file recovery operation
**
1工作区删除文件的操作还没有添加到暂存区 : git checkout -- <file>
2删除操作添加到暂存区 但没到本地库:git reset --hard HEAD (因为HEAD现在指向的本地库的历史记录并没有被删除)
3删除操作提交到本地库了 : git reset --hard HEAD 指向被删除文件还存在时的历史记录
**
Diff file
**
git diff 文件 比较工作区的文件和暂存区文件的区别(以行为单位)
git diff HAED^^^ 文件 比较工作区的文件和本地库文件的区别(以行为单位)
**
Branch Management
Use multiple lines while promoting multiple tasks each branch has its own pointer to the record you just created out of the branches and trunk are the same as the content modification does not affect the main branches
**
git branch 创建分支 (多创建一个指针指向当前版本)
git branch -v 查看分支
git checkout 切换分支
合并分支:
(1)git checkout 切换到接收修改的分支
(2)git merge 有新内容的分支
**分支冲突**
把冲突文件修改好了之后就git commit -m "message" 进行提交 不可以加文件名
在从另一分支把文件同步过来
**
The basic principle git
**
(1)用hash来保证版本的一致
(2)保存版本的机制:
SVN:集中式的只有一个完整的中央服务器 将保存的信息看作是一组基本的文件和每个文件随时间逐步累积的差异 存储 文件名 版本 多少行 每行什么内容 修改的内容 当你需要的时候把原始的内容和更改的内容拼一起 即每个版本只保存你改变了的一点点
GIT:每次更新的时候都会对当前全部文件制作一个快照并保存这个索引 没有修改的文件只是保留一个链接指向之前存储的文件
**
github
**
团队内合作 :创建远程库后
(1)git remote add 别名 远程库地址
git remote -v 查看
git push 别名 分支名
(2)其他成员:
git clone 把远程库下载并且初始化本地库 远程库地址所拥有的别名也有
(3)把远程库的修改拉取到本地:
pull : 等于fetch + merge 如果只是想单独拉取下来而不进行合并 可以只执行fetch
git pull origin master
跨团队合作:
(1)在给github 上登陆别的团队的远程库地址 点击fork 会创造出自己的远程库 还需要clone成本地库 push
(2)pull request等待别人审核 merge 到自己的远程库
**SSH登陆**
$ cd ~家目录
$ rm -rvf .ssh删除.ssh目录
$ ssh-keygen -t rsa -C 邮箱运行命令生成.ssh密钥目录
$ cd .ssh查看文件列表
$ cat id_rsa.pub复制id_rsa.pub文件内容,登录GitHub,点击用户头像→Settings→SSH and GPG keys New SSH Key 输入复制的密钥信息
git remote add origin_ssh [email protected]:用户名/git名字.git 创建远程地址别名
推送文件进行测试