1.git基本操作
- 简介:分布式版本控制
- 分布式和集中式区别:分布式同一个git仓库,可以分布到不同的机器上
- 安装:
- ubuntu:
sudo apt-get git
- centos:
yum install git
- ubuntu:
- 验证:
git
- 创建版本库:
mkdir git_test
cd git_test
git init
- 创建版本:
git add .
# 添加修改到暂存区git commit -m '提交信息'
# 创建版本记录
- 查看版本记录:
git log
git log -- pretty=oneline
# 以简短的方式显示 - 回退:
git reset --hard HEAD^
git reset --hard 版本编号
git reset --hard origin/master
回到最新版本(强制,放弃本地)- HEAD指向最新版本,HEAD^表示前一个版本,HEAD~100表示前100版本
- 查看之前的操作记录:
git reflog
- 工作区:可认为为本地编辑的未提交的
- 版本库:暂存区
- 查看当前工作树状态:
git status
- 撤销修改:
git checkout --文件名
# 丢弃工作区该文件的改动 - 对比文件的不同:```git diff`
- 工作区与版本库对比:
git diff HEAD -- code.txt
- 出现的文件中 —代表head版本中的文件 +++代表工作区的文件
- 两个版本之间的不同:
git diff HEAD HAED^ -- code.txt
出现的文件中 第一个为—,第二个版本为+++
- 工作区与版本库对比:
- 删除文件:
rm 文件
- 删除的回退:
git checkout -- 文件
- 提交删除:
git rm 或者 git add .
2.git分支管理
- 主分支:master
- HEAD指向分支master,分支指向提交
- 创建和合并分支:增加指针并修改指向
git branch
查看有多少分支- 创建:
git checkout -b dev
# 创建dev分支 - 切换分支:
git checkout master
- 合并:
- 快速合并:
git merge dev
- 解决冲突:
git status
可查看是否冲突
git add .
git commit -m
解决冲突- 查看解决冲突后的版本日志:
git log --graph --pretty=oneline
- 查看解决冲突后的版本日志:
- 快速合并:
- 删除分支:
git branch -d dev
- 分支管理策略:默认合并并做一次新的提交,删除新分支,丢弃分支信息
- 禁止快速合并:
git merge -- no-ff -m '描述信息' 分支名称
- 例如bug分支合并
git stash
# 把当前工作现场储存起来,等以后恢复现场继续工作git stash list
# 工作区储存列表git stash pop
# 恢复工作现场
- 禁止快速合并:
3.github使用:中央服务器
- 创建仓库:
- 忽略文件:.gitconfig文件
- 添加ssh账户
- 生成ssh公钥:ssh-keygen -t rsa -C ‘邮箱地址’
- 进入主目录有两个文件:.pub为公钥文件,将其内容添加到网站中的ssh key中
- 克隆项目:
git clone 地址
- 拉取代码:
git pull [origin master]
- 推送代码:
git push [origin master]
- 本地跟踪远程分支:
git branch --set-upstream-to=origin/smart smart # 本地分支跟踪smart分支
- master:一般用于保存发布的项目代码
- dev:保存开发过程中的代码
- 小应用 & 小问题
- 强制拉取代码到本地:
git fetch --all
git reset --hard origin/master
git pull
- git总是提示输入用户名密码
- 加上本地凭证:
git config --global credential.helper store
- 再次执行一次输入用户名和密码的操作
- 之后的每次执行git都不会让输入用户名密码了
- 加上本地凭证:
- fatal: ‘origin’ does not appear to be a git repository…
- 原因:因为远程不存在origin这个仓库名称
- 解决方案:git remote add origin 仓库地址:
- 相关说明:
- git remote -v:查看远程仓库详细信息
- git remote remove orign:删除orign仓库
- 强制拉取代码到本地: