一、Git概述
1.定义
git是分布式版本控制系统
2.git与svn的比较
版本库:版本库(仓库)可以简单理解成一个目录(文件夹)
1)svn是集中式版本控制系统,版本库放在中央服务上,工作的流程如下:
构建前——从中央服务器拉取最新的版本库
构建中——在各自的电脑上构建项目
构建后——将自己的版本库推送到中央服务器
2)git是分布式版本控制系统,没有中央服务器,工作流程如下:
构建前——拉取别人的最新对版本库的修改
构建中——在各自的电脑上构建项目
构建后——将自己的修改推送给别人
3)git和svn的区别
svn需要联网,git不需要联网,svn有中央服务器,git每个人的电脑都相当于中央服务器
2.Git的使用
1)详细教程请移步到 转自廖雪峰的一篇文档,很好很强大
2)安装步骤
1.msysgit安装(windows版的Git)
2.安装完成后,在开始菜单中找到“Git”->"Git Bash"
在命令行中输入一下命令 完成配置
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
3) 创建版本库
1.常用命令
$ git init 初始化Git仓库
$ git add
添加文件,可重复多次操作 $ git commit -m '<说明文字>' 提交,完成
$ git status 查看Git仓库的状态
$ git diff 查看修改的内容
$ git log 提交历史 后面可以加上 --pretty==oneline 简化git显示
$ git reset --hard HEAD^ 回滚上一个版本
$ git reset --hard HEAD^^ 回滚上上一个版本
$ git reset --hard HEAD~100 回滚往上100个版本
$ git reset --hard
回滚到指定版本,可用于找回回滚之前的版本 版本号没有必要写全 $ git reflog 命令历史,可用查找你建立所有仓库版(包括删除 回滚)的版本号
$ clear 清空 Git Bash上 历史记录
$ git check --readme.txt 让文件回到最近一次 git commit 或 git add时的状态
$ git rm
删除文件 $ rm
删除文件
4)工作区和暂存区
每次修改 如果不 git add 加入到缓存区 那么git commit
5)远程仓库
1.步骤
1)创建 SSH Key
跳转到用户主目录下,例如 c盘
<1>查看是否已经有了ssh秘钥
$ cd ~/.ssh
<2>生成秘钥
$ ssh-keygen -t rsa -c "[email protected]"
<3>最后得到两个文件
id_rsa 私钥(不能泄露)
id_rsa.pub 公钥(可以告诉任何人)
2)登陆GitHub, 在 setting中找到 SSH 相关的选项中(具体的要看Github网站的更新情况,)
,add SSh key,Title随意,Key文本框中填写上 id_rsa.pub文件里的内容,如下图
3)添加远程库
<1> 登陆GitHub, 找到 new repository(创建存储库),如下图
如果进展顺利的话,应该会出现
<2>本地Git库关联远程库相关联
$ git remote add origin [email protected]:CreateEngine/learngit.git
<3>然后,以后只要本地做了提交,就可以把本地master分支的最新修改推送至 GitHub,命令如下
$ git push origin master
<4> 远程库 关联本地Git库
$ git clone [email protected]:CreateEngine/learngit.git
4)分支管理
<1> 概述
类似于平行宇宙,多人协作,分别不同的分支上开发,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全又不影响别人工作。
<2>创建与合并分支
$ git branch dev 创建dev分支
$ git checkout dev 切换到dev分支
$ git checkout -b dev 创建dev分支并切换到dev分支
$ git branch 查看当前分支
$ git merge shifeng 将 shifeng分支合并到当前分支上
$ git branch -d shifeng 删除shifeng分支
<3> 解决冲突
先解决冲突文件,然后 git add git commit即可
$ git log --graph 查看分支合并图
$ git log --graph --pretty=oneline --abbrev-commit
<3>分支管理策略
$ git merge --no-ff -m "merge with no-ff" dev 使用 --no-ff参数,表示禁用 Fast forward
<4> Bug 分支
$ git stash 把当前工作现场“储藏”起来
$ git stash list 查看储藏的工作区
$ git stash apply 恢复储藏区,恢复后,stash内容不删除
$ git stash drop 删除恢复后的stash内容
$ git stash pop 恢复的同时把stash内容也删除
$ git stash apply stash@{0} 恢复指定的stash(先使用 git stash list 命令查看 stash 列表)
<5>Feature 分支
$ git branch -d feature-vulcan 删除分支
<6> 多人协作
$ git remote 查看远程库的信息
$ git remote -v 显示更详细点的信息
<7> 常见问题
1) 本地库添加远程库
$ git push -u origin master (第一个推送 -u 关联本地库和远程库)
如果出现 类似如下的错误提示
To [email protected]:creatEngine/react-sf.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:creatEngine/react-sf.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
可能是以为远程库有东西没有拉取到本地(如果 readme.txt文件)使用如下命令进行代码合并
$ git pull --rebase origin master