git入门

3 篇文章 0 订阅

git初始化

  1. git安装:https://git-scm.com/

下载后一路“下一步”

  • 初始化

打开指定文件夹,初始化git

C:\Users\Bat>E: E:>cd MyProject E:\MyProject>git init

输出:

Initialized empty Git repository in E:/MyProject/.git/

NotePad++编码选用UTF-8 无BOM编码

设置用户信息:

邮箱

git config --global user.name "nanshoui163"

设置git用户名

git config --global user.name "nanshoui163"

基本操作

文件加入暂存:

git add 文件名

文件从暂存加入仓库:

git commit -m"你干了啥”

-m “注释信息”

将暂存区文件覆盖到工作区:

git checkout --文件名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WxpouznE-1625015299862)(E:\StudyNotes\nanshoui163@163.com\5bc3c7ec07eb426ab19ac006c76b6581\clipboard.png)]

查看状态:

git status

文件操作下,三棵树的大致关系:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nvo4mLf9-1625015299864)(E:\StudyNotes\nanshoui163@163.com\a3f7c37551ab4dbea2d9673f912d1fc2\clipboard.png)]

如果暂存区和工作区文件不一致,git提示不建议提交

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jd62lqP3-1625015299866)(E:\StudyNotes\nanshoui163@163.com\a536789bdd754d8f8ffbb9c992c6960b\clipboard.png)]

将仓库最近一次文件拉取到暂存:(文件没有soft hard,只是默认mixed)

git reset HEAD -- <file>

HEAD ~ 有几个 ~ 就回到几次之前。~10 head之前的第10个版本

git reset HEAD~(默认原型是:git rest --mixed HEAD~)

git reset +快照 有三种模式:

-- mixed(默认) soft hard

移动HEAD的指向,将其指向上一个快照:

git reset --soft HEAD~ // 只会影响仓库一棵树 // 相当于撤销上一次错误commit

回滚到仓库指定的快照id:

git reset <版本快照的ID号> // 既可以回到过去也可以回到未来

回滚指定快照指定文件:

git reset <版本快照ID> <文件>

查看仓库log信息

git log

比较操作

关键字:diff

比较暂存区文件和工作区:

git diff

比较示例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5pJNBBmW-1625015299870)(E:\StudyNotes\nanshoui163@163.com\40cab120daff445b87866b42b394be41\clipboard.png)]

说明:

---:表示旧文件

+++:表示新文件

:表示暂时显示不全

控制键操作:

jk上下移动一行 f往下翻页,b往上翻页 d往下翻半页,u往上翻半页 g第一行,G最后一行 数字+g 跳转指定行 输入h 进入帮助文档 / 往下搜索。? 往上搜索 高亮为搜索结果 输入q退出。

比较仓库任意俩个版本快照:

git diff 快照id1 快照id2

比较暂存区和仓库区快照

git diff --cached 快照id

总结:

**git diff // 默认比较工作区和暂存 **

–cached // 暂存

HEAD 或者 快照ID // 仓库指定版本快照

diff指令图解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vOUPADPR-1625015299872)(E:\StudyNotes\nanshoui163@163.com\db6febde9d7f4ffe80ae8f84478122ad\clipboard.png)]

修改提交说明

在实际开发中,你可能会遇到以下两种情景:一情景一:版本刚一提交(commit)到仓库,突然

想起漏掉两个文件还没有添加(add)。

情景二:版本刚一提交(commit)到仓库,突然

想起版本说明写得不够全面,无法彰显你本次修改的重大意义…

Git就会“更正”最近的一次提交:

它有两个操作:

1.如果暂存和最近一次提交不同,就会覆盖最近一次提交。如果一致,则略过。

2.更新提交说明。

git commit --amend

使用演示:
在这里插入图片描述

修改黄色的提交说明:

按i进行插入修改

退出操作:

按下ecs+shift+两下z,保存退出

其他推出操作:

1首先要按键盘左上角的"ESC",左下角的插入状态不见了。 2然后在按了ESC后再输入冒号,在输入命令时,直接输入"q",就可以退出了。 3不保存退出的方法:先按ESC,再输入冒号,在输入命令时,直接输入"q!"。

直接修改commit注释

git commit --amend -m "新的注释信息"

删除文件

删除的只是工作目录和暂存区域的文件操作:

git rm文件名 // 该命令删除的只是工作目录和暂存区域的文件,也 // 就是取消跟踪,在下次提交时不纳入版本管理。

如果工作目录和暂存区域文件不一致,

则不会执行删除。

强制删除:

git rm -f 文件名

如果只删除暂存区域的文件(保留工作目录的那么你可以执行)

git rm --cached 文件名

重新命名

改文件名,git不能直接追踪。建议用git改文件名:

git mv 旧文件名 新文件名

GIT分支

分支是神器

图解

新建分支:

git branch 分支名

操作图
在这里插入图片描述

切换分支:

git checkout 分支名

在这里插入图片描述

分支图解

在这里插入图片描述

git log 使用–decorate可以加一些别的修饰词

显示log在一行:

git log --decorate --oneline

在这里插入图片描述

修改READEME.md,加入字符"you are handsome"

Add 然后commit

Git log如下图

在这里插入图片描述

储存逻辑图:

在这里插入图片描述

显示图形化log

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

在这里插入图片描述

实际开发中的分支情况:

在这里插入图片描述

合并分支:

git merge 分支名

在这里插入图片描述

发生冲突,合并失败

原因:两个分支中存在同名的README但内容却不同的文件。

查看状态
在这里插入图片描述

Git 会修改不一致的文件,如下图。

在这里插入图片描述

修改你需要的最终效果,删除分隔即可。
在这里插入图片描述

提交修改,然后log就先合并了

创建并切换到新分支:

git checkout -b feature2

在这里插入图片描述

新建f2文件,add然后commit
在这里插入图片描述

打印图形分支如下图
在这里插入图片描述

合并

在这里插入图片描述

删除分支:

git branch -d 分支名

或者写

git branch --delete 分支名

在这里插入图片描述

匿名分支

初始化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sCDRkgN4-1625015299890)(E:\StudyNotes\nanshoui163@163.com\38fb5bda068d4ab2bea1cdd57c6ab38e\clipboard.png)]

你使用checkout命令却没有指定分支名字,git会给你创建一个匿名分支。

当你切换到其他分支时,这个匿名分支你所有的提交都不会被保存。

如:

git checkout HEAD~

可以用匿名分支做实验

在这里插入图片描述

新建4.txt

在这里插入图片描述

切换回主分支:

在这里插入图片描述

在匿名分支随便修改提交,都不会影响master分支。
在这里插入图片描述

再论checkout

从历史快照(或者暂存区域)中拷贝文件到工作目录

当给定某个文件名时,Git 会从指定的提交中拷贝文件到暂存区域和工作目录。

比如执行 git checkout HEAD~ README.md 命令会将上一个快照中的 README.md 文件复制到工作目录和暂存区域中:
在这里插入图片描述

如果没有指定具体快照ID,将从暂存区恢复文件到工作目录。(git checkout README.md)

在这里插入图片描述

注意:写成 git checkout – README.md 的形式,约定两个横杆(–)后边跟的是文件名。(确保后面的文件名和分支名不重复)

1.恢复文件:

checkout命令和reset 命令都可以用于恢复指定快照的指定文件,并且它们都不会改变HEAD 指针的指向。

下面开始划重点:

它们的区别是reset命令只将指定文件恢复到暂存区域( --mixed ) ,

checkout 命令是同时覆盖暂存区域和工作目录

注意∶也许你试图使用git reset --hard HEAD~~ README.md 命令让reset 同时覆盖工作目录,但Git 会告诉你这是徒劳(此时reset不允许使用–soft或–hard选项)。

这样看来,在恢复文件方面,reset命令要比 checkout命令更安全一些。

2.恢复快照:**

reset 命令用来“回到过去(未来)”可以有三种模式:

// 只移动HEAD指针,只会影响仓库这一棵树

–soft

// 默认mixed,移动HEAD指针更改仓储指向,并覆盖暂存区

–mixed

// hard ,移动HEAD指针更改仓储指向,并覆盖暂存区和工作区

–hard

checkout 命令虽说是用于切换分支,但前面你也看到了,它事实上也是通过移动HEAD指针和覆盖暂存区域、工作目录来实现的。

重点:

(1)checkout比reset hard 更加安全。

因为checkout会检查当前工作状态是否为clean,如果不是clean,git将会不执行;reset --hard强制直接覆盖所有数据。

(2)移动HEAD指向不同。

reset 命令会移动HEAD所在分支的指向,(丢弃原来的指向)

而checkout 命令只会移动HEAD自身来指向另一个分支。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值