文章目录
- 一、centos安装
-
- [1.查看版本-git --version](#1.查看版本-git --version)
- [2.卸载-sudo yum remve git -y](#2.卸载-sudo yum remve git -y)
- [3.下载-sudo yum install git -y](#3.下载-sudo yum install git -y)
- 二、基本操作
-
- [1.创建本地仓库-git init](#1.创建本地仓库-git init)
- [2.配置本地仓库-git config](#2.配置本地仓库-git config)
- 3.工作区,暂存区,版本库
- [4.添加到暂存区中-git add](#4.添加到暂存区中-git add)
- [5.添加到版本库中-git commit](#5.添加到版本库中-git commit)
- [6.打印日志-git log](#6.打印日志-git log)
- [7.查看提交后文件是否改动-git status](#7.查看提交后文件是否改动-git status)
- [8.版本回退-git reset](#8.版本回退-git reset)
- [9.查看提交历史-git reflog](#9.查看提交历史-git reflog)
- [10.撤销修改-git checkout](#10.撤销修改-git checkout)
- [11.删除文件-git rm](#11.删除文件-git rm)
- 三、分支管理
-
- [1.查看当前分支-git branch](#1.查看当前分支-git branch)
- [2.创建分支-git branch](#2.创建分支-git branch)
- [3.切换分支-git checkout](#3.切换分支-git checkout)
- [4.合并分支-git merge](#4.合并分支-git merge)
- [5.删除本地分支-git branch -d](#5.删除本地分支-git branch -d)
- [6.删除远程分支-git push origin --delete](#6.删除远程分支-git push origin --delete)
- [7.修改分支名称git branch -m](#7.修改分支名称git branch -m)
- [8.保存当前工作-git stash](#8.保存当前工作-git stash)
- 三、远程操作
-
- [1.克隆仓库-HTTPS-git clone](#1.克隆仓库-HTTPS-git clone)
- [2.向远程仓库推送-git push](#2.向远程仓库推送-git push)
- [3.拉取远程仓库-git pull](#3.拉取远程仓库-git pull)
- 4.忽略特殊文件-.gitignore
- 四、标签管理
-
- [1.创建标签-git tag](#1.创建标签-git tag)
- [2.删除标签-git tag -d](#2.删除标签-git tag -d)
- 3.推送标签
- 五、多人协作
-
- 同一分支下的多人协作
- 不同分支下多人协作
- [解决git branch -a打印已删除分支方法](#解决git branch -a打印已删除分支方法)
- 六、企业开发模型
一、centos安装
1.查看版本-git --version
git --version
2.卸载-sudo yum remve git -y
sudo yum remve git -y
3.下载-sudo yum install git -y
sudo yum install git -y
二、基本操作
1.创建本地仓库-git init
git init
2.配置本地仓库-git config
需要配置name和email,name是主页@后内容,email是账号邮箱
配置name和email,只在当前仓库中
git config user.name "aaa"//创建name为aaa
git config user.email "123@qq.com"//创建email为123@qq.com
查看配置内容
git config -l
删除配置,只在当前仓库中
git config --unset user.name
git config --unset user.email
配置name和email,在所有本地仓库中
git config --global user.name "aaa"//创建name为aaa
git config --global user.email "123@qq.com"//创建email为123@qq.com
删除配置,在所有本地仓库中
git config --global --unset user.name
git config --global --unset user.email
3.工作区,暂存区,版本库
创建的文件都是在工作区,文件add之后到缓存区,文件commit之后到版本库
4.添加到暂存区中-git add
//将当前路径下所有文件添加到暂存区中
git add .
//将文件1添加到暂存区中
git add 文件1
//将123添加到暂存区中
git add 123
5.添加到版本库中-git commit
//-m用于提交缓存区文件,"测试程序"是日志
git commit -m "测试程序"
6.打印日志-git log
git log
commit b9e3a0d708ee5a81ea5ff383c6dabe716eec8cf1 (HEAD -> master)
Author: StephenZhou <stephenzhou@StephenZhou.www.malloc.pro>
Date: Tue Dec 29 12:15:13 2020 +0800
test add new file "test.c"
- commit后是id,head->表示指向哪,master是主仓库,head->分支仓库则代表提交到分支仓库
- Author是提交者,显示格式是:用户名 <邮箱>
- Date的意思是提交时间
- 注释
7.查看提交后文件是否改动-git status
git status//查看本地文件提交情况
8.版本回退-git reset
第一步git log查看版本,之后git reset回滚
要回滚id,是commit后面的id,调用git log可以看到
本质是回退的版本库内容
git reset --soft 要回滚id//只回退版本库
git reset --mixed 要回滚id//只回退版本库,缓存区,回退默认
git reset --hard 要回滚id//只回退版本库,缓存区,工作区
9.查看提交历史-git reflog
凡是对仓库版本进行迭代的都会出现在这个里面,包括你回滚版本都会出现在这个历史中,下面橙色字就是我们需要id
git reflog
10.撤销修改-git checkout
代码只在工作区
git checkout -- file//将file文件恢复到上次提交状态
代码在工作区,缓存区
git reset --hard HEAD file//回退file到当前版本
代码在工作区,缓存区,版本区,前提条件没有push即可
git reset --hard HEAD^ file//回退file到上一个版本
11.删除文件-git rm
git rm file//删除file文件
git commit -m "delete file//删除文件后需要commit一下
三、分支管理
1.查看当前分支-git branch
git branch//列出本地分支
git branch -a//列出本地和远程分支
2.创建分支-git branch
git branch dev//创建dev分支
3.切换分支-git checkout
git checkout master//切换为master分支
4.合并分支-git merge
想要把分支提交至master,只需要切换到master仓库,并执行git merge 分支名,前提是合并分支前已经提交
git checkout master//切换为master分支
git merge dev//将dev分支合并到master分支
合并冲突
原本master分支有一个文件内容是aaa,然后创建新分支dev,将文件内容修改为bbb,master分支将文件内容修改为ccc,此时如果将dev合并到master当中就会发生冲突,此时需要手动解决,将冲突的内容删除,例如只能保留ccc或者bbb,并且删除后要提交一次
5.删除本地分支-git branch -d
其中把d改成D就是强制删除,注意,删除分支1不能在分支1中删除,必须切换到分支2时,删除分支1
git branch -d 分支名
6.删除远程分支-git push origin --delete
git push origin --delete 远程分支名
7.修改分支名称git branch -m
git branch -m 分支名 新的分支名
8.保存当前工作-git stash
git stash
在当前工作区1执行完之后,可以切换别的分支工作区2,之后再切回来工作区1的时候,执行以下代码,状态恢复
git stash pop
三、远程操作
1.克隆仓库-HTTPS-git clone
注意不能在任意一个本地仓库所存在的目录下执行,本地仓库里也有master等内容,一般是在根目录,不用提前git init
git clone https://gitee.com/peng_zhihui/Dummy-Robot.git
2.向远程仓库推送-git push
本地仓库:远程仓库
git push origin master:master//提交本地仓库master分支到远程分支master,前提是切换到本地仓库
git push origin dev:master//提交本地仓库dev分支到远程分支master,前提是切换到本地仓库
3.拉取远程仓库-git pull
git pull origin master:master//将远程仓库master分支代码拉取并合并到本地master分支,前提是切换到本地仓库
4.忽略特殊文件-.gitignore
如果在add时有些文件不想添加,除了一个一个add之外还可以将不想添加的文件放入.gitignore中,.gitignore文件必须创建在根目录的工作区中
*.so//在.gitignore文件中写入这个,表示不想传送以.so结尾的文件
!c.so//不排除c.so文件
四、标签管理
1.创建标签-git tag
git tag//查看所有标签
git tag v1.0//创建标签v1.0,代表最新一次提交的id
git tag v1.0 具体id//将具体的id替换为v1.0
2.删除标签-git tag -d
git tag -d v1.0//将v1.0标签删除
git push origin :v1.0//将远程仓库中v1.0删除
3.推送标签
git push origin v1.0//推送v1.0标签到远程仓库
git push origin --tag//推送所有标签到远程仓库
五、多人协作
同一分支下的多人协作
1.准备
目标:master分支下file.txt文件新增代码aaa 和bbb
实现,由开发人员1新增代码aaa,由开发人员2新增代码bbb
条件:在一个分支下完成操作
- 在gitee新建分支dev
- 开发人员1在工作区git pull,已经建立连接
- 开发人员2在本地git clone 仓库链接,没有建立连接
2.协作
-
开发人员1输入,git checkout -b dev origin/dev ,创建本地dev分支并且切换到本地dev,同时本地dev分支和远程dev分支建立了连接
-
开发人员1对file.txt文件修改内容aaa,然后add和commit,此时在本地分支dev中file.txt修改了代码
-
开发人员1将内容推送git push,已经连接可以省略部分
-
如果开发人员2输入,git checkout -b dev,创建本地dev分支并且切换到本地dev,本地dev分支和远程dev分支没有建立了连接,不能用git pull(错误示范)
-
如果开发人员2输入,git checkout -b dev origin/dev,创建本地dev分支并且切换到本地dev,本地dev分支和远程dev分支建立了连接,能用git pull(正确示范)
-
开发人员2对file.txt文件修改内容bbb,然后add和commit,此时在本地分支dev中file.txt修改了代码
-
开发人员2将内容推送git push,已经连接可以省略部分(注意:如果开发人员2要修改的位置已经被别人修改了,那么需要git pull,把远程内容拉下来手动修改)
-
手动修改完后再git push
3.将内容合并进master分支
1.pull requests申请单
在gitee中找到pull requests,源分支选择dev分支,目标分支选择master分支,完善PR
或者
2.本地操作
- 开发人员1在本地dev分支中git pull,将远程dev分支中代码跟新到本地
- 开发人员1git checkout master,切换为master分支,然后git pull将远程master分支中代码跟新到本地
- 开发人员1git checkout dev,切换到dev分支,然后git merge master 将本地master分支合并到dev分支,确保合并后代码不会冲突,如果冲突就在dev分支中修改
- 开发人员1git checkout master,切换为master分支,将没有问题的代码合并,输入git merge dev
- 开发人员1git push即可
- 完成开发后在gitee删除dev分支
4.总结
- 写好代码后,add,commit,之后git push
- 如果失败,可能是远程分支比本地更块更新,需要先将最新代码git pull下来尝试合并
- 如果合并有冲突,则解决冲突,然后合并,然后git push
- 将分支dev合并到master分支,然后删除dev分支
不同分支下多人协作
1.准备
目标:master分支下新增function1和function2文件
实现,由开发人员1新增function1,由开发人员2新增代function2
条件:在不同分支下完成操作
- 开发人员1在工作区git checkout -b feat-1,创建本地分支feat-1
- 开发人员2在本地git checkout master,切换到本地master,为了保证本地master是最新代码,我们需要git pull
- 开发人员2在工作区git checkout -b feat-2,创建本地分支feat-2
2.协作
-
开发人员1在feat-1分支中开发function1,vim function1,然后add,commit ,需要和远程建立连接git push origin feat-1,将分支feat-1推送到远端,输入git push
-
开发人员2在feat-2分支中开发function2,vim function2,然后add,commit ,需要和远程建立连接git push origin feat-2,将分支feat-2推送到远端,输入git push
3.从分支feat-1切换到分支feat-2
- 开发人员1将分支feat-2拉下来,git pull,前提分支feat-2在远端存在
- 开发人员1切换到分支feat-2,并且让远端分支feat-2和本地分支feat-2建立连接,git checkout -b feat-2origin/feat-2
- 开发人员1在分支feat-2中开发function2,vim function2,然后add,commit ,git push
4.将分支feat-1和分支feat-2合并进master分支
1.pull requests申请单
在gitee中找到pull requests,源分支选择feat-1分支和feat-2分支,目标分支选择master分支,完善PR
或者
2.本地操作
- 开发人员1在本地feat-1分支中git pull,将远程feat-1分支中代码跟新到本地
- 开发人员1git checkout master,切换为master分支,然后git pull将远程master分支中代码跟新到本地
- 开发人员1git checkout feat-1,切换到feat-1分支,然后git merge master 将本地master分支合并到feat-1分支,确保合并后代码不会冲突,如果冲突就在feat-1分支中修改
- 开发人员1git checkout master,切换为master分支,将没有问题的代码合并,输入git merge feat-1
- 开发人员1git push即可
- 完成开发后在gitee删除feat-1分支
feat-2分支也是操作一样
解决git branch -a打印已删除分支方法
当远程分支在gitee上已经删除的情况下,在本地运行git branch -a,还能看到远程已经删除的分支
解决:git remote prune origin是删除本地显示的远程分支
六、企业开发模型
开发环境 | develop | 开发分支 |
---|---|---|
测试环境 | release | 预发布分支 |
预发布环境 | release | 预发布分支 |
生产环境 | master | 主分支 |
本地 | feature | 需求开发分支,开发完后合并到develop |
本地 | hotfix | 紧急修复分支,也就是补丁,修复完后合并到develop和master |