Git典型使用场景相关命令
1 建立本地仓库与远程仓库的联系
step1
:初始化本地仓库。这将在当前目录创建一个.git
文件夹,使该目录成为 Git 的本地仓库。
git init
step2
:添加远程仓库地址(设置“远程仓库”)
git remote add origin https://github.com/yourname/yourrepo.git
origin
:是远程仓库的默认名称(你也可以改为别的名字,但推荐保留 origin)。
https://...git
:是远程仓库的克隆地址(可以是 HTTPS 或 SSH)。
可以通过以下命令查看远程仓库是否添加成功:
git remote -v
step3
:将本地代码提交并推送到远程仓库(首次)
- 添加文件并提交到本地仓库:
git add .
git commit -m "Initial commit"
- 推送到远程仓库并建立关联(首次推送时需要):
git push -u origin master
或者 git push -u origin main
-u
参数的作用:建立本地分支与远程分支的追踪关系。以后可以直接用 git push
、git pull
,不用再每次都加远程名和分支名。
step4
:之后每次更新,只需:
git add .
git commit -m "your message"
git push
如果是先在 GitHub 上建的仓库,再克隆下来:
git clone https://github.com/yourname/yourrepo.git
此时远程地址已经自动关联好了
2 作为开发者参与项目的常用命令
2-1 一般步骤
step1
:首次配置(只需配置一次)
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
step2
:克隆项目(从远程获取代码)
git clone https://github.com/yourname/yourproject.git
cd yourproject
step3
:开发过程中的常用操作
- 查看当前状态
git status
- 拉取最新远程改动(建议先同步再修改)
git pull
- 新建并切换到新分支开发
git checkout -b feature/your-feature-name
- 添加修改的文件(所有修改)
git add .
或只添加指定文件:
git add file.txt
- 提交修改
git commit -m "描述清晰的提交信息"
- 推送分支到远程
git push origin feature/your-feature-name
2-2 合并与同步主分支改动
- 切换到主分支
git checkout main # 或 master
- 拉取主分支最新代码
git pull
- 切换回功能分支并合并主分支
git checkout feature/your-feature-name
git merge main
2-3 查看日志和差异
- 查看提交历史
git log --oneline --graph --all
- 查看某个文件的修改差异
git diff file.txt
2-4 提交后想修改或撤销
- 修改上一次提交信息(未 push)
git commit --amend
- 撤销某次提交(保留修改)
git reset --soft HEAD~1
2-5 分支管理
- 查看所有分支
git branch -a
- 删除本地分支
git branch -d feature/xxx
- 删除远程分支
git push origin --delete feature/xxx
2-6 清除未被追踪的文件(谨慎使用)
git clean -fd
3 作为远程仓库管理者如何管理
3-1 开发者提交代码后,管理者的常规处理流程
开发者提交方式:
- 推送分支到远程(如
feature/login
) - 或发起 Pull Request / Merge Request(如 GitHub、GitLab)
管理者的处理流程:
- 获取开发者提交的代码
git fetch origin
# 从远程仓库 `origin` 获取最新的分支和提交记录,但不会自动合并到当前分支。
# `origin`:是远程仓库的默认名称。
# 这个命令会同步远程仓库的更新到本地的 `.git` 数据库中,比如远程的新分支、提交记录等。
# 不会改变当前工作目录里的任何文件或分支状态。
# 相当于“悄悄地更新了远程仓库信息”,不动你的代码。
git checkout feature/login
# 切换到名为 `feature/login` 的本地分支。
# 如果这个分支是远程新创建的、本地还没有,那么需要加上 `-t`(跟踪远程分支):
# git checkout -t origin/feature/login 或 git switch -c feature/login origin/feature/login
上述命令的含义:
- 从远程拉取所有更新信息;
- 切换到一个你想要查看或工作的分支(比如某个开发者提交的
feature/login
分支);
如果本地没有该分支,推荐完整做法:
git fetch origin
git checkout -b feature/login origin/feature/login
# `-b feature/login`:创建本地分支;
# `origin/feature/login`:指定跟踪哪个远程分支。
- 代码审查
- 使用 GitHub/GitLab/Gitea/Bitbucket 的 Web 界面查看修改、讨论、留言。
- 可以用如下命令本地查看差异:
git diff main...feature/login
- 测试/验证
- 管理者会在本地或 CI/CD 环境中 运行测试。
- 检查是否有语法错误、逻辑问题、性能下降等。
- 合并代码
合并分支回主分支(如main
)有几种方式:
合并方式 | 命令 / 操作 | 特点 |
---|---|---|
普通合并(推荐) | git merge feature/login |
保留历史,产生合并 commit |
重写历史合并 | git rebase feature/login |
整理提交历史,可能引发冲突 |
GitHub 操作 | 点击 “Merge pull request” | 自动合并,支持 squash/rebase |
3-2 管理者的日常维护职责
任务 | 命令 / 工具 | 说明 |
---|---|---|
删除合并完成的远程分支 | git push origin --delete xxx |
清理无用分支 |
查看提交日志 | git log --oneline --graph |
检查分支和合并历史 |
强制标准命名和保护策略 | GitHub 分支保护设置 | 防止直接向 main 推送 |
回滚误提交 | git revert / git reset |
根据情况决定是否保留历史 |
添加 tag / 发布版本 | git tag v1.0.0 && git push --tags |
版本管理 |
配置 CI/CD 检查每次 PR | GitHub Actions / GitLab CI 等 | 自动测试、构建、部署 |
3-3 管理者应关注的最佳实践
- 分支命名规范化(如:
feature/
,bugfix/
,release/
) - 强制 code review 和 CI 通过后再合并
- 禁止直接 push 到 main
- 定期清理 stale 分支
- 发布版本前打 tag
- 用 squash 合并清理历史
3-4 补充
当有 Pull Request 时,管理员可以:
- Merge:保留所有 commit
- Squash and merge:将所有 commit 合并为一个(常用于整理历史)
- Rebase and merge:将每个提交 replay 到主分支后面(清洁但可能有冲突)
4 作为普通贡献者如何参与项目
4-1 Fork 并 Clone 项目
- 点击 GitHub 项目页面的
Fork
按钮
这会把主项目复制一份到你的 GitHub 账户,例如:
- 原仓库:
https://github.com/openai/project.git
- 你的 Fork:
https://github.com/yourname/project.git
- Clone 你的 Fork 到本地
git clone https://github.com/owner/project.git
cd project
- 添加主项目作为远程源(方便同步主仓库更新)
git remote add upstream https://github.com/openai/project.git
检查远程列表:
git remote -v
# origin https://github.com/yourname/project.git
# upstream https://github.com/openai/project.git
4-2 创建分支,开发功能
- 同步主项目更新(可选)
git checkout main
git fetch upstream
git merge upstream/main
或直接重设为一致:
git reset --hard upstream/main
- 创建新功能分支(不要在 main 上开发)
git checkout -b feature/your-task-name
- 开发 & 提交
git add .
git commit -m "Add XXX feature"
可以多次 commit,保持粒度清晰。
4-3 推送分支并发起 Pull Request
- 推送分支到你自己的远程仓库(origin)
git push -u origin feature/your-task-name
- 在 GitHub 网页上,点击 “Compare & pull request” 按钮
填写描述 → 选择目标是主项目的 main
分支 → 提交 PR
4-4 等待审核与合并
- 保持关注 PR 状态,维护者可能会提出修改建议
- 可以在本地继续修改再
git push
到同一分支,PR 会自动更新
4-5 PR 被合并后,清理本地和远程分支
git checkout main
git pull upstream main
git branch -d feature/your-task-name
git push origin --delete feature/your-task-name
4-6 小结
fork 主仓库
↓
clone 自己的 fork
↓
添加主仓库为 upstream(可选)
↓
新建 feature 分支 → 修改 → commit
↓
push 到 origin(你的仓库)
↓
发起 PR 到主项目的 main 分支
↓
等待审核 → 被合并
↓
删除旧分支,准备下一个任务
常用命令参考
操作 | 命令 |
---|---|
添加主项目为 upstream | git remote add upstream <主项目地址> |
同步主项目代码 | git fetch upstream && git merge |
新建分支 | git checkout -b feature/xxx |
提交修改 | git add . && git commit -m "message" |
推送分支 | git push -u origin feature/xxx |
删除远程分支 | git push origin --delete feature/xxx |