1.Git环境配置
设置用户信息
- 注意:这个设置的用户信息和邮箱和gitee没有关系
git config --global user.email “邮箱”
git config --global user.name “名字”
查看配置信息
git config --list
git config user.name
2.获取Git仓库
一.在本地初始化一个Git仓库
- 1.创建一个空目录作为我们的本地仓库
- 2.进入目录中,点击右键打开Git bash 窗口
- 3.执行命令 git init
二.从远程仓库克隆
-
git clone 仓库Https的路径
3. 工作目录、暂存区以及版本库的概念与关系
一.版本库
- 在我们创建好的本地仓库里 .git隐藏文件夹就是版本库,版本库存储了很多配置信息,日志文件和文件版本信息等
二.工作目录(工作区)
- 包含.git文件夹的目录就是工作区目录,主要用于存放开发的代码
三.暂存区
-
.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage,暂存区是一个临时保存修改文件的地方
四.关系
4.Git目录下文件的二种状态以及查看文件状态命令
一.untracked 未跟踪(未被纳入版本控制)
二.tracked 已跟踪(被纳入版本控制)
- Unmodified 未被修改状态
- Modified 已修改状态
- Staged 已暂存状态
这些文件状态会随着我们执行Git命令发生变化
三.查看文件状态
git status
- On branch master 表示当前处于master分支
- Your branch is up to date with 'origin/master'. 表示当前分支处于最新状态
- modified: README.md 表示当前 README.md 这个文件处于已修改状态
- Untracked files (use "git add <file>..." to include in what will be committed) heool.txt 表示当前heool.txt文件处于为跟踪状态文件(新添加文件的状态)
git status -s 使输出更加简介
- M 代表已修改状态
- ??表示为跟踪状态
5.对本地仓库的操作
一. 添加文件
1.将未跟踪的文件加入暂存区
git add 文件名称
2.将暂存区的文件提交到本地仓库
git commit -m "日志叙述"
git commit "不加-m,进入文本编辑器中 i = 进行编辑 esc = 退出编辑 :wq = 保存并退出
:q 不保存直接退出" 这里的文档操作,与Linux的一样
二. 将新创建的文件加入暂存区查看文件状态
git add 文件名
git status -s
- A 表示文件加入暂存区
三.将已跟踪的文件变为未跟踪
git reset 文件名
四.删除文件
- 1.通过命令来删除
git rm 文件名
注意 : 这个命令只是删除的工作区的文件,本地仓库还有对应的文件
删除本地仓库对应的文件(只需要提交命令到本地仓库)
git commit -m "叙述"
- 2.如果你直接删除对应的文件夹
直接去删除文件夹(git默认没有将删除操作加入到暂存区)
这时候进行commit提交无法操作
- deleted: txt.txt 文件代表删除没有加入缓存区
- D txt.txt 为简写
解决方法
-
1.使用git add 删除文件夹名 加到暂存区
-
2.执行git commit -m "日志叙述"
五.将文件添加至忽略列表
应用场景: 一般我们总会有文件无需纳入Git管理,也不希望它们出现在未跟踪文件列表,通常都是自动生成的文件,java为例 : 编译文件 , .idea , target ,在这种情况下我们可以在工作目录创建一个名为 .gitignore的文件(文件名称固定) ,列出要忽略的文件模式
-
1.创建.gitignore文件
- 直接在windows是不能创建文件的
通过命令来创建忽略文件
touch .gitignore
- 2.编写忽略后缀
*.class
- 效果查看
git status
只有我们创建的忽略文件没有加入暂存区,class文件已经忽略
六.查看日志记录
git log
- 如果你操作比较多,日志一页存放不下,使用Enter 继续查看其他日志,q退出日志
6.对远程仓库的命令操作
一.查看远程仓库
- 1.简略查看
如果想查看已经配置远程仓库服务器,可以运行 git remote
如果已经克隆了远程仓库,那么至少应该能看到origin,这是Git克隆的仓库服务器默认名字
它会列出指定的每一个远程服务器的简写
- 2.列出详细信息,在每一个名字后面列出其远程url
git remote -v
- origin https://gitee.com/wang-yu5/my-repo2.git (fetch) =>可以从这个地址进行拉取
- origin https://gitee.com/wang-yu5/my-repo2.git (push)=>可以从这个地址进行本地仓库推送到远程仓库
- 3.显示远程仓库与本地仓库的关联信息
git remote show origin
- remote origin => 远程仓库的名称
- HEAD branch :master=>当前分支为master
- Remote branch: master tracked =>表示当前master与远程分支master有追踪关系
二.添加远程仓库
- 1.使用命令
git remote add origin "创建的远程仓库HTTPS地址"
三.从远程仓库克隆
- 1.克隆远程仓库命令
git clone [url]
- git克隆的是该仓库服务器上的几乎所有的数据(包括日志信息、历史记录等),而不仅仅是复制工作文件.当你执行git clone 命令的时候,默认配置下远程Git仓库中的每一个版本都将被拉取下来
四.移除无效的远程仓库
- 1.移除远程仓库
git remote rm 仓库名称
- 注意: 此命令只是从本地移除远程仓库的记录,并不会真正影响远程仓库
五.从远程仓库中抓取与拉取
- 1.git fetch(抓取) 是从远程仓库获取最新版本到本地仓库,不会自动merge(合并到本地工作区)
git fetch origin master
- 将远程仓库的文件保存在本地仓库,但是并不会显示出来,存储在.git/object文件夹中,以二进制的文件方式保存
- 合并命令(显示到工作区)
git merge origin/master
- 进行合并,显示到文件夹中
- 2.git pull (拉取) 是从远程仓库获取最新版本并merge(合并)到本地仓库
git pull origin 分支名称
- 第一种应用场景: 我们想要获取远程仓库的代码
- 初始化仓库
- 2.添加远程仓库地址
- 3.进行pull
- 第二种应用场景: 如果当前本地仓库不是远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件
- 1.初始化仓库
- 2.查看仓库文件状态
3.添加对应的文件从工作区到暂存区
- 4.提交对应的文件从暂存区到版本库
-5.添加远程仓库
注意:报错为fatal: refusing to merge unrelated histories =>远程仓库和本地仓库的文件不同或版本不同- 6.强行进行拉取(将本地仓库与远程仓库进行合并)
git pull origin master --allow-unrelated-histories
六. 将本地仓库推送到远程仓库
- 1.首先让修改文件加入版本库
git commit -a -m "日志名称"
- -a:可只将所有被修改或者已删除的且已经被git管理的文档提交倒仓库中。如果只是修改或者删除了已被Git 管理的文档,是没必要使用git add 命令的。
- 2.推送到远程仓库
git push [remote-name] [branch-name]
七.git 分支
一.分支有什么好处
几乎所有的版本控制系统都以某种形式支持分支
使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线
Git的master分支并不是一个特殊的分支,它和其他分支没有区别,之所以几号每一个仓库都有一个
master,是因为git init 命令默认去创建它,并且大多数人都懒得去改动它
二.查看分支
- 1.本地分支
git branch
- 2.远程分支
git branch -r
- 3.查看所有分支
git branch -a
- "*" 代表当前处于什么分支
二.创建分支(创建的本地分支)
git branch 分支名称
- 这是在master分支下创建的b1分支 ==> b1分支的内容和master的一样
三.切换分支(切换本地分支)
git checkout 分支名称
四.将本地分支推送至远程仓库分支
git push origin 分支名称
(不管当前处于那个分支,都可以提交其他分支)
例如 b1分支可以上传b2分支
五.合并分支
-
将b2 分支内容合并到master分支中(在master分支下面进行操作)
-
将b2 分支内容合并到master分支中(在master分支下面进行操作)
git merge 合并分支名称
-
有时候合并操作不会如此顺利,如果你在二个不同的分支中,对同一个文件的同一个部分
进行了不同的修改,Git看没有办法合并它们,同时会提示文件冲突,
此时需要我们打开冲突文件并修复冲突内容,最后执行git add命令来标识冲突已解决
-
- Automatic merge failed : fix conficts and then commit the result=> 自动合并失败:修复冲突,然后提交结果
- b2和master分支User.java都进行了修改之后,出现了冲突,我们需要手动进行修改
- 使用git add 进行标识(表明我们已经手动处理好冲突)
- 3.将新添加的文件推送到远程仓库
git push origin 分支名称
六.删除分支
- 1.删除本地分支
git branch -d 分支名称
我在修改完b2分支User.java,并没有推送到远程仓库,
造成远程仓库分支与本地仓库分支有不同出现这个错误,提醒你代码不同
- 如果要删除分支中进行了一些开发动作,此时执行上面的删除命令并不会,
删除分支,如果坚持要删除分支 git branch -D 分支名称
注意:当前在b2分支下删除b2分支是不允许的,需要切换到不同分支
- 2.删除远程仓库分支
git push origin -d 分支名称
八.标签
一.标签的作用
- 像其他版本控制系统(VCS)一样,GIt可以给历史的某一个提交打上标签,以示重要.
用这个功能来标记发布节点(v1.0,v2.0).标签是值某一个分支特定时间点的状态
通过标签,可以很方便的切换记录时的状态
二.列出已有标签
- 列出所有标签
git tag
- 2.查看tag信息
git show [tag]
三.创建新标签
- 1.新建标签
git tag [tagName]
四. 将标签推送至远程仓库
- 1.提交指定tag
git push origin [tag]
五. 检出标签
- 1.新建一个分支,指向某个tag
git checkout -b [branch] [tag]
新建一个分支为b3,b3的内容为v1.0版本
- 2.应用场景
- 在不改变原有版本的基础上,进行升级
- 新建分支为b3,版本内容为v1.0
-
进行下步开发时,修改b3内容,进行提交
- 创建新版本,进行上传远程仓库
六.删除标签
- 1.删除本地标签
git tag -d [tag]
- 删除远程标签
git push origin :refs/tags/[tag]