标签 git 下的文章

git reset 是一个 Git 命令,用于将当前分支的 HEAD 指针和索引(暂存区)回退到指定的提交或位置,同时也可以选择是否修改工作区。

git reset 命令的常见用法有以下几种:

  1. git reset <commit>:将当前分支的 HEAD 指针和索引回退到指定的提交 <commit>,但不修改工作区。这样做会将之后的提交从历史记录中移除。
  2. git reset --hard <commit>:将当前分支的 HEAD 指针、索引和工作区都回退到指定的提交 <commit>。这将丢失之后的提交和未提交的修改,请谨慎使用。
  3. git reset --soft <commit>:将当前分支的 HEAD 指针回退到指定的提交 <commit>,但保留索引和工作区的修改。这样做会将之后的提交标记为未提交的修改,方便进行修改后重新提交。

<commit> 可以是提交的哈希值、分支名、标签名或相对引用(如 HEAD~n,表示往前数第 n 个提交)。

需要注意的是,使用 git reset 命令会改变提交历史,因此在使用前请确保你了解其影响并小心操作。如果已经将修改推送到远程仓库,请谨慎使用 --hard 参数,以免造成数据丢失或冲突。

另外,git reset 命令还有其他选项和用法,可以通过 git reset --help 查看 Git 的文档或参考 Git 的官方文档来获取更详细的信息和示例。

要将 Git 分支回退到某个提交并更新到远程仓库,可以按照以下步骤进行操作:

  1. 首先,使用 git log 命令查找要回退到的提交的哈希值(commit hash)。复制该哈希值以备后用。
  2. 切换到要回退的分支,可以使用以下命令:

    git checkout <分支名>
  3. 执行以下命令以回退分支到指定的提交:

    git reset --hard <提交的哈希值>

这将使分支回退到指定的提交,并且 --hard 参数会清除之后的提交记录。

  1. 接下来,使用以下命令将回退后的分支推送到远程仓库:

    git push origin <分支名> --force

注意:由于回退分支会修改历史记录,因此需要使用 --force 参数强制推送到远程仓库。

请谨慎执行回退操作,确保你已备份好重要的提交。此外,如果多人共享该分支,请与团队成员协商好回退操作,以避免造成不必要的代码丢失或冲突。

运程回退后,其他人有以下两种选择

  1. 丢弃本地更改与远程同步
git pull --rebase
  1. 同步远程的提交,并保留本地的工作
git fetch
git reset origin/feat1 --soft

Husky是一个流行的Git钩子管理工具,它允许您在Git提交或推送之前运行预定义的脚本。Husky可以帮助您在代码提交或推送前执行一些自动化任务,如代码格式化、代码质量检查、单元测试等。

以下是Husky的一些关键特点和用法:

  1. Git钩子管理:Husky使您能够轻松定义和管理各种Git钩子,包括pre-commit(提交前)、pre-push(推送前)等。您可以在这些钩子上运行脚本,以确保代码符合预定义的标准。
  2. 配置简单:Husky的配置非常简单和直观。您只需在项目的package.json文件中指定要运行的脚本,然后Husky将自动安装和配置Git钩子。
  3. 跨平台支持:Husky可以在各种操作系统和Git客户端上正常工作,包括Linux、macOS和Windows。
  4. 高度可定制:Husky提供了广泛的自定义选项,您可以根据项目的需求定义自己的Git钩子和相应的脚本。
  5. 集成其他工具:Husky可以与其他开发工具和工作流集成,如linters(代码检查工具)、测试框架、代码格式化工具等。

使用Husky的一般步骤如下:

  1. 在项目中安装Husky作为开发依赖项,可以使用npm或yarn进行安装。
  2. package.json文件中添加一个husky字段,定义您要运行的Git钩子和相应的脚本。例如,您可以在husky字段中指定"pre-commit"钩子,并指定要运行的脚本命令。
  3. 在项目根目录中运行适当的命令,以使Husky安装并配置Git钩子。例如,使用npx husky install命令来安装钩子。
  4. 现在,当您执行相关的Git操作(如提交或推送代码)时,Husky将自动运行相应的脚本。

Husky可以与其他开发工具和流程(如ESLint、Prettier、Jest等)集成,以创建完整的自动化工作流程。

总之,Husky是一个方便易用的工具,可以帮助您在Git操作之前自动运行脚本,从而提高代码质量和开发效率。

如果您有任何进一步的问题,请随时提问。

生成密钥对

ssh-keygen -t ed25519 -C "your_email@example.com"
#or
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f D:\ssh\github_id_rsa
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f D:\ssh\gitee_id_rsa

选项

  • -b:指定密钥长度;
  • -e:读取openssh的私钥或者公钥文件;
  • -C:添加注释;
  • -f:指定用来保存密钥的文件名;
  • -i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
  • -l:显示公钥文件的指纹数据;
  • -N:提供一个新密语;
  • -P:提供(旧)密语;
  • -q:静默模式;
  • -t:指定要创建的密钥类型。

配置config文件

C:\Users\liugang\.ssh 文件夹添加config文件

Host github.com
    HostName github.com
    User your_email@example.com
    PreferredAuthentications publickey
    IdentityFile D:\ssh\github_id_rsa

Host gitee.com
    HostName gitee.com
    User your_email@example.com
    PreferredAuthentications publickey
    IdentityFile D:\ssh\gitee_id_rsa

用ssh进行git操作

第一次使用需要生成指纹

git

git基础使用

创建一个新仓库

echo "# git-init" >> README.md #创建文件
git init #初始化
git add README.md #添加到暂存区
git commit -m "first commit" #提交到本地仓库
git branch -M main    #切换到main分支
git remote add origin git@github.com:tsingliu449966/git-init.git #添加origin远程仓库地址
git push -u origin main #推送到远程仓库的main分支

推送已存在的仓库

git remote add origin git@github.com:tsingliu449966/git-init.git #添加origin远程仓库地址
git branch -M main #切换到main分支
git push -u origin main #推送到远程仓库的main分支

查看日志

#查看状态
git status
#查看日志
git log
#查看所有操作日志 包括reset、分支切换等
git reflog
#回退提交
git reset --hard 6619fad
#创建dev分支
git branch dev
#切换到dev分支
git checkout dev

用户

git config --global --list
git config user.name
git config user.email

git config --global user.name "yourname"
git config --global user.email "youremail@xx.com"

暂存工作区

git stash
git stash apply
git stash --help

检查文件不同

git diff

git flow

新建分支

#创建分支
git branch dev

#创建并切换分支
git checkout -b dev

解决冲突

#拉取代码
git pull origin dev

#手动提交
git fetch origin dev
git merge FETCH_HEAD

git fetch origin some-branch:dev

#推送本地feature分支到远程feature分支
git push origin feature:feature

git fetch origin feature:dev
git merge FETCH_HEAD

git pull origin feature

回退版本

git reset --hard HEAD@{1}
git reset --hard 44d4c4d
git reset --hard head^
git reset --hard head~1

合并分支

#切换到dev分支
git checkout dev
#合并feature到dev分支
git merge feature

#切换到master分支
git checkout master
#合并dev到master分支
git merge dev

标签

git tag v1.0.0
git push origin master --tags

git tag -d v1.0.0
git tag list

git tag v1.1.0
git push origin :refs/tags/v1.0.0 #删除远程tag
git push origin :feature #删除远程分支

git branch -D feature #删除本地分支
git checkout -- test.txt #丢弃工作区的改动

git add test1.txt,test2.txt
git reset HEAD test2.txt #撤回加入暂存区的文件

git reset --hard head #切换回上一次提交