1.Git 是目前世界上最先进的分布式版本控制系统
2.与SVN区别是,集中式,版本放在中央库
3.windows安装git
msysgit是windows版本的git
4.git是分布式版本控制系统,所以需要填写用户名和邮箱名作为日标记
git config --global user.name ""
git config --global user.email""
配置全局的git
5.操作
创建版本库
选好文件夹作为git本地仓库
git init 创建本地仓库
git add file.txt 提交到缓存
git cmmit -m '注释' 提交到当前分支上
git status 查看当前仓库状态
git diff file.txt 查看修改的内容
git log 查看历史修改记录
git log --pretty=oneline 单行显示
git reset --hard HEAD^ 回退到上一个版本
git reset --hard HEAD^ 回退到上上个版本
git reset --hard HEAD~100 到上100个版本 cat file.txt 查看文件内容
git reset ---hard 版本号
如果关掉命令行找不到版本号
git reflog
6.工作区与暂存区的区别
工作区就是电脑上的目录
版本库 .git 其中有stage暂存区,自动创建的分支master,指向master的指针
git checkout -- file
丢弃工作区的修改
添加到暂存区的内容不被撤销
删除文件
rm file
不想删除
git checkout -- file (恢复)
git commit - m "" 提交删除(彻底删除)
7.远程仓库
SSH加密
创建SSH Key 用户主目录下 .ssh 目录 (id_rsa私匙和id_rsa.pub公匙)
ssh-keygen -t rsa --C ‘’email"
在github Add SSH Key里粘贴id_rsa.pub 文件的内容
7.1关联远成仓库
1.github上创建一个新的仓库,全部默认,作为空仓库
git remote add origin ....git
git push -u origin master
-u命令,不但会把本地的master分支内容推送到远程新的master,还会把本地的master分支和远程的master分支关联起来,以后推送或拉取时可以简化命令
2.github上创建的仓库含有reademe.md文件的
需要将远程分支上的内容clone下来
git clone remotebranch
7.2创建与合并分支
git每次提交都会把他们串成一条时间线,这条线就是一个分支,Git里叫主分支,master,HEAD指向master,master指向提交,HEAD只想的就是当前分支
git checkout -b ng 创建并切换分支
=git branch ng(创建分支) +git checkout ng(切换分支)
在ng分支上做完修改在master分支上不可见
git merge ng
将ng上修改的内容合并到主分支master上
删除分支
git branch -d ng
冲突问题
在不同分支上修改同一个文件会产生冲突
<<<HEAD指主分支
=======
>>>ng 分支
手动解决冲突,master上commit然后删除分支
fast forward 新建一个分支做修改后,切换回主分支master,master未作修
改时进行合并就叫fast forward
当直接merge时 ,删除分之后没有分支信息
git merge --no-ff -m "注释,分之合并信息" 分支 加入分支信息
临时插入的工作,修复bug
分支上的工作没有完成时
临时停下当时分支上的工作,无法提交的时候(貌似用处不大)
git stash 当前分支就是干净的了
原理是将当前工作区的内容保存到栈里
切换到master 建立分支修复bug
修复完后需要切换回分支继续工作
git stash list 显示Git栈内的所有备份,可引用这个列表来决定从哪个地方恢复
git stash apply (恢复到最近一次保存,不删除站内的内容)
git stash apply stash@{0}(恢复到某次保存)
git stash pop 从栈中读取最近一次保存的内容,恢复工作区的相关内容(并删除栈中本次记录)
git stash clear 清空git 栈
git stash drop 删除一条
多人协作
当从远程库克隆时,Git自动把本地的master分支和远程的master分支对应起来,并且远程库的默认名称是origin
git remote 查看远程分支信息(当前提交的分支)
git remote -v 查看远程仓库详细信息
git push origin dev:dev (本地分支,远程分支)
如果当前在dev分支下可以直接
git push
删除远程分支
git push origin :dev