文章

GitHub 常见操作、多人协作注意事项及错误处理笔记

GitHub 常见操作、多人协作注意事项及错误处理笔记

一、GitHub 常见基础操作

1. 本地仓库与远程仓库关联

  1. 初始化本地仓库:git init(新建文件夹后执行,生成隐藏的.git目录)

  2. 关联远程仓库:git remote add origin 远程仓库地址(HTTPS/SSH)

  3. 查看远程关联:git remote -v(确认origin对应的远程地址是否正确)

  4. 解除远程关联:git remote remove origin(关联错误时使用)

2. 代码提交与推送(单人操作)

  1. 查看本地修改:git status(红色为未暂存文件,绿色为已暂存文件)

  2. 暂存修改文件:git add 文件名(单个文件)或 git add .(所有修改文件)

  3. 提交暂存文件:git commit -m "提交说明"(说明需清晰,如“修复登录按钮样式bug”)

  4. 拉取远程最新代码(避免冲突):git pull origin 分支名(如main/master)

  5. 推送本地代码到远程:git push origin 分支名

3. 分支基础操作

  1. 查看所有分支:git branch(本地分支,*标注当前分支);git branch -r(远程分支);git branch -a(本地+远程所有分支)

  2. 创建本地分支:git branch 分支名(如git branch feature/login)

  3. 切换分支:git checkout 分支名git switch 分支名(较新命令)

  4. 创建并切换分支:git checkout -b 分支名git switch -c 分支名

  5. 删除本地分支:git branch -d 分支名(分支已合并到主分支时);git branch -D 分支名(强制删除,未合并分支也可删除)

  6. 推送本地分支到远程:git push origin 本地分支名:远程分支名(远程分支不存在则自动创建)

  7. 删除远程分支:git push origin --delete 远程分支名

二、多人协作GitHub项目分支注意事项

多人协作的核心是“分支规范”和“避免冲突”,以下是关键注意事项,避免打乱项目结构:

  1. 分支命名规范(统一约定,便于协作):
  • 主分支:main/master(稳定版本,仅用于合并已测试通过的代码,禁止直接提交)

  • 开发分支:develop(日常开发主分支,所有功能分支基于此分支创建)

  • 功能分支:feature/功能名称(如feature/user-register,用于开发单个功能,完成后合并到develop)

  • 修复分支:bugfix/问题描述(如bugfix/login-error,用于修复develop或main分支的bug)

  • 发布分支:release/版本号(如release/v1.0.0,用于版本发布前的测试,测试通过后合并到main和develop)

  1. 协作流程规范:
  • 每个人从develop分支创建自己的功能/修复分支,禁止直接在develop或main分支上修改代码。

  • 开发过程中,定期拉取develop分支的最新代码(git pull origin develop),及时解决冲突,避免冲突堆积。

  • 功能开发完成后,先在本地测试无误,再推送自己的分支到远程,发起Pull Request(PR),请求合并到develop分支。

  • PR发起后,需由项目负责人或指定人员审核代码,审核通过后才能合并,禁止私自合并。

  • 合并完成后,及时删除自己的功能/修复分支(本地+远程),避免分支冗余。

  1. 冲突处理注意事项:
  • 冲突产生原因:多人修改了同一文件的同一部分内容,Git无法自动判断保留哪部分。

    • 处理原则:先拉取远程最新代码,遇到冲突时,打开冲突文件,根据实际需求保留正确代码(冲突部分会用«««< HEAD、=======、»»»> 分支名标注),修改后重新提交、推送。

    • 禁止强行推送:冲突未解决时,不要使用git push -f(强制推送),会覆盖远程代码,导致他人工作丢失。

  1. 其他注意事项:
  • 提交说明要清晰、简洁,避免无意义的提交(如“修改内容”“更新”),便于后续追溯代码变更。

  • 不要提交无关文件(如IDE配置文件、编译产物、日志文件等),需在.gitignore文件中配置忽略规则。

  • 多人协作时,尽量分工明确,避免多人同时修改同一文件的同一部分,减少冲突概率。

三、多人协作常见Git命令

1. 拉取远程分支并创建本地分支(首次拉取他人分支)

git fetch origin 远程分支名:本地分支名(如git fetch origin feature/login:feature/login)

2. 同步远程分支到本地(远程分支有更新时)

git pull origin 远程分支名(如git pull origin develop)

3. 发起PR后,同步develop分支最新代码到自己的功能分支(避免PR冲突)

  1. 切换到develop分支:git switch develop

  2. 拉取develop最新代码:git pull origin develop

  3. 切换回自己的功能分支:git switch 自己的分支名

  4. 合并develop分支到自己的分支:git merge develop(解决冲突后提交)

4. 查看分支合并记录

git log --graph --oneline --all(图形化显示所有分支的提交和合并记录,清晰查看代码流向)

5. 撤销本地修改(未暂存)

1
git checkout -- 文件名` 或 `git restore 文件名

6. 撤销暂存的修改(已git add,未git commit)

1
git reset 文件名` 或 `git restore --staged 文件名

7. 撤销已提交的修改(未推送)

git reset --soft HEAD~1(保留本地修改,仅撤销commit);git reset --hard HEAD~1(彻底删除本地修改,谨慎使用)

四、常见错误及处理方法

错误1:git push 报错:fatal: Could not read from remote repository.

错误原因:

  1. 远程仓库地址错误(关联的origin地址不对);2. SSH密钥未配置或配置错误(使用SSH地址时);3. 没有远程仓库的访问权限。

处理方法:

  1. 查看远程地址:git remote -v,确认地址是否正确,错误则重新关联:git remote set-url origin 正确的远程地址

  2. 若使用SSH地址,检查SSH密钥配置:查看~/.ssh目录下是否有id_rsa和id_rsa.pub文件,没有则生成:ssh-keygen -t rsa -C "你的GitHub邮箱",然后将id_rsa.pub中的内容复制到GitHub的Settings → SSH and GPG keys → New SSH key。

  3. 确认自己有该远程仓库的访问权限(项目所有者需添加你为协作者)。

错误2:git pull 报错:Automatic merge failed; fix conflicts and then commit the result.

错误原因:

本地分支与远程分支有冲突,Git无法自动合并。

处理方法:

  1. 执行git status,查看冲突文件(标注为both modified)。

  2. 打开冲突文件,找到冲突标记(«««< HEAD 是本地当前内容,======= 是远程拉取的内容,»»»> 分支名)。

  3. 根据实际需求删除冲突标记,保留正确的代码(可与协作成员沟通确认)。

  4. 冲突解决后,执行git add .git commit -m "解决与develop分支的冲突"git pull(确认无其他冲突)。

错误3:git push 报错:error: failed to push some refs to ‘xxx’,hint: Updates were rejected because the remote contains work that you do not have locally.

错误原因:

远程分支有最新的代码,而本地分支未同步(他人已推送代码到远程,你本地代码落后),Git禁止直接推送,避免覆盖远程代码。

处理方法:

  1. 先拉取远程最新代码:git pull origin 分支名(拉取后若有冲突,按错误2处理)。

  2. 拉取成功后,再推送本地代码:git push origin 分支名

  3. 禁止使用git push -f强制推送(除非确认远程代码可覆盖,且需告知协作成员)。

错误4:git commit 报错:Please tell me who you are.

错误原因:

本地Git未配置用户名和邮箱,无法提交代码(GitHub需要关联用户信息)。

处理方法:

  1. 配置全局用户名和邮箱(所有Git仓库通用):
1
2
git config --global user.name "你的GitHub用户名"
git config --global user.email "你的GitHub邮箱"
  1. 配置当前仓库用户名和邮箱(仅当前仓库生效,优先级高于全局配置):
1
2
git config user.name "你的GitHub用户名"
git config user.email "你的GitHub邮箱"
  1. 查看配置:git config --list,确认配置正确。

错误5:删除远程分支后,本地执行git branch -a 仍能看到该分支

错误原因:

本地缓存了远程分支信息,未同步远程分支的删除状态。

处理方法:

执行git remote prune origin,清理本地缓存的无效远程分支,再执行git branch -a即可看到最新的远程分支列表。

错误6:git checkout 分支名 报错:error: pathspec ‘分支名’ did not match any file(s) known to git.

错误原因:

本地没有该分支,且未拉取远程对应的分支。

处理方法:

  1. 先拉取远程分支信息:git fetch origin

  2. 再创建并切换到该分支:git checkout -b 分支名 origin/分支名(关联远程分支)。

五、补充说明

  1. .gitignore文件:用于忽略不需要提交的文件,常见配置(可根据项目调整):

IDE配置文件

.idea/

.vscode/

编译产物

target/

dist/

日志文件

*.log

系统临时文件

*.tmp

  1. 若忘记提交说明,可修改最近一次提交:git commit --amend,修改后保存即可。

  2. 多人协作时,建议定期查看远程分支状态,及时同步代码,减少冲突和错误。

本文由作者按照 CC BY 4.0 进行授权