git 多人协作
blog
本文字数:1.2k 字 | 阅读时长 ≈ 5 min

git 多人协作

blog
本文字数:1.2k 字 | 阅读时长 ≈ 5 min

Git 多人协作指南

1. 基础配置

安装 Git

sudo apt-get install git

# 配置用户信息
git config --global user.name "your_name"
git config --global user.email "your.email@example.com"

# 代理设置(如需要)
git config --global https.proxy http://127.0.0.1:10808
git config --global http.proxy 'socks5://127.0.0.1:10809'

配置 SSH 密钥

# 检查现有SSH密钥
cd ~/.ssh
ls id_rsa*

# 生成新的SSH密钥
ssh-keygen -t rsa -C "your.email@example.com"

# 之后将 ~/.ssh/id_rsa.pub 的内容添加到GitHub设置中

2. 仓库管理

初始化与远程关联

# 初始化并关联远程仓库
git init
git remote add origin git@github.com:username/repository.git
git branch -M main

# 同步并推送
git pull --rebase origin main
git add .
git commit -m "initial commit"
git push -u origin main

基本操作

# 文件操作
git add <file>      # 添加特定文件
git add -A          # 添加所有变更
git commit -m "commit message"
git commit --amend  # 修改最后一次提交

# 远程同步
git push origin main
git pull origin main
git fetch origin    # 获取远程更新但不合并

# 状态查看
git status          # 查看仓库状态
git log --oneline   # 简洁历史显示

3. 分支管理

分支操作

# 分支管理基础
git branch          # 查看本地分支
git branch -a       # 查看所有分支(包括远程)
git checkout -b dev # 创建并切换到新分支
git checkout main   # 切换到main分支
git branch -d dev   # 删除分支

# 分支合并
git merge dev                                    # 快速合并
git merge --no-ff -m "merge message" dev        # 保留合并历史
git log --graph --pretty=oneline --abbrev-commit # 查看分支历史

分支工作流程

  1. 主分支(main):保持稳定,用于产品发布
  2. 开发分支(dev):日常开发工作
  3. 功能分支(feature):针对具体功能开发

4. 冲突处理

解决冲突

当多人同时修改同一个文件的相同部分时,就会产生冲突。以下是一个具体的例子:

假设有一个 README.md 文件:

# 项目说明
这是一个示例项目
联系方式:admin@example.com

开发者 A 和开发者 B 同时修改了联系方式:

如果开发者 A 先提交并推送,当开发者 B 尝试推送时,会遇到冲突。文件会变成这样:

# 项目说明
这是一个示例项目
=======
联系方式:alice@example.com
>>>>>>> origin/main

解决冲突的步骤:

  1. 首先,当执行 git pull 时,Git 会提示冲突:
git pull origin main
# 输出:CONFLICT (content): Merge conflict in README.md
  1. 使用 git status 查看冲突文件:
git status
# 输出:
# Unmerged paths:
#   (use "git add <file>..." to mark resolution)
#   both modified:   README.md
  1. 打开冲突文件,你会看到:

    • <<<<<<< HEAD======= 之间的内容是当前分支的修改
    • =======>>>>>>> origin/main 之间的内容是远程分支的修改
  2. 手动编辑文件解决冲突,比如决定使用:

# 项目说明
这是一个示例项目
联系方式:alice@example.com, bob@example.com
  1. 解决冲突后,标记为已解决并提交:
# 标记文件冲突已解决
git add README.md
# 提交解决结果
git commit -m "resolve conflict: merge contact information"
# 推送到远程
git push origin main

使用工具解决冲突

  1. 使用 VS Code:

    • 直接打开冲突文件,会看到可视化的冲突解决选项
    • 点击 “Accept Current Change”、“Accept Incoming Change” 或 “Accept Both Changes”
  2. 使用 git mergetool

# 配置 mergetool
git config --global merge.tool vimdiff
# 使用工具解决冲突
git mergetool

预防冲突的最佳实践

  1. 经常同步远程代码:git pull origin main
  2. 在不同分支上工作:git checkout -b feature-branch
  3. 小步提交,提供清晰的提交信息
  4. 使用 rebase 保持提交历史整洁:git pull --rebase origin main

5. 高级技巧

撤销操作

# 撤销修改
git checkout -- <file>     # 撤销工作区修改
git reset HEAD <file>      # 撤销暂存区修改
git reset --soft HEAD^     # 撤销提交但保留修改
git reset --hard HEAD^     # 撤销提交并删除修改

临时保存

git stash               # 保存当前工作进度
git stash list         # 查看保存的工作进度
git stash pop          # 恢复并删除stash
git stash apply        # 仅恢复不删除

标签管理

# 标签操作
git tag v1.0                        # 创建标签
git tag -a v1.0 -m "version 1.0"   # 创建带注释的标签
git tag                            # 查看标签
git push origin v1.0               # 推送标签到远程

其他技巧

  1. 设置命令别名
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
  1. 忽略文件:创建 .gitignore 文件
*.log
node_modules/
.DS_Store
4月 06, 2025
3月 10, 2025
12月 31, 2024