目录
下载地址: https://git-scm.com/download
提交暂存区到本地库:git commit -m '备注提交内容'
本地分支和远程分支第一次关联:git push origin xxx分支名字
git介绍
Git 是一种分布式版本控制工具, 客户端提取的不是最新版本的文件快照, 而是把代码仓库完整地镜像下来 (本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份 。
git安装
下载地址: https://git-scm.com/download
- Git GUI:Git提供的图形界面工具
- Git Bash:Git提供的命令行工具
配置全局用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
git config --global user.name "fyy"
git config --global user.email "fengyueyue1129@qq.com"
配置SSH
# 生成sshkey
ssh-keygen -t rsa
#执行完毕上面命令之后,按几次回车
#查看公钥的内容,复制到git的sshkey位置
cat ~/.ssh/id_rsa.pub
git和代码托管中心
-
代码托管中心是基于网络服务器的远程代码仓库, 一般我们简单称为远程库。
- 局域网
- 互联网
- GitHub (外网),可能无法访问
- Gitee 码云(国内网站)
比较出名的代码托管中心: GitHub 和 码云
码云的使用
创建仓库
创建组织
git工作机制
- 工作区:存放代码的地方
- 暂存区:临时存储,将工作区的代码让git知道,通过git add将代码放到暂存区
- 本地库:将暂存区的代码提交到本地库,就会生成对应的历史版本,这个代码就无法删除
- 远程库:将本地库的代码推送到远程库
git常用命令
初始化本地库:git init
创建本地仓库:
查看本地库状态:git status
添加工作区到暂存区:git add
git add . #当前文件夹以及子文件夹(所有)
git add fileName #某个文件
提交暂存区到本地库:git commit -m '备注提交内容'
查看日志信息:git log
作用:查看提交记录
git log #日志
git log --pretty=oneline #美化输出,行格式显示
git log --pretty=oneline --abbrev-commit #简化版本号 行格式显示
#历史命令日志:版本相关,如果再版本回滚时误操作了,可以通过这个地方来找历史的版本号和命令进行恢复
git reflog
版本回退:git reset
git reset --hard HEAD #放弃当前所有修改,回退到当前版本
git reset --hard HEAD^ #回退到上一个版本
撤销修改
git checkout xxx #撤销某个文件修改,这里的数据还没有提交到暂存区
git checkout . #撤销当前文件夹内所有修改
git reset --hard HEAD #放弃暂存区中所有的修改和新增
克隆远程仓库:git clone
git clone xxxx地址 (不加分支默认master)
#默认拉取master分支代码
git clone git@gitee.com:liuzhenyu666/test0130.git
#克隆远程仓库及其分支(了解)
git clone -b xxxxx分支 xxxx地址 (不加分支默认master)
#拉取dev分支代码
git clone -b dev git@gitee.com:liuzhenyu666/test0130.git
同步远程仓库到本地:git pull
推送到远程仓库:git push
工作常用步骤:
git status #查看当前仓库状态
git add . #添加到暂存区
git commit -m 'xxxx' #添加到本地仓库
git pull # 同步远程仓库到本地,检查远程仓库是否比本地版本更高一些
git push #推送到远程仓库
分支管理
什么是分支
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言, 分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)
分支的好处
同时并行推进多个功能开发,提高开发效率。
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
分支的操作
查看分支
git branch #查看本地分支
git branch -a #查看所有分支
创建本地分支:git checkout
git checkout -b xxx分支名字 #创建并切分支
git add .
git commit -m ''
git pull
git push origin xxx分支名字
合并分支到当前分支:git merge
git checkout master #切换到master分支
git merge xxx分支名字 #合并分支
删除分支:git branch -d
git branch -d # 删除已合并的分支,有未合并代码不允许删除
git branch -D # 强制删除有未合并代码的分支
git push origin --delete dev_new #删除远程分支
本地分支和远程分支第一次关联:git push origin xxx分支名字
合并远程分支(master分支之下):
git checkout master
git pull origin xxx分支名字 #远程拉取XX分支
git merge origin /xxx分支名字
git push
上传分支+合并分支:
产生冲突
冲突产生的表现:
后面状态为MERGING
冲突产生的原因:
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。
解决冲突:
- CONFLICT => 表明该文件有冲突,被至少2人修改。
- 查看日志,去线下和对应修改人员沟通,确定如何修改。
- 切忌在协作开发时,随意修改或者删除他人代码
过程:
现在我们在新建一个分支,dev1
git checkout -b dev1
查看
$ git branch
dev
* dev1
master
我们在div1分支下,对文件里边的内容进行修改
然后上传
git add .
git commit -m"div1进行提交"
git checkout master
git merge dev1
git push
上传成功之后,我们在切换到dev分支之下,我们可以看到 div 分支之下的文件当中并没有我们在dev分支之下的文件当中写的内容,现在我们重写一个新的内容
同样进行上传,但是当我们在合并分支的时候却出现
打开我们的文件
这说明我们产生了冲突,我们必须手动解决冲突,只需要我们保留我们想要的结果
更改完错误以后需要我们commit一下,然后上传