• 使用场景:当commit的内容有错误,需要回撤到之前的某个版本时。

  • git-reset - Reset current HEAD to the specified state

    意思是可以让HEAD这个指针指向其他的地方。例如我们有一次commit不是不是很满意,需要回到上一次的Commit里面。那么这个时候就需要通过reset,把HEAD指针指向上一次的commit的点。

注,Git一般划分为3个区域,working directory 为当前工作区、stage/index为暂存区(git add后的代码就会存储在这部分)、repository则记录提交的历史(git comment后的代码会存在这里)。3个区域关系如下图所示

Soft Reset

当执行一个 soft reset 时,Git 会将 HEAD(当前分支的指针)移动到你指定的提交,但不会改变暂存区(index)或工作目录。这意味着所有从你回退之后的提交到目前的改动都会被保留在暂存区中,等待再次提交。

  • 撤销之前的提交但保留代码更改,以便重新审查或修改后再次提交。

git reset --soft [commit]

Hard Reset

执行 hard reset 时,Git 不仅将 HEAD 移回到指定的提交,而且还会重置暂存区和工作目录,使它们与回退到的那个提交完全一致。这意味着自那个提交之后的所有更改都会被彻底删除。

  • 完全撤销某个提交及其后的所有更改,恢复到一个确定的、干净的状态,通常用于错误的提交。

git reset --hard [commit]

基本命令

1. 进入插入模式:

  • i:在光标前插入
  • a:在光标后插入
  • o:在当前行下方插入新行

2. 退出插入模式:

  • Esc:退出插入模式回到普通模式

文件操作

3. 保存文件:

  • :w:保存文件
  • :w filename:另存为指定文件名

4. 退出 vim:

  • :q:退出 vim(如果文件已修改,需要使用 :q! 强制退出)
  • :wq:保存并退出

5. 撤销和重做:

  • u:撤销上一步操作
  • Ctrl-r:重做撤销的操作

文本操作

6. 全选文本:

  • ggVG:全选文件中的所有文本
    • gg:移动到文件开头
    • V:进入可视模式并选中整行
    • G:移动到文件末尾

7. 复制和粘贴:

  • y:复制选中的文本(在可视模式下)
  • yy:复制当前行
  • p:在光标后粘贴
  • P:在光标前粘贴

8.删除文本:

  • d:删除选中的文本(在可视模式下)
  • dd:删除当前行

9. 查找和替换:

  • /pattern:向前查找 pattern
  • ?pattern:向后查找 pattern
  • n:重复上一次查找(向前)
  • N:重复上一次查找(向后)
  • :%s/old/new/g:替换全文中的所有 old 为 new
  • :s/old/new/g:替换当前行中的所有 old 为 new

移动光标

10. 行内移动:

  • h:左移一个字符
  • j:下移一行
  • k:上移一行
  • l:右移一个字符

11. 单词间移动:

  • w:移动到下一个单词的开头
  • b:移动到上一个单词的开头
  • e:移动到当前/下一个单词的结尾

12. 行间移动:

  • 0:移动到行首
  • $:移动到行尾
  • gg:移动到文件开头
  • G:移动到文件末尾
  • :n:移动到第 n 行

可视模式

13. 进入可视模式:

  • v:字符可视模式
  • V:行可视模式
  • Ctrl-v:块可视模式

其他有用命令

14. 显示行号:

  • :set number:显示行号
  • :set nonumber:隐藏行号

15. 撤销和重做:

  • u:撤销上一步操作
  • Ctrl-r:重做撤销的操作

16. 删除到行尾:

  • D:删除从光标位置到行尾的所有内容

退出 vim

17. 退出 vim:

  • :q:退出 vim
  • :q!:强制退出,不保存修改
  • :wq:保存并退出

查看版本控制状态:

git status

添加文件到暂存区:

git add <filename>          # 添加单个文件
git add .                   # 添加所有修改过的文件

提交更改:

git commit -m "提交信息"

查看提交历史:

git log

克隆仓库:

git clone <repository_url>

创建和切换分支:

git branch <branch_name>    # 创建分支
git checkout <branch_name>  # 切换分支
git checkout -b <branch_name> # 创建并切换到新分支

合并分支:

git merge <branch_name>

查看远程仓库:

git remote -v

推送到远程仓库:

git push origin <branch_name>

从远程仓库拉取更新:

git pull origin <branch_name>

创建标签:

git tag <tag_name>

查看所有标签:

git tag

删除本地分支:

git branch -d <branch_name>

删除远程分支:

git push origin --delete <branch_name>

在 Git Bash 中,可以使用与 Linux 终端相同的命令来创建、删除文件夹和文件。以下是一些常用的命令:

文件夹操作

创建文件夹:

mkdir folder_name

删除文件夹:

rmdir folder_name          # 只适用于空文件夹
rm -r folder_name          # 删除非空文件夹及其内容

切换到另一个文件夹:

cd folder_name

返回上一级文件夹:

cd ..

显示当前路径:

pwd

列出文件和文件夹:

ls

文件操作

创建文件

touch filename              # 创建一个空文件
touch file1.html file2.css file3.js  # 同时创建多个文件

删除文件:

rm filename
rm file1.html file2.css file3.js  # 同时删除多个文件

复制文件:

cp source_file destination_file
cp source_file1 source_file2 destination_folder/  # 复制多个文件到目标文件夹

移动/重命名文件:

mv old_filename new_filename
mv filename destination_folder/
mv file1.html file2.css file3.js destination_folder/  # 移动多个文件

批量操作

批量创建文件夹:

mkdir folder1 folder2 folder3

批量删除文件夹:

rm -r folder1 folder2 folder3

批量创建文件:

touch file1.html file2.css file3.js

批量删除文件:

rm file1.html file2.css file3.js

其他有用命令

查看文件内容:

cat filename

编辑文件(使用内置编辑器,例如 nano):

nano filename

查找文件:

find . -name "filename"

概述

  • 开发者:Git for Windows(Git 社区)
  • 初次发布:2007年(作为 Git for Windows 的一部分)
  • 平台:Windows
  • 基础:基于 Unix Shell(例如 Bash)
  • 目的:提供在 Windows 上使用 Git 和类 Unix 环境的工具

特点

  1. Unix-like 环境:在 Windows 上模拟 Unix Shell 环境,提供常见的 Unix 命令。
  2. 轻量级:安装包小,资源占用少,启动速度快。
  3. Git 集成:集成了 Git 命令行工具,方便开发者进行版本控制操作。
  4. 简单易用:对于熟悉 Unix/Linux 的用户,Git Bash 提供了熟悉的命令和环境。

常用命令

列出文件和文件夹:

ls

创建文件夹

mkdir folderName

删除文件夹

rmdir folderName           # 只适用于空文件夹
rm -r folderName           # 删除非空文件夹及其内容

复制文件:

cp sourcePath destinationPath

移动文件:

mv sourcePath destinationPath

查看文件内容:

cat filename

在CloudWatch控制台中,选择“Alarms”。
点击“Create alarm”按钮。
在“Select metric”中,选择“EC2” -> “Per-Instance Metrics” -> 选择你的实例 -> 选择“StatusCheckFailed”。
点击“Select metric”。
配置警报条件:
统计数据(Statistic):选择最小值(Minimum)。
周期(Period):选择5分钟。
条件(Conditions):大于(>)
阈值(Threshold):0
点击“Next”。
在“Configure actions”中,选择“Create new topic”或选择一个已有的SNS topic。
配置通知的接收邮箱。
点击“Next”并完成配置。

使用 curl 查询 IP 信息

curl http://ip-api.com/json/

使用 geoiplookup 工具

安装 geoiplookup

查询 VPS 的位置

geoiplookup $(curl -s ifconfig.me)

使用 whois 命令
whois 命令可以查询 IP 地址的注册信息,这通常包含地理位置。
安装 whois

sudo yum install whois

查询VPS的位置

whois $(curl -s ifconfig.me)

检查本地 DNS 配置
确认本地的 DNS 配置没有影响到结果。可以尝试使用不同的 DNS 服务器来验证地理位置。您可以使用 Google 的公共 DNS 服务器 8.8.8.8 和 8.8.4.4,或者 Cloudflare 的公共 DNS 服务器 1.1.1.1 和 1.0.0.1。

配置本地 DNS
编辑 /etc/resolv.conf 文件:

sudo vim /etc/resolv.conf

将内容修改为:

nameserver 8.8.8.8
nameserver 8.8.4.4

SSH动态端口转发(也称为SSH隧道或SOCKS代理)是一个非常强大的功能
它能够通过SSH连接将本地计算机连接到另一个网络上的服务器,并将该服务器用作网络请求的代理。这个功能不仅可以用于安全地浏览互联网。

安全浏览

绕过网络限制: 如果你处于一个限制了访问特定网站的网络中,通过SSH动态端口转发可以安全地访问这些网站。
匿名浏览: 使用SSH隧道可以提高你浏览网站时的隐私性,因为你的网络流量会通过远程服务器转发。

开发与测试

访问受限的开发环境: 如果你需要访问部署在受限网络环境中的开发服务器,可以使用SSH隧道安全地访问这些资源。
数据库管理: 通过SSH隧道连接到远程数据库服务器,可以在本地运行数据库管理工具进行操作,而不需要直接暴露数据库端口。

远程工作

安全访问内部工具: 对于远程工作人员,通过SSH隧道可以安全地访问公司内网中的内部工具和服务。
文件传输: 虽然SCP和SFTP是更常用的SSH文件传输方法,但通过SSH隧道,你也可以安全地使用基于HTTP的文件管理界面。

游戏与娱乐

游戏:在某些情况下,使用SSH隧道可以减少游戏延迟或访问地区限制内容。

命令与配置

一个基本的SSH动态端口转发命令如下所示:

ssh -D 8080 -C -q -N 用户名@远程服务器地址
  • D 8080 指定了本地端口(在这个例子中是8080),SSH客户端会监听这个端口,并将通过SSH连接转发的流量作为SOCKS代理服务。
  • C 启用压缩,可以提高传输速度并减少数据使用。
  • q 启用静默模式,减少日志输出。
  • N 表示不执行远程命令,只进行端口转发。