1. 新建分支 链接到标题

基于所在本地分支创建新分支

git checkout -b xxx 
git switch-c xxx

推送到远程

git push origin xxx

建立本地分支和远程分支联系

git branch -u origin/xxx xxx

2. 删除分支 链接到标题

删除远程分支

git push origin --delete xxx

删除本地分支

git branch -D xxx

3. 回退版本 链接到标题

3.1 整个分支回退到指定版本 链接到标题

git reset --hard 版本号

3.2 回退后强制上传回退版本 链接到标题

a. 命令行推送

git push origin xxx -force #xxx为分支名,如git push origin main -force

b. 界面推送 在vscode的git插件中直接点同步,即可推送到远程仓库

3.3 指定文件回退到某版本 链接到标题

git checkout 版本号 -- 文件路径 #git checkout abc1234 -- file.txt

4. 清空本地修改 链接到标题

4.1 已跟踪文件 链接到标题

清空所有已跟踪文件的修改

git checkout .

清空本地某个文件修改

git checkout xxx #xxx为某文件

4.2未跟踪文件 链接到标题

清空所有未跟踪文件/目录的修改

git clean -fd #f为未跟踪的文件,d为未跟踪的目录

5. 撤销与修改 链接到标题

add到暂存区后未commit,撤销 add

git restore -staged xxx #xxx为需要撤销的文件

commit到本地仓后未push,修改 commit

git commit --amend -m "xxx" #xxx为新的提交消息

commit 到地仓后未push,撤销 commit

git reset --soft 上一个版本号

6. 基于所在分支的某个版本号拉新分支 链接到标题

git checkout -b new branch name xxx 版本号
git switch -c new branch name xxx 版本号

7. 打包 bundle 链接到标题

常规流程

git status
git add xxx
git commit-m "xxx"

通过HEAD生成 bundle

git bundle create xxx.bundle HEAD HEAD

验证 bundle 是否正确

git bun
dle venfy xxx.bundle

8. 切换到老版本号后再切换回最新版本号 链接到标题

git checkout xxx 版本号
git pull 远程分支到本地

9. 查看差异 链接到标题

查看版本差异

git diff 版本号

查看版本某文件差异

git diff 版本号 -- 文件名 #文件的路径写全

10. 强制重命名当前分支 链接到标题

git branch -M xxx #xxx为新分支名

11. 将远程仓库地址添加到本地仓库 链接到标题

一般为新建仓后,把本地仓推到远程仓做准备用。

git remote add origin xxx #xxx为远程仓库地址

git remote add origin https://github.com/heirenlop/heirenlop.github.io.git

12. git fetch和git pull的区别 链接到标题

git fetch

12.1 功能 链接到标题

从远程仓库下载最新的提交和分支信息,但不会自动合并这些更改到当前的工作分支。不会影响当前的工作目录或分支。你需要手动检查和合并这些更改(例如使用 git merge 或 git rebase)。

12.2 用法 链接到标题

git fetch <remote>

例如

git fetch origin

git pull

12.3 功能 链接到标题

是 git fetch 和 git merge 的组合。它从远程仓库下载最新的提交,并立即将这些更改合并到当前的工作分支。

12.4 用法 链接到标题

git pull <remote> <branch>

例如

git pull origin main

13. 新建仓 链接到标题

(1) 个人主页New repository (2) 本地创建新仓,以abc为例

cd abc
git init

(3) 添加文件,以README为例

git status #查看状态
git add README.md
git status #查看状态

(4) 提交

git commit -m "first commit"

(5) 推送

git remote add origin git@github.com:heirenlop/abc.git #链接远程仓
git remote -v #查看状态
git push -u origin main #推送

# tips:
# 如果没有main仓
git branch -M main # 修改默认分支为main
git push -u origin main

(6) 修改remote链接

git remote -v  #查看状态
git remote set-url origin git@github.com:heirenlop/abc.git  #x修改为新的链接
git remote -v  #查看状态

14. submodule相关 链接到标题

  • 拉取submodule (1) 确认仓是否有submodule
cat .gitmodules

(2) clone时直接拉取submodule

git clone --recursive <repository_url>

(3) clone后拉取submodule

git submodule update --init --recursive
  • 添加submodule (1) 在本地仓中添加submodule,add的内容在仓内的.gitmodules文件中
git submodule add <子模块地址> <存放路径>
# 举例
git submodule add https://gitlab.inria.fr/bkerbl/simple-knn.git submodules/simple-knn
git submodule add -b dr_aa https://github.com/graphdeco-inria/diff-gaussian-rasterization.git submodules/diff-gaussian-rasterization
git submodule add https://github.com/rahul-goel/fused-ssim.git submodules/fused-ssim

(2) submodule 切换到制定的分支(可选)

cd submodules/xxx
git fetch  # 获取所有 commit
git checkout <指定的 commit 哈希>

cd ../.. #回到主仓库,记录这个 commit 的引用
git add submodules/xxx
git commit -m "切换 submodule xxx to commit 1a2b3c4d5e"

(3) 提交修改

git add .gitmodules submodules/
git commit -m "Add submodules"
git push origin main

(4) 移除submodule

git submodule deinit -f submodules/simple-knn
rm -rf .git/modules/submodules/simple-knn
git rm -f submodules/simple-knn
git commit -m "Remove submodule simple-knn"

15. 修改仓的地址 链接到标题

在忘记fork且clone到本地的情况下,修改别人仓地址为自己仓 (1) 网页新建自己仓 (2) 修改远程地址步骤

# 检查当前远程仓地址
git remote -v

#output 
origin  https://github.com/original_owner/original_repo.git (fetch)
origin  https://github.com/original_owner/original_repo.git (push)

# 删除原始远程仓地址
git remote remove origin

# 添加新的远程仓地址
git remote add origin https://github.com/your_username/your_repo.git

# 检查是否修改成功
git remote -v

# output
origin  https://github.com/your_username/your_repo.git (fetch)
origin  https://github.com/your_username/your_repo.git (push)

# 推送到新的远程仓
git push -u origin main 

# tips: 如果main分支不存在,新建一个main分支,再推送
git branch -M main
git push -u origin main

(3) 修改完远程地址后,当前本地修改不会被推送到新的远程仓,需再次推送

git status 
git add xxx
git commit -m "xxx"
git push origin main

16. 生成SSH密钥对 链接到标题

(1) 打开终端并执行以下命令,生成新的SSH密钥对

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

(2) 添加SSH密钥到ssh-agent

eval "$(ssh-agent -s)"

(3) 将SSH密钥添加到ssh-agent

ssh-add ~/.ssh/id_rsa

(4) 将生成的SSH公钥添加到GitHub。首先,显示SSH公钥内容

cat ~/.ssh/id_rsa.pub

17. 设置git 用户名和邮箱 链接到标题

git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
git config --global --list # 查看配置

tips 链接到标题

没图?