git命令回顾

本文介绍了Git的基本使用方法,包括初始化本地仓库、克隆远程仓库、推送和拉取资源等常见操作。同时深入探讨了reset、checkout及revert等高级命令的应用场景与区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

git init :初始化本地仓库 ,相当于创建一个工作环境 ,并且在已存在的工作目录同样的使用。

git clone (http地址)或ssh地址) :克隆一个指定仓库,http仓库只能拉取资源, ssh可以推上和拉取资源。

git remote 添加远程仓库地址

ssh密匙生成方式在gitbash 输入ssh-keygen -t rsa -C “1027797811@qq.com” 把pb内容粘贴到远程仓库网站用户设置中的ssh key,就能push资源了。

git push origin master : origin是默认的远程仓库地址,mater是默认主分支,在git init时创建。origin和 mater是可以选择的,意味着可以任意选择远程仓库与分支。

git pull origin master:拉取资源 并自动合并(两个毫不相关的目录是不会合并的,git会记录目录的生命历程,判断是否相关)

git fetch origin master :从远程仓库拉取与本地不一样的资源,需要手动合并才能继续使用。

git branch testing: testing 是新分支名,输入git branch会显示当前本地仓库的所有分支,git branch -d 能删除不需要的分支。

git merge testing :合并testing到当前分支,git会自动合并资源,当出现两个分支都修改的地方,git不知道选择使用那个分支,就会出现冲突,需要手动修改文件,解决冲突。

git add * :添加所有文件到缓存层,可以指定文件到缓存层。

git commit :把所有缓存区的文件放进最终状态,推送到远程仓库的最终状态。git会维护commit历史,并可选择的回滚。

这里写图片描述

Reset

在提交层面上,reset 将一个分支的末端指向另一个提交。这可以用来移除当前分支的一些提交。比如,下面这两条命令让 hotfix 分支向后回退了两个提交。

git checkout hotfix
git reset HEAD~2
hotfix 分支末端的两个提交现在变成了悬挂提交。也就是说,下次 Git 执行垃圾回收的时候,这两个提交会被删除。换句话说,如果你想扔掉这两个提交,你可以这么做。reset 操作如下图所示:
这里写图片描述
把hotfix分支reset到HEAD~2

如果你的更改还没有共享给别人,git reset 是撤销这些更改的简单方法。当你开发一个功能的时候发现「糟糕,我做了什么?我应该重新来过!」时,reset 就像是 go-to 命令一样。

除了在当前分支上操作,你还可以通过传入这些标记来修改你的缓存区或工作目录:

–soft – 缓存区和工作目录都不会被改变
–mixed – 默认选项。缓存区和你指定的提交同步,但工作目录不受影响
–hard – 缓存区和工作目录都同步到你指定的提交
把这些标记想成定义 git reset 操作的作用域就容易理解多了。
这里写图片描述
git rese的定义域

这些标记往往和 HEAD 作为参数一起使用。比如,git reset –mixed HEAD 将你当前的改动从缓存区中移除,但是这些改动还留在工作目录中。另一方面,如果你想完全舍弃你没有提交的改动,你可以使用 git reset –hard HEAD。这是 git reset 最常用的两种用法。

当你传入 HEAD 以外的其他提交的时候要格外小心,因为 reset 操作会重写当前分支的历史。正如 rebase 黄金法则所说的,在公共分支上这样做可能会引起严重的后果。

Checkout

你应该已经非常熟悉提交层面的 git checkout。当传入分支名时,可以切换到那个分支。

git checkout hotfix
上面这个命令做的不过是将HEAD移到一个新的分支,然后更新工作目录。因为这可能会覆盖本地的修改,Git 强制你提交或者缓存工作目录中的所有更改,不然在 checkout 的时候这些更改都会丢失。和 git reset 不一样的是,git checkout 没有移动这些分支。
这里写图片描述
将 HEAD 从 master 移到 hotfix

除了分支之外,你还可以传入提交的引用来 checkout 到任意的提交。这和 checkout 到另一个分支是完全一样的:把 HEAD 移动到特定的提交。比如,下面这个命令会 checkout 到当前提交的祖父提交。

git checkout HEAD~2
将 HEAD 移动到任意 commit
这里写图片描述
这对于快速查看项目旧版本来说非常有用。但如果你当前的 HEAD 没有任何分支引用,那么这会造成 HEAD 分离。这是非常危险的,如果你接着添加新的提交,然后切换到别的分支之后就没办法回到之前添加的这些提交。因此,在为分离的 HEAD 添加新的提交的时候你应该创建一个新的分支。

Revert

Revert 撤销一个提交的同时会创建一个新的提交。这是一个安全的方法,因为它不会重写提交历史。比如,下面的命令会找出倒数第二个提交,然后创建一个新的提交来撤销这些更改,然后把这个提交加入项目中。

git checkout hotfix
git revert HEAD~2
如下图所示:
这里写图片描述
revert到倒数第二个commit

相比 git reset,它不会改变现在的提交历史。因此,git revert 可以用在公共分支上,git reset 应该用在私有分支上。

你也可以把 git revert 当作撤销已经提交的更改,而 git reset HEAD 用来撤销没有提交的更改。

就像 git checkout 一样,git revert 也有可能会重写文件。所以,Git 会在你执行 revert 之前要求你提交或者缓存你工作目录中的更改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值