本文内容来源于 Make BUPT Great Again 整理
基本配置
设置用户信息
在开始使用 Git 之前,需要配置你的用户信息。这些信息会出现在每次提交的记录中。
1 2
| git config --global user.name "你的用户名" git config --global user.email "你的邮箱地址"
|
示例:
1 2
| git config --global user.name "xxx" git config --global user.email "xxx@example.com"
|
说明:
--global 参数表示全局配置,对当前用户的所有仓库生效
- 如果只想为某个仓库单独配置,可以在仓库目录下去掉
--global 参数
查看当前配置:
1
| git config --global --list
|
远程仓库操作
添加远程仓库
将本地仓库与远程 GitHub 仓库关联。
1
| git remote add <远程仓库简称> <远程仓库URL>
|
示例:
1
| git remote add origin https://github.com/xxx/repository-name.git
|
说明:
origin 是远程仓库的默认名称(可自定义)
- 一个本地仓库可以关联多个远程仓库
查看远程仓库:
推送到远程仓库
普通推送:
1
| git push -u <远程仓库简称> <本地分支名>
|
示例:
说明:
-u (或 --set-upstream) 参数会建立本地分支与远程分支的追踪关系
- 首次推送时使用
-u,之后可以直接使用 git push
强制推送(危险操作):
说明:
-f (或 --force) 会强制覆盖远程仓库的历史
- ⚠️ 谨慎使用:可能导致其他协作者的提交丢失
- 更安全的替代方案:
git push --force-with-lease(仅在远程分支未被他人更新时才强制推送)
🔐 使用个人访问令牌实现私有库访问
什么是 PAT?
Personal Access Token (个人访问令牌) 是 GitHub 提供的一种安全认证方式,用于替代传统的用户名密码认证。特别适用于:
- 访问私有仓库
- 两步验证 (2FA) 启用的账户
- 自动化脚本和 CI/CD 流程
📋 创建 PAT 的步骤
- 登录 GitHub → 点击右上角头像 → Settings
- 左侧菜单中选择 Developer settings
- 选择 Personal access tokens → Tokens (classic)
- 点击 Generate new token → Generate new token (classic)
- 填写信息:
- Note: 给 token 起个名字(如:”My Local Development”)
- Expiration: 设置过期时间
- Select scopes: 勾选需要的权限 (很重要)
repo - 完整的仓库访问权限
workflow - 访问 GitHub Actions
read:org - 读取组织信息
- 点击 Generate token
⚠️ 重要: 立即复制并保存 token,页面刷新后将无法再次查看
🔧 使用 PAT 的三种方式
方式一:在 URL 中直接使用 PAT
1 2 3 4 5
| git remote add origin https://<username>:<PAT>@github.com/<username>/<repository>.git
git remote add origin https://xxx:ghp_xxxxxxxxxxxxxxxxxxxx@github.com/xxx/repository-name.git
|
方式二:克隆时使用 PAT
1 2 3 4 5
| git clone https://<username>:<PAT>@github.com/<username>/<repository>.git
git clone https://xxx:ghp_xxxxxxxxxxxxxxxxxxxx@github.com/xxx/private-repo.git
|
方式三:使用 Git Credential Helper(推荐)
1 2 3 4 5 6 7
| git config --global credential.helper store
git push -u origin main
|
📝 完整的私有仓库操作流程
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| git init
git add .
git commit -m "Initial commit"
git remote add origin https://<username>:<PAT>@github.com/<username>/<repository>.git
git push -u origin main
|
🔒 安全最佳实践
✅ 推荐做法
1 2 3
| export GITHUB_TOKEN="your_pat_here" git remote add origin https://username:$GITHUB_TOKEN@github.com/username/repo.git
|
❌ 避免的做法
1 2
| git remote add origin https://username:ghp_clearly_visible_token@github.com/user/repo.git
|
🛠️ 常见问题解决
更新已存在的远程仓库 URL
1 2 3 4 5
| git remote -v
git remote set-url origin https://<username>:<PAT>@github.com/<username>/<repository>.git
|
临时使用 PAT 推送
1 2
| git push https://<username>:<PAT>@github.com/<username>/<repository>.git main
|
移除 URL 中的 PAT(提高安全性)
1 2 3
| git remote set-url origin https://github.com/<username>/<repository>.git git config --global credential.helper store
|
⚠️ 重要提醒
- PAT 等同于密码 - 请妥善保管,不要分享给他人
- 定期更新 - 建议设置合理的过期时间并定期更新
- 最小权限原则 - 只授予必要的权限范围
- 避免硬编码 - 不要在代码中直接写入PAT
- 撤销泄露的 Token - 如果PAT泄露,立即在GitHub设置中撤销
分支操作
创建并切换分支
创建新分支并切换:
示例:
1
| git checkout -b feature-login
|
- 创建一个名为
feature-login 的新分支,并立即切换到该分支
- 等同于
git branch feature-login + git checkout feature-login
新版本推荐写法:
重命名分支:
示例:
- 强制重命名当前分支为
main
-M 是 --move --force 的缩写
查看所有分支:
删除分支:
1 2
| git branch -d <分支名> git branch -D <分支名>
|
提交与修改
添加文件到暂存区
1 2 3
| git add . git add <文件名> git add *.js
|
常用选项:
查看暂存区状态:
提交暂存区到本地仓库
示例:
1 2 3
| git commit -m "feat: add user login feature" git commit -m "fix: resolve memory leak issue" git commit -m "docs: update README"
|
提交规范建议:
feat: 新功能
fix: 修复bug
docs: 文档更新
style: 代码格式调整
refactor: 重构代码
test: 测试相关
chore: 构建/工具链相关
快捷提交(跳过暂存区):
修改最后一次提交:
1
| git commit --amend -m "新的提交信息"
|
从暂存区移除文件
示例:
1
| git rm --cached config.json
|
说明:
- 将文件从 Git 跟踪中移除,但保留在工作目录中
- 常用于误添加的敏感文件(如配置文件、密钥等)
- 建议同时将文件添加到
.gitignore
完全删除文件:
协作开发
克隆仓库
1 2
| git clone <仓库URL> git clone <仓库URL> <自定义目录名>
|
示例:
1 2
| git clone https://github.com/xxx/repository-name.git git clone https://github.com/xxx/repository-name.git my-project
|
克隆指定分支:
1
| git clone -b <分支名> <仓库URL>
|
浅克隆(只克隆最近的提交历史):
1
| git clone --depth 1 <仓库URL>
|
拉取远程更新
1 2
| git pull git pull origin main
|
说明:
git pull = git fetch + git merge
- 建议使用
git fetch + git merge 以便更好地控制合并过程
添加上游仓库 (用于 Fork 后同步)
当你 Fork 了一个开源项目后,需要添加原仓库作为上游源,以便同步最新更新。
1
| git remote add upstream <原作者仓库的URL>
|
示例:
1
| git remote add upstream https://github.com/original-author/repository-name.git
|
查看远程仓库配置:
从上游仓库同步更新
完整流程:
1 2 3 4 5 6 7 8 9 10 11
| git fetch upstream
git checkout main
git merge upstream/main
git push origin main
|
使用 rebase 方式同步(保持提交历史整洁):
1 2 3
| git fetch upstream git rebase upstream/main git push origin main --force-with-lease
|
撤销与重置
撤销工作区的修改
1 2
| git checkout -- <文件名> git checkout -- .
|
新版本推荐:
1 2
| git restore <文件名> git restore .
|
撤销暂存区的文件
新版本推荐:
1
| git restore --staged <文件名>
|
回退提交
1 2 3
| git reset --soft HEAD~1 git reset --mixed HEAD~1 git reset --hard HEAD~1
|
回退到指定提交:
1
| git reset --hard <commit-hash>
|
查看提交历史
1 2 3 4
| git log git log --oneline git log --graph --oneline git log -n 5
|
清理仓库
删除未跟踪的文件:
1 2 3
| git clean -n git clean -f git clean -fd
|
重新初始化仓库(危险操作)
⚠️ 警告:
- 此操作会永久删除所有提交历史
- 无法恢复,请确保已备份重要数据
- 仅在确实需要清除历史时使用
常用技巧
查看文件修改
1 2 3
| git diff git diff --staged git diff HEAD
|
暂存当前工作
1 2 3 4 5
| git stash git stash list git stash pop git stash apply git stash drop
|
标签管理
1 2 3 4 5
| git tag git tag v1.0.0 git tag -a v1.0.0 -m "版本说明" git push origin v1.0.0 git push origin --tags
|
忽略文件
创建 .gitignore 文件:
1 2 3 4 5 6 7 8 9 10 11 12
| *.log
node_modules/
config.json .env
!important.log
|