GitHub 常见操作、多人协作注意事项及错误处理笔记
一、GitHub 常见基础操作
1. 本地仓库与远程仓库关联
初始化本地仓库:
git init(新建文件夹后执行,生成隐藏的.git目录)关联远程仓库:
git remote add origin 远程仓库地址(HTTPS/SSH)查看远程关联:
git remote -v(确认origin对应的远程地址是否正确)解除远程关联:
git remote remove origin(关联错误时使用)
2. 代码提交与推送(单人操作)
查看本地修改:
git status(红色为未暂存文件,绿色为已暂存文件)暂存修改文件:
git add 文件名(单个文件)或git add .(所有修改文件)提交暂存文件:
git commit -m "提交说明"(说明需清晰,如“修复登录按钮样式bug”)拉取远程最新代码(避免冲突):
git pull origin 分支名(如main/master)推送本地代码到远程:
git push origin 分支名
3. 分支基础操作
查看所有分支:
git branch(本地分支,*标注当前分支);git branch -r(远程分支);git branch -a(本地+远程所有分支)创建本地分支:
git branch 分支名(如git branch feature/login)切换分支:
git checkout 分支名或git switch 分支名(较新命令)创建并切换分支:
git checkout -b 分支名或git switch -c 分支名删除本地分支:
git branch -d 分支名(分支已合并到主分支时);git branch -D 分支名(强制删除,未合并分支也可删除)推送本地分支到远程:
git push origin 本地分支名:远程分支名(远程分支不存在则自动创建)删除远程分支:
git push origin --delete 远程分支名
二、多人协作GitHub项目分支注意事项
多人协作的核心是“分支规范”和“避免冲突”,以下是关键注意事项,避免打乱项目结构:
- 分支命名规范(统一约定,便于协作):
主分支:main/master(稳定版本,仅用于合并已测试通过的代码,禁止直接提交)
开发分支:develop(日常开发主分支,所有功能分支基于此分支创建)
功能分支:feature/功能名称(如feature/user-register,用于开发单个功能,完成后合并到develop)
修复分支:bugfix/问题描述(如bugfix/login-error,用于修复develop或main分支的bug)
发布分支:release/版本号(如release/v1.0.0,用于版本发布前的测试,测试通过后合并到main和develop)
- 协作流程规范:
每个人从develop分支创建自己的功能/修复分支,禁止直接在develop或main分支上修改代码。
开发过程中,定期拉取develop分支的最新代码(git pull origin develop),及时解决冲突,避免冲突堆积。
功能开发完成后,先在本地测试无误,再推送自己的分支到远程,发起Pull Request(PR),请求合并到develop分支。
PR发起后,需由项目负责人或指定人员审核代码,审核通过后才能合并,禁止私自合并。
合并完成后,及时删除自己的功能/修复分支(本地+远程),避免分支冗余。
- 冲突处理注意事项:
冲突产生原因:多人修改了同一文件的同一部分内容,Git无法自动判断保留哪部分。
处理原则:先拉取远程最新代码,遇到冲突时,打开冲突文件,根据实际需求保留正确代码(冲突部分会用«««< HEAD、=======、»»»> 分支名标注),修改后重新提交、推送。
禁止强行推送:冲突未解决时,不要使用git push -f(强制推送),会覆盖远程代码,导致他人工作丢失。
- 其他注意事项:
提交说明要清晰、简洁,避免无意义的提交(如“修改内容”“更新”),便于后续追溯代码变更。
不要提交无关文件(如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冲突)
切换到develop分支:
git switch develop拉取develop最新代码:
git pull origin develop切换回自己的功能分支:
git switch 自己的分支名合并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.
错误原因:
- 远程仓库地址错误(关联的origin地址不对);2. SSH密钥未配置或配置错误(使用SSH地址时);3. 没有远程仓库的访问权限。
处理方法:
查看远程地址:
git remote -v,确认地址是否正确,错误则重新关联:git remote set-url origin 正确的远程地址。若使用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。确认自己有该远程仓库的访问权限(项目所有者需添加你为协作者)。
错误2:git pull 报错:Automatic merge failed; fix conflicts and then commit the result.
错误原因:
本地分支与远程分支有冲突,Git无法自动合并。
处理方法:
执行
git status,查看冲突文件(标注为both modified)。打开冲突文件,找到冲突标记(«««< HEAD 是本地当前内容,======= 是远程拉取的内容,»»»> 分支名)。
根据实际需求删除冲突标记,保留正确的代码(可与协作成员沟通确认)。
冲突解决后,执行
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禁止直接推送,避免覆盖远程代码。
处理方法:
先拉取远程最新代码:
git pull origin 分支名(拉取后若有冲突,按错误2处理)。拉取成功后,再推送本地代码:
git push origin 分支名。禁止使用
git push -f强制推送(除非确认远程代码可覆盖,且需告知协作成员)。
错误4:git commit 报错:Please tell me who you are.
错误原因:
本地Git未配置用户名和邮箱,无法提交代码(GitHub需要关联用户信息)。
处理方法:
- 配置全局用户名和邮箱(所有Git仓库通用):
1
2
git config --global user.name "你的GitHub用户名"
git config --global user.email "你的GitHub邮箱"
- 配置当前仓库用户名和邮箱(仅当前仓库生效,优先级高于全局配置):
1
2
git config user.name "你的GitHub用户名"
git config user.email "你的GitHub邮箱"
- 查看配置:
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.
错误原因:
本地没有该分支,且未拉取远程对应的分支。
处理方法:
先拉取远程分支信息:
git fetch origin。再创建并切换到该分支:
git checkout -b 分支名 origin/分支名(关联远程分支)。
五、补充说明
- .gitignore文件:用于忽略不需要提交的文件,常见配置(可根据项目调整):
IDE配置文件
.idea/
.vscode/
编译产物
target/
dist/
日志文件
*.log
系统临时文件
*.tmp
若忘记提交说明,可修改最近一次提交:
git commit --amend,修改后保存即可。多人协作时,建议定期查看远程分支状态,及时同步代码,减少冲突和错误。