Git学习笔记

安装 Git

地址 -> https://git-scm.com/download/win   一路next安装

初次使用配置 Git

需要配置下使用者的名称和邮箱,后续的提交都会以此区分提交者身份

git config --global user.name "名称"
git config --global user.email "邮箱"

使用git config --list 命令确认结果

Git  Bash不支持中文

1.打开git bash后,

对窗口右键->Options->Text->Locale改为zh_CN,Character set改为UTF-8
关闭git bash,再打开,可以显示中文了。

2.如果前一种方法不行

则在git bash中尝试执行下面内容

git config --global core.quotepath false  
关闭git bash,再打开,可以显示中文了。

3.如果前面不行

git config --global i18n.commitencoding utf-8    #如果是GBK 请换成gbk
git config --global i18n.logoutputencoding utf-8   #如果是GBK 请换成gbk
export LESSCHARSET=utf-8
关闭git bash,再打开,可以显示中文了。

三棵树


你的本地仓库有 Git 维护的三棵“树”组成,这是 Git 的核心框架。

在这里插入图片描述

工作区域(Working Directory)就是你平时存放项目代码的地方。

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

Git 仓库(Repository)就是安全存放数据的位置,这里边有你提交的所有版本的数据。其中,HEAD 指向最新放入仓库的版本(这第三棵树,确切的说,应该是 Git 仓库中 HEAD 指向的版本)。

OK,Git 的工作流程一般是酱紫:

  1. 在工作目录中添加、修改文件;

  2. 将需要进行版本管理的文件放入暂存区域;

  3. 将暂存区域的文件提交到 Git 仓库。

因此,Git 管理的文件有三种状态:已修改(modified)、已暂存(staged)和已提交(committed),依次对应上边的每一个流程。

 

初始化 Git

在命令行中将路径切换至文件夹中,然后使用命令git init

将文件添加到暂存区域

git add 文件名/路径        将指定文件/路径添加到暂存区
git add *                 将工作目录下所有文件添加到暂存区
git add --all             对所有变动的文件执行add(也写成 git add -A)

将文件提交到git仓库

git commit -m "提交的文字说明(支持中文)"

将文件从工作区提交到代码仓库(add + commit)

git commit -am "提交的文字说明(支持中文)"

克隆别人的代码

git clone "要克隆的地址"

查询状态

git status

查看历史提交

git log
git log --oneline       显示一行的简略信息

查看失去了的以前的提交

git reflog

 

在这里插入图片描述
回滚相关命令

  • git add 命令用于把工作目录的文件放入暂存区域
  • git commit 命令用于把暂存区域的文件提交到 Git 仓库
  • git reset 命令用于把 Git 仓库的文件还原到暂存区域
  • git checkout 命令用于把暂存区域的文件还原到工作目录

其中git check 命令现在逐渐使用git restore取代了

 

reset回滚命令--参数

git reset --soft   快照ID    只将代码仓库回滚到快照ID的版本
git reset -–mixed  快照ID    将代码仓库和暂存区都回滚到快照ID版本,不指定参数时默认为--mixed模式
git reset --hard   快照ID    将代码仓库,暂存区,工作目录都回滚到快照ID版本

reset回滚命令--快照ID

git reset HEAD~     回滚到次新版本
git reset HEAD~~    回滚到次次新版本
git reset HEAD~10   回滚到次*10新版本
git reset 00c29     回滚到版本号00c29开头的版本

reset回滚命令--回滚个别文件到暂存区域

git reset 快照ID 文件名/路径

checkout回滚--将暂存区的内容回滚(恢复)到工作区域

git checkout -- 想要恢复的文件/路径   (如果确认没有分支和想要恢复的文件/路径名称重名,则--可不写)     

checkout回滚--将代码仓库的内容回滚到暂存区和工作区域

git checkout 快照ID 文件名/路径

比较差异--比较暂存区域与工作目录

git diff

比较差异--比较两个历史快照

git diff 第一个历史快照ID 第二个历史快照ID

比较差异--比较当前工作目录和仓库快照

git diff 某一个历史快照ID     和某个版本之间的差异
git diff HEAD                和最新的版本之间的差异

比较差异--比较暂存区和仓库快照

git diff --cached         比较暂存区和最新快照
git diff --cached 快照ID  比较暂存区和指定快照

difftool和mergetool

git自带的diff工具并不好用,可以使用difftool和mergetool指定更好的比较合并工具,教程如下:

git配置比较和合并工具

 

修改最后一次提交

实际开发中,可能会遇到下边这两种情况:

Situation One:版本刚一提交(commit)到仓库,突然想起漏掉两个文件还没有添加(add)。就好比你是老司机,说开车 就开车,到了半路发现还有俩乘客没上来……

Situation Two:版本刚一提交(commit)到仓库,突然想起版本说明写得不够全面,无法彰显你本次修改的重大意义……

这个时候,可以执行**带 --amend 选项的 commit 命令**,Git 会“更正”最近的一次提交。

git commit --amend -m "修改后的上传说明"

删除文件/路径

git rm 文件名
git rm -r 路径

git rm命令只删除工作区域和暂存区的对应文件/路径,要删除代码仓库内的对应文件,则应该接着执行git commit

!如果工作区域和暂存区的文件不一致(比如同名为temp,但add之后又做了修改,导致两方的temp内容不一样),这个时候执行git rm会报错

因为系统无法知道你到底想要删除的是哪个

$ git rm temp
error: the following file has staged content different from both the
file and the HEAD:
    temp
(use -f to force removal)

此时,如果想两个都删除,则

git rm -f temp

如果只想删除暂存区的temp,则

git rm --cached temp 

重命名

git mv 旧文件/路径名称 新文件/路径名称

让GIT忽略一些指定格式的文件(以忽略.tmp结尾的文件为例)

echo *.temp > .gitignore

创建分支

git branch 分支名           创建当前快照的分支
git branch 分支名 快照ID    创建指定快照的分支

显示指向提交的所有引用

git log --decorate

切换分支

git checkout 分支名

 创建并切换到该分支

git checkout -b 分支名

以图像的形式显示当前的分支情况

git log --decorate --oneline --graph --all

--graph 选项表示让 Git 绘制分支图,--all 表示显示所有分支

合并分支

git merge 分支名    将分支合并到当前的工作分支

删除分支

git branch -d 分支名
git branch -D 分支名    删除的是未合并的分支

创建匿名分支(不指定分支名的checkout)

git checkout HEAD~

匿名快照的修改不保存,当你切到别的分支时,修改就被丢弃找不回了,特别适合于你想做些危险因此很可能会回退的操作,去匿名分支下尝试下,不行就切回来当啥事没发生

 

参考:

一只没有脚的猪的博客

git配置比较和合并工具

git在指定版本创建分支(界面与命令行都有)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值