Git使用指南
Git使用指南
一、基本概念
git本地分为3个区域:1.工作区 2.暂存区 3.本地库
二、使用前配置
2.1 设置签名
使用用户名、邮箱地址区分不同开发人员的身份。这里的用户和邮箱与远程库的账号密码是无关的。
git config user.name tom
git config user.email tom@gmail.com
#设置项目级别签名
#保存位置在项目目录.git/config文件
git config --global user.name tom
git config --global user.email tom@gmail.com
#设置系统用户级别签名
#保存位置在windows用户家目录.gitconfig文件- 项目级别、仓库级别:仅在当前本地库范围内有效。
- 系统用户级别:登录当前操作系统的用户范围。
级别优先级
- 项目级别优先于系统用户级别。
- 只有系统,以系统用户级别签名。
- 必须有一个
2.2初始化工作空间
在工作目录内打开git bash,使用git init命令初始化。
git init
#在当前目录初始化为工作目录初始化完成后,目录下会自动创建.git目录。
2.3添加远程库
git可以完全单机使用,也可以添加远程库使用。
git remote add [远程库别名] [远程库地址]
#添加远程库
#远程库可使用http或ssh地址。从远程库复制地址。
git remote remove [远程库别名]
#删除远程库
git remote -v
#查看已添加的远程库信息2.4使用SSH登录远程库
使用http登录远程库,在push时会出现登录界面,使用远程库的账号密码进项验证。也可以使用ssh证书登录。
ssh-keygen -t rsa -C [邮箱地址]
#生成ssh证书
#证书保存在用户家目录的.ssh目录下
#证书文件为id_rsa(私钥)和id_rsa.pub(公钥)使用文本编辑器打开id_rsa.pub,将公钥内容复制,在远程库的ssh证书中进项添加。
三、使用git进项版本控制
3.1工作流程
git add [文件名]
#将代码文件从工作区添加到暂存区
git commit -m [备注] [文件名]
#将文件从暂存区提交到本地库
#-m 表示修改备注
git status
#查看git状态
git log
#查看历史版本记录(详细)
git reflog
#查看历史版本记录(简明)3.2历史版本切换
git reflog
#查看历史版本
git reset --hard 9aebe0
#切换到指定的历史版本
#reset三个参数对比
#--soft 移动本地库指针
#--mixed 移动本地库指针、重置暂存区
#--hard 移动本地库指针、重置暂存区、重置工作区3.3分支
在本地库中建立分支和代码合并。
git branch -v
#查看当前所有的分支
git branch hot_fix
#创建一个名称为hot_fix的新分支
git checkout hot_fix
#切换到hot_fix分支
//合并分支
git add apple.txt
#将工作区代码提交到暂存区
git commit apple.txt
#将暂存区代码提交到本地库
git checkout master
#切换到主干
git merge hot_fix
#合并hot_fix分支到master中
//合并分支冲突
#合并时如有冲突,则会提示失败
#vim编辑器编辑冲突的代码。
#代码中会标识出冲突的部分,需要手动编辑好之后在提交。
#冲突的文件会带有(hot_fix|MERGING)标记
git commit -m "注释内容"
#手动修改后执行命令
#(hot_fix|MERGING)标记就会消失3.4 比较文件差异
git diff [文件名]
#将工作区和暂存区中的文件进项比较
git diff head abc.txt
#将工作区和本地库中的文件比较
git diff head
#不指定文件名四、远程库操作
4.1 克隆
git clone [远程库地址]
#将远程库克隆到本地在将远程库克隆到本地的同时,git会完成三项操作:
- 完整地把远程库下载到本地
- 创建origin远程地址别名
- 初始化本地库
4.2 抓取、拉取、推送
抓取
fit fetch origin master
#抓取远程库,下载到本地,但是不修改工作区内容。拉取
pull = fetch + merge
git fetch origin master
#抓取远程库
git merge origin master
#合并远程库
git pull origin master
#拉取远程库
#从远程库合并到本地库,可能会存在冲突,人工处理完冲突后,再执行git commit -m [备注]推送
git push [远程库别名] master
将代码推送到远程库