1.git是什么
目前世界上最先进的分布式版本控制系统
2.svn和git的区别
svn是集中式版本控制系统
git是分布式版本控制系统
3.windows上如何安装git
msysGit是windows版本的git,网上下载后进行默认安装即可,完成后在菜单栏找git->git bash
会弹出一个命令窗口,说明git安装成功
安装完成后,还需最后一步设置,在命令行输入:(git为分布式版本管理系统,所以需要用户名,邮箱作为唯一标识)
git config --global user.name "chenshan"
git config --global user.email '869395614'
4.如何操作
创建版本库(仓库respository),可以理解为一个目录,里面的所有文件都可以被git管理起来
创建一个版本库也非常简单:创建一个文件夹,进入文件夹里,执行git init
添加文件到版本库:在文件夹里新建一个文件111.txt,执行git add 111.txt ;git commit -m "111.txt提交"/git add --all
查看是否有文件未提交:git status;
查看文件到底做了哪些修改:git diff 111.txt;
版本回退:查看提交历史记录:git log/git log -pretty=oneline
版本回退:git reset -hard HEAD^/git reset -hard HEAD^^/git reset -hard HEAD~100
如果回退了,又想撤销回退操作git relog
文件没有添加到暂存区,想回退,可以:直接修改文件内容,再提交/或回退到上一个版本/git checkout --111.txt丢掉工作区的修改
删除文件 rm 111.txt/或直接在工作区中删除 ;git commit
只要没commit之前,想要恢复 git checkout --111.txt
5.远程仓库
本地仓库和远程仓库github之间传输是通过SSH加密,所以需要一点设置
a.创建ssh key.在用户目录下,有没有看到.ssh目录,如果有,看目录下有没有id_rsa(私钥)和id_rsa.pub(公钥)这两个文件,如果有,直接跳过如下命令
打开命令行:ssh-Keygen -t rsa -C "[email protected]"
b.登入github,设置ssh key
c.创建远程库
d.把本地仓库与之关联,把本地仓库内容推送到github上
git remote add orign https://github/testgit.git
git push -u orign master(第一次推送,加-u参数)
e.把远程仓库内容拉到本地
git clone https://github/testgit.git
6.创建与合并分支
创建并切换分支:git checkout -b dev 相当于两条命令 git branch dev;git checkout dev
查看当前分支:git branch
把dev分支上的内容合并到master上,在master分支上执行 git merge dev(合并时,一般用fast-forward模式,非常快,在这种模式下,删除分支后,会丢掉分支信息,用-no-ff禁用fast-forward:git merge -no-ff -m '注释' dev)
删除dev分支:git branch -d dev
在自己分支上工作时,有个不得不修改的bug地紧急处理,但是又不想提交目前工作到一半时的工作状态
git stash将当前的工作现状隐藏起来
工作区是干净的,工作现场去哪里了呢? git stash list来查看
工作现场恢复:git trash apply 恢复后,trash内容并不删除,再用git trash drop 删除
或者直接一步到位 git trash pop
7.多人协作
查看远程库的信息git remote/详细信息 git remote -v
别人已经修改了文件提交了,但是你本地的文件还是之前的文件,你提交会发生冲突,所以,先git pull
git pull失败了,可能提示git branch --set-upstream-to=orgin/dev,就是没有指定本地与远程dev分支的链接:git branch --set-upstream dev origin/dev
总结:
本地建立仓库:git init
添加远程仓库:git remote add origin https://github.com
创建远程dev分支到本地:git checkout -b dev origin/dev
指定本地dev分支与远程origin/dev分支的链接:git branch --set-upstream-to=origin/dev dev
将本地master分支推送到远程origin主机的dev分支:git push -u origin dev
本地仓库和远程仓库不一致,用git pull
pull时如果拒绝合并不相关历史:git pull --allow_unrelated_histories