git常用操作

四个工作区域

工作目录(Working Directory): 没有放到版本控制中

暂存区(Stage/Index) : 用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息

资源库(Repository或Git Directory) : 这里面有你提交到所有版本的数据(已提交)。其中HEAD指向最新放入仓库的版本

git仓库(Remote Directory) : 远程仓库,托管代码的服务器
在这里插入图片描述

工作区<–>暂存区

# 添加指定文件到暂存区
git add [file1] [file2] ...
# 添加指定目录到暂存区,包括子目录
git add [dir]
# 添加当前目录的所有文件到暂存区
git add .

#当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用(⚠️)
git rm file_path

#当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 这个时候直接push那边这个文件就没有,如果push之前重新add那么还是会有。
git rm --cached file_path

#直接加文件名   从暂存区将文件恢复到工作区,如果工作区已经有该文件,则会选择覆盖
#加了【分支名】 +文件名  则表示从分支名为所写的分支名中拉取文件 并覆盖工作区里的文件
git checkout

工作区、暂存区<–>资源库(版本库)

#将暂存区-->资源库(版本库)
git commit -m '该次提交说明'

#如果出现:将不必要的文件commit 或者 上次提交觉得是错的  或者 不想改变暂存区内容,只是想调整提交的信息
#移除不必要的添加到暂存区的文件
git reset HEAD 文件名

#去掉上一次的提交(会直接变成add之前状态)   
git reset HEAD^ 

#去掉上一次的提交(变成add之后,commit之前状态) 
git reset --soft  HEAD^

在这里插入图片描述

log 查看提交记录

git log -数字    #表示查看最近几次的提交
git log -p -2    #显示最近两次提交的不同点
git log --author #查看具体某个作者的提交
git log --online #输出简要的信息

merge 合并分支

git merge [branch] #合并指定分支到当前分支

diff 解决冲突 制作补丁

git diff HEAD  #比较当前工作区和上一次提交时文件的差异
git diff HEAD^ #比较上一次提交和上上次提交的文件差异
git diff 分支名 #查看当前分支跟指定的分支的差异
git diff 分支名1 分支名2  #查看两个指定分支(已提交的)的差异,分支2 跟分支1的差别
git diff --name-only --diff-filter=U #查看冲突文件 这个太有用啦

reset 版本回退

git reset --hard HEAD^   #将 Git 回退到上一个版本 也就是上上次提交的时候,这样就可以撤销当次提交的信息
git reset --hard 4b2a0c8 #版本号(commit id)没必要写全,一般写前七位就够了,Git会自动去匹配。

git reset --hard HEAD^^
git reset --hard HEAD^^^

.gitignore 文件

*.log           #表示忽略项目中所有以.log结尾的文件
123?.log        #表示忽略项目中所有以123加任意字符的文件
/error.log      #表示忽略项目中根目录中的error.log 这个文件
src/main/test/* #表示忽略/src/main/test/目录下的所有文件
**/java/        #匹配所有java目录下的所有文件
!/error.log     #表示在之前的匹配规则下,被命中的文件,可以使用!对前面的规则进行否定

对于已经提交到远程或本地仓库的文件,.gitignore配置之后不会生效。我们必须先删除本地暂存区里的文件,之后在加上.gitignore 文件,最后再把变更提交到远程仓库上。

git rm --cached 文件名     #从暂存区删除某个文件
git rm -rf --cached 文件夹 #表示递归删除暂存区该文件夹的所有东西

案例

commit后,需要回到上一个版本,这个版本数据全部不要

(1)为保险起见,我们可以先切一个分支出来,保存当前版本,必然以后🈶️需要这个版本,又要重新开发
   git checkout -b [branch]
(2)先本地代码回到上个版本
   git reset --hard head^
 (3) 提交本地代码到远程

如果你在直接add,commit后直接 git push。会报错。要用 git push -f

err: Updates were rejected because the tip of your current branch is behind
因为远程本地分支回滚后,版本将落后远程分支,所以你要先pull最新的,在push,这就很尴尬,因为最近一次提交的代码我都不想要了干嘛还要拉到本地
所以你只能强制提交 这是个非常危险的命令,因为它会把该版本之前commit的数据全部丢失

所以已经提交的远程的,尽量避免回退

本地提交后,想回退这一次的提交

#如果出现:将不必要的文件commit 或者 上次提交觉得是错的  或者 不想改变暂存区内容,只是想调整提交的信息
#移除不必要的添加到暂存区的文件
git reset HEAD 文件名

#去掉上一次的提交(会直接变成add之前状态)   
git reset HEAD^ 

#去掉上一次的提交(变成add之后,commit之前状态) 
git reset --soft  HEAD^

参考

工作区、暂存区、版本库、远程仓库
一个小时学会Git
checkout、branch、log、diff、.gitignore

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值