git操作

1.基础概念

1.1 工作空间:

1.1.1 工作区:存放 未跟踪/跟踪修改/删除 文件,git add 作用区域:git status为红

1.1.2 暂存区:存放工作区中的 暂存跟踪/暂存修改/暂存删除 文件,git commit作用区域:git status为绿

1.1.3 本地仓库:通过git commit作用后的区域:文件状态正常

1.1.4 远程仓库:通过git push之后作用的区域,远端的仓库

1.2 文件状态

1.2.1 未跟踪:新加的文件:位于工作区

1.2.2 已修改/删除(modified): 已修改表示修改/删除了某个文件,但还没有提交保存:位于工作区

1.2.3 已暂存(staged) : 已暂存表示把已 修改/删除/跟踪 的文件放在下次提交时要保存的清单中:位于暂存区

1.2.4 已提交(committed): 已提交表示该文件已经被安全地保存在本地数据库中了:位于本地仓库

2.基本操作

2.1 提交

2.1.2 git add 文件:将工作空间文件––暂存区
2.1.3 git commit 文件 -m “…”:暂存区文件–本地仓库,产生一个commit号
2.1.4 git push:本地仓库–远程仓库

2.2 解除提交/版本穿梭

1 git reset HEAD 文件/.:回退暂存区的文件,.所有
2 git reset [–hard] commit号/HEAD^:回退到某一个版本,–hard:不保留文件,HEAD ^表示上一个版本号
3 git checkout 文件/.:复原工作区修改的文件、复原丢失文件

如果 git checkout 文件 发生err,则在命令前执行 git reset HEAD 文件

4 git rm -f/–cached 文件:删除文件,-f:不保留,–cached:保留

2.3 显示信息

1 git status:查看工作区状态
2 git log [–stat]:查看提交日志[查看修改文件列表]
3 git show commit号:查看这次提交的结果
 3.1 如下所示,新添文件红框处会显示new file,蓝框处对比–是旧版:null表示无文件;++是新版,data…是文件名。
 3.2 绿色表示新增,红色表示删除
在这里插入图片描述
4 git diff commit1 commit2:以commit1为基准,对比commit2的变化。
 4.1 git diff HEAD~1 HEAD等效git show HEAD,显示内容和git show一样

2.4 分支操作

1 git branch [-r/-a]:查看分支 本地/远端/所有
2 git branch 分支名:添加一个新分支
3 git checkout [-b] 分支名:切换/切换并且创建 一个新分支
4 git branch -d 分支名:删除一个分支
5 git merge 分支A:分支A合并到当前分支

2.5 远程互动

1 git remote -v:显示当前绑定的仓库
2 git remote add :绑定一个远程仓库
​ 2.1 shortname:本地显示远程仓库的名字
​ 2.2 远程url仓库的地址
3 git remote rename name new_name:重新命名一个仓库名字
4 git remote rm name:删除一个仓库
5 git pull name dev:从一个远程仓库拉取代码到指定分支
6 git push name:推送到远程仓库

注意:
1.推送一个新的远程仓库之前,通常要先拉取(pull)。

2.6 仓库拉取

1.git clone url:克隆远程仓库,也会在本地生产一个一模一样的本地仓库,一开始的时候用
2.git pull:更新本地仓库和远程同步,相当于git fetch + git merge origin/master
3.git fetch:拉取远端代码,但是不merge,如下图所示,origin/master前进了
在这里插入图片描述
 使用git merge origin/master可合并内容,使用git log origin/master可查看本地和远端的差异
在这里插入图片描述

2.7 仓库管理操作

1 账号管理

1.记住账号密码:git config --global --replace-all credential.helper store
2.修改记住的密码和账号:vim ~/.git-credentials
2.格式:
https://13123181762:qazwsx******@gitee.com
https://lei.li:*********@gitlab.momenta.works
3.查看git配置文件信息:git config --list

2 gitignore 文件

3.2.1 vim .gitignore:修改文件
3.2.2 #:注释
3.2.3 *.txt:忽略所有以txt结尾的文件
3.2.4 build/:忽略build/目录下的所有文件
3.2.5 doc/1.txt:忽略doc目录下的1.txt文件

3 常用操作

git stash

​ 暂时将工作区和暂存区的任何状态的文件全部保存到一个栈中,使得工作区处于干净的状态(没有任何修改状态文件),方便保存当前工作区,切换到分支上做其他事。

1.git stash:保存工作区和暂存区的任何状态的文件,重新使得工作区干净
	1.1 如果未跟踪文件在工作区会保留,在暂存区会删除(临时)
2.git stash pop:返回保存的工作
	2.1 会将返回的文件全部置于工作区中
注意:
1.git stash 后必须在git stash pop后,才能再次 git stash 
2.git stash 后在对仓库修改之前,必须 git stash pop

整合上一个提交

git log						// 查看commit号
git commt --amend			// 整合一个提交
git log						// 查看日志

重置项目

git restore --staged .	// 放弃暂存区
git checkout .		// 放弃工作区修改
git clean -f * 		// 放弃所有未跟踪文件
git pull			// 重新拉取一下

解除push步骤:

git log		// 复制之前push的commit号
git revert e889c7b244e33a291777fd5d3357fe9889fe2574	//  反做最新的提交
git push	//  提交远程仓库
注意:
1.这种方法会多一个提交revert提交,但是可以将上一次的提交内容清除

merge 产生冲突及其解决

1.产生冲突后,当前仓库会显示状态,如下:
在这里插入图片描述
2.git status:查看冲突文件

3.打开文件解决冲突,冲突如下,<<<<<<< HEAD 当前分支的代码 = === = 合并过来的代码 >>>>>>> 分支名A
在这里插入图片描述
4.解决冲突后,git add 文件,git commit (禁止写文件)

git rebase

场景1:更换基底,分支B从分支A分出,当分支A和B都前进的时候,B分支pr到A分支,则需要将B分支基底更换为A分支最新的提交
git pull origin A
git rebase A 		// 在B分支下

场景1:出现冲突解决

1 当A和B分支前进时修改同一份文件同一个地方就会出现冲突,如下图所示,<<<<<<< HEAD A分支的代码 = === = B分支代码 >>>>>>> 分支名B
在这里插入图片描述
2 git status查看冲突文件
在这里插入图片描述
3 修改冲突文件,并将所有文件进行一次提交

4 git rebase --continue:继续换基

场景2:对当前分支的提交进行压缩、删减、修改
git rebase -i commitA号		// 生效区间:最新提交到A号之间(不包括A)

在这里插入图片描述

从上到下提交依次变新
1.pick:保留提交
2.d:删除提交
3.s:压缩提交:保留提交信息
4.f:压缩提交:不保留提交信息

注意:
1. 压缩提交是新提交(2,3)向旧提交(1)压缩,所以s,f之上必须要有一个pick
2. 合并错误会造成,这个区域所有提交丢失,注意保存副本
3. 使用git rebase --abort取消上次rebase

在这里插入图片描述

场景3:同一个分支rebase,pull时rebase
git pull --rebase

注意:如果有冲突,则继续解冲突

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值