社交媒体

Git

KEYWORD: 分布式 版本控制

远程仓库相关

fork操作 复制远程仓库到个人账户用于独立开发

git clone <repo-url> 复制远程仓库到本地

git remote add <repo-name> <repo-url> 可添加多个远程仓库(如 GitHub、Gitee)

git remote add upstream <upstream-repo-url> 便于跟踪源仓库

  • Default: upstream / origin 源仓库 / 个人远程仓库

git remote -v 查看远程仓库信息

git fetch <repo-name/branch-name> 从远程仓库抓取最新代码和历史,但不合并到本地仓库

git pull <repo-name> <branch-name> 从远程仓库拉取最新代码并合并到当前分支(= fetch + merge )

git push <remote> <branch> 推送至远程仓库

-u 同时关联远端分支和本地分支

初始化及日常操作相关

git init 初始化仓库

git add <file>/. 添加修改文件/所有改动至暂存区

git status 查看当前文件状态

git commit -m '<message>' 暂存区改动保存至本地仓库,生成版本快照

P.S. <message> 规范: 类型(作用域):主题\n正文

​

类型

fix / feat / refactor / docs / style / test / chore / revert

作用域

login

主题

……

正文

……

​

git log 查看历史记录

--oneline --graph

分支处理相关

git branch <args>

<branch-name> 建立新分支

-m 重命名分支

git checkout <branch-name> 结算并跳转至新分支

-b 若分支不存在,自动创建新分支

git diff <branch-a> <branch-b> 比较分支间区别

git merge <bacnch-name> 自动选择快速合并 / 三路合并,后者可能要解决合并冲突

--no-ff no fast-forward 强制使用三路合并

--squash 同步但不建立节点联系 可精简信息

git rebase

<branch-name> 给当前分支换基

也有可能要解决冲突 -> add & commit -> git rebase --continue

-i HEAD~3 修改历史记录( -i 交互模式 HEAD~3 从head指针开始向前回溯三个提交)

--continue / --abort 继续 / 终止操作

git worktree 形成多个工作目录

add <new-path> <branch> e.g. path=../project-main -b可形成新分支

remove <path> 移除相关目录

list 查看所有目录

版本回退相关

git reset --soft HEAD~3 安全撤销最近记录(--soft 只移动分支指针,不修改工作目录和暂存区)

与rebase改写历史一样,若上传至远端后不建议再修改,避免不同步,或使用--force强制推送

git restore 安全恢复文件(替代checkout的文件恢复功能)

--source=<commit> -- <file> 从指定提交恢复文件到工作目录 ​ --staged -- <file> 将文件从暂存区移除(取消暂存) ​ --worktree -- <file> 用暂存区内容覆盖工作目录文件

其他技巧

git stash git checkout git stash pop

git tag

创建标签

轻量标签 git tag <标签名> <提交id> 无提交id默认指向最新提交

附注标签 git tag -a <标签名> -m "<标签信息>" <提交ID>

查看标签

git tag

git show <标签名>

推送标签

git push origin <标签id> 使用--tags 一次性推送本地所有标签

删除标签

git tag -d <标签名> 删除本地标签 git push origin :refs/tags/<标签名> 删除远程标签

参考

git三种分支管理策略简介_bilibili