2025-08-01 16:36:47 +08:00

13 KiB
Raw Permalink Blame History

title, date, author, top_img
title date author top_img
Git 2023-10-23 10:30:31 文永达 https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/67239FBB-E15D-4F4F-8EE8-0F1C9F3C4E7C.jpeg

Git

Git 全局设置:

git config --global user.name "username"
git config --global user.email "email"

拉取项目

git clone <url>

创建 git 仓库:

mkdir aaa
cd aaa
git init
touch README.md
git add README.md
# 添加当前目录下全部文件
git add .
git commit -m "first commit"
git remote add origin https://gitee.com/wenyongda/aaa.git
git push -u origin master

已有仓库

cd existing_git_repo
git remote add origin https://gitee.com/wenyongda/aaa.git
git push -u origin master

查看作者名称、作者邮箱

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

解决Git提交失败提示用户密码错误

remote: [session-8b4b799a] wenyongda: Incorrect username or password (access token)

首先查看C盘下gitconfig配置文件配置

[core]
	autocrlf = true
[user]
	name = 文永达
	email = bmdzh11713@163.com
[difftool "sourcetree"]
	cmd = 'C:/Program Files/TortoiseSVN/bin/TortoiseMerge.exe' \"$LOCAL\" \"$REMOTE\"
[mergetool "sourcetree"]
	cmd = 'C:/Program Files/TortoiseSVN/bin/TortoiseMerge.exe'  -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
	trustExitCode = true
[credential "https://gitee.com"]
	provider = generic

查看user下的password正不正确如果没有设置转到控制面板

Windows下 Win + R运行输入control

用户账户 -> 凭据管理器 -> 管理 Windows 凭据 -> 普通凭据

编辑 git:https://gitee.com下的用户名和密码

如果没有手动添加并在Git Bash中执行

git config --global credential.helper wincred

储藏 (Stash)

git stash

git stash list

SSH提交

  1. SSH 秘钥默认储存在账户的主目录下的 ~/.ssh 目录 如:C:\Users\用户\.ssh\

    查看是否包含id_rsa和id_rsa.pub(或者是id_dsa和id_dsa.pub之类成对的文件),有.pub 后缀的文件就是公钥,另一个文件则是密钥。

    如果有这两个文件则跳过1.2;如果没有这两个文件,甚至.ssh目录也没有则需要用ssh-keygen 来创建

  2. 生成密钥信息

    .ssh 目录下右键打开[Git Bash](https://so.csdn.net/so/search?q=Git Bash&spm=1001.2101.3001.7020)(.ssh目录不存在则在任一目录下操作或者手动创建该目录)

  3. 生成密钥

    ssh-keygen -t rsa -C "注释信息一般为邮箱your_email@youremail.com"

  4. 在~/.ssh/下会生成两个文件id_rsa和id_rsa.pub

    id_rsa是私钥

    id_rsa.pub是公钥

  5. SourceTree配置 image-20250416142637966 启动 PuTTY Key Generator

  6. 依次点击 image-20250416151051085

  7. PPKfile version 选择 2 image-20250416151128595

  8. 选择之前生成的id_rsa image-20250416151307312

  9. 出现如下,选择 Save private key 保存秘钥 image-20250416151416275

  10. 保存到 ~/.ssh 目录即可 image-20250416151503685

  11. Sourcetree工具 -> 选项 中选择刚刚保存的 ppk文件即可

变更SSH pubKey comment

Change an SSH key comment

# new_comment 新的注释
# ssh_key_path ssh私钥路径 ~/.ssh/id_rsa
ssh-keygen -c -C "new_comment" -f ssh_key_path

还原变更

# 指定文件或目录
git checkout -- <filename or directory>

撤回(重置)本地仓库提交

若想把已经提交到本地仓库的提交再撤回到本地,通常有几种情况和对应的命令。最常用的是 git reset

git reset 命令可以用来将当前分支的 HEAD 指针移动到指定的提交,并根据不同的模式来处理暂存区工作目录

  • 1. git reset --soft <commit>

    • 作用:HEAD 指针移动到指定的 <commit>,但保留工作目录和暂存区的内容。这意味着你的文件会回到该 <commit> 时的状态,但是你当前的修改和暂存的修改都会保留。

    • 适用场景: 你提交了一个 commit但是发现提交信息写错了或者少提交了一些文件。你可以用 --soft 回退到上一个 commit然后修改文件重新提交。

    • 示例:

      git reset --soft HEAD~1
      

      这会将 HEAD 回退到上一个提交(HEAD~1 表示上一个提交)。

  • 2. git reset --mixed <commit> (默认模式)

    • 作用:HEAD 指针移动到指定的 <commit>,并清空暂存区,但保留工作目录的内容。这意味着你的文件会回到该 <commit> 时的状态,你当前的修改会保留在工作目录中(未暂存)。

    • 适用场景: 你提交了一个 commit但是发现这个 commit 的内容不对,想撤销提交,并重新暂存和提交。

    • 示例:

      git reset HEAD~1
      # 或者 git reset --mixed HEAD~1
      

      这会将 HEAD 回退到上一个提交,并将暂存区清空,但保留文件在工作目录。

  • 3. git reset --hard <commit>

    • 作用:HEAD 指针移动到指定的 <commit>,并清空暂存区和丢弃工作目录的所有修改。这意味着你的仓库会完全回到该 <commit> 时的状态,所有在该 <commit> 之后的修改都会丢失,这是最危险的操作

    • 适用场景: 你想完全放弃当前分支上的所有最新修改和提交,回到之前的某个干净的状态。

    • 示例:

      git reset --hard HEAD~1
      

      这会将 HEAD 回退到上一个提交,并丢弃所有工作目录和暂存区的修改。

如何找到 <commit> 的 ID

你可以使用 git log 命令来查看提交历史并找到你想要回退到的提交的哈希值commit ID

Bash

git log

git log 会显示类似这样的信息:

commit abcdef1234567890abcdef1234567890abcdef (HEAD -> master)
Author: Your Name <your.email@example.com>
Date:   Fri Aug 1 13:20:00 2025 +0800

    最新的提交

commit fedcba0987654321fedcba0987654321fedcba (origin/master)
Author: Another Name <another.email@example.com>
Date:   Thu Jul 31 10:00:00 2025 +0800

    之前的提交

你可以复制 commit 后面的哈希值(例如 fedcba0987654321...)来替换上面的 <commit>

git 如何关闭commit时的语法检测 ---husky

1 报错提示   git commit提交时报错如下

  husky+>+pre-commit+(node+v14.18.2)

2 解决方案   1卸载husky。只要把项目的package.json文件中devDependencies节点下的husky库删掉然后重新npm i 一次即可。或者直接在项目根目录下执行npm uninstall husky --save也可以再次提交自动化测试功能就屏蔽掉

  2进入项目的.git文件夹(文件夹默认隐藏,可先设置显示或者命令ls查找),再进入hooks文件夹,删除pre-commit文件,重新git commit -m xxx git push即可

  3将git commit -m “XXX” 改为 git commit --no-verify -m “xxx”

github

push/pull老是超时解决方法

设置针对github.com本身(如果你需要代理的仓库都是github上面的只要设置这个)的代理:

#只对github.com
# 找到自己的代理的port的4个数字的端口就行不一定是1080口的
git config --global http.https://github.com.proxy socks5://127.0.0.1:7890
#上面是别人的如果你的代理是http类型的如下设置
git config --global http.https://github.com.proxy 'http://127.0.0.1:代理的port'

#取消代理
git config --global --unset http.https://github.com.proxy

针对所有仓库(包含github.com之外的仓库的代理)

# 找到自己的代理的port的4个数字的端口就行不一定是1080口的
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'

#上面是别人的如果你的代理是http类型的如下设置
# 找到自己的代理的port的4个数字的端口就行不一定是1080口的
git config --global http.proxy  'http://127.0.0.1:代理的port'
git config --global https.proxy  'http://127.0.0.1:代理的port'

解决remote: Support for password authentication was removed on August 13, 2021.

  1. Github 头像处 Settings

  2. 左侧最下边 Developer settings

  3. 左侧找到 Personal access tokens

  4. 点击展开,找到 Tokens (classic)

  5. 右侧下拉框 Generate new token (classic)

  6. 按以下配置 在这里插入图片描述

  7. 得到 token 在这里插入图片描述

  8. 修改现有项目的url

    git remote set-url origin  https://<your_token>@github.com/<USERNAME>/<REPO>.git
    

Gitea

备份

数据库备份至postgresql

docker exec -u git -it -w /tmp gitea bash -c '/app/gitea/gitea dump --database postgres --config /data/gitea/conf/app.ini'

Sourcetree

这里主要介绍两种最常用的场景,对应 git reset --softgit reset --hard 的效果。

撤回(重置)本地仓库提交

1. 撤销最近一次提交(保留修改以便重新提交)

这类似于 git reset --soft HEAD~1git reset --mixed HEAD~1 的效果,目的是撤销提交,但保留你的文件修改。

  1. 打开日志/历史记录: 在 SourceTree 界面的左侧,找到你的仓库,然后点击顶部的“日志/历史”或“历史记录”选项卡。

  2. 定位要撤销的提交: 在提交历史列表中,找到你想撤销的前一个提交(也就是你希望回退到的那个提交)。

  3. 右键点击并选择: 右键点击该提交。

  4. 选择“将当前分支重置到此提交”: 在弹出的菜单中选择 “将当前分支重置到此提交” (Reset current branch to this commit)。 image-20250801140709918

  5. 选择重置模式: 此时会出现一个弹窗,让你选择重置模式:

    • Soft软重置:勾选这个选项。它会将 HEAD 指针移动到选定的提交,保留工作目录和暂存区的内容。这意味着你的修改还在,只是不再是提交的一部分。
    • Mixed混合重置:这是默认选项。它会将 HEAD 指针移动到选定的提交,清空暂存区,但保留工作目录的内容。
    • 注意: 如果你只想撤销提交,并打算修改后重新提交,通常选择 SoftMixed 都可以,根据你是否希望文件保留在暂存区。对于“撤回本地仓库提交”这个需求,通常是希望保留修改以便重新操作。

    image-20250801140733960

  6. 确认: 点击“确定”或“Reset”按钮。

完成这些步骤后,你会发现最新的那个提交消失了,而你工作目录中的文件依然保留了修改内容,你可以重新暂存并提交。


2. 彻底撤销最近一次提交(丢弃所有修改)

这类似于 git reset --hard HEAD~1 的效果,会完全丢弃最近提交的所有修改。请务必谨慎使用此选项,因为它会丢失数据!

  1. 打开日志/历史记录: 同样,在 SourceTree 中打开“日志/历史”选项卡。
  2. 定位要撤销的提交: 找到你想撤销的前一个提交。
  3. 右键点击并选择: 右键点击该提交。
  4. 选择“将当前分支重置到此提交”: 在弹出的菜单中选择 “将当前分支重置到此提交” (Reset current branch to this commit)。
  5. 选择重置模式: 在弹窗中,选择 “Hard硬重置
  6. 确认: 点击“确定”或“Reset”按钮。SourceTree 还会再次弹出警告,提醒你这将丢失数据,请确认。

执行此操作后,你的仓库状态会完全回溯到选定的提交,所有后续的修改和提交都将消失。


  • 未推送的提交: 上述操作主要用于尚未推送到远程仓库的本地提交。如果你已经将提交推送到远程,使用 git reset 会导致本地和远程历史不一致,从而引发问题。对于已推送的提交,通常应该使用 “逆转提交”Revert Commit,它会创建一个新的提交来撤销之前的修改,而不是改写历史。
  • Revert逆转操作 如果你希望逆转某个已推送的提交,可以在 SourceTree 中右键点击该提交,然后选择 “逆转提交 <哈希值>” (Revert commit )。这会创建一个新的提交来撤销该提交的修改,并且不会改变历史,是更安全的选择。