git status # 检查工作区状态 git log --oneline -5 # 查看最近5次提交记录
二、同步冲突处理
1、下拉冲突
当执行 git pull 时,如果本地有未提交的更改且与远程更改冲突,会出现以下错误:
1 2 3 4
error: Your local changes to the following files would be overwritten by merge: 文件名 Please commit your changes or stash them before you merge. Aborting
方案一:提交本地更改然后拉取(推荐)
1 2 3 4 5 6 7 8
# 1. 添加所有更改到暂存区 git add .
# 2. 提交更改 git commit -m "描述你的修改"
# 3. 拉取远程更新 git pull origin main
方案二:暂存本地更改然后拉取
1 2 3 4 5 6 7 8
# 1. 暂存当前更改 git stash
# 2. 拉取远程更新 git pull origin main
# 3. 恢复暂存的更改 git stash pop
方案三:放弃本地更改(谨慎使用)
方法A:使用 git reset --hard(传统方法)
1 2 3 4 5
# 1. 放弃所有本地更改 git reset --hard HEAD
# 2. 拉取远程更新 git pull origin main
方法B:使用 git restore(Git 2.23+,推荐)
1 2 3 4 5
# 1. 放弃工作区的所有更改 git restore .
# 2. 拉取远程更新 git pull origin main
2、合并冲突
当远程和本地修改了相同文件的相同部分时,会产生合并冲突:
冲突解决流程:
拉取时遇到冲突:
1
git pull origin main # 如果提示冲突,Git会自动标记冲突文件
查看冲突状态:
1
git status # 会显示哪些文件有冲突
手动打开冲突文件,查找冲突标记:
冲突标记格式:
1 2 3 4 5
<<<<<<< HEAD 你的本地更改内容 ======= 远程仓库的更改内容 >>>>>>> origin/main
解决冲突:
选择保留本地版本、远程版本,或手动合并两者
删除所有冲突标记(<<<<<<<、=======、>>>>>>>)
保存文件
标记冲突已解决并完成合并:
1 2
git add . git commit -m "解决合并冲突"
3、推送冲突
当推送时远程仓库有新的提交,会出现non-fast-forward错误:
错误信息示例:
1 2 3
! [rejected] main -> main (non-fast-forward) error: failed to push some refs to 'origin' hint: Updates were rejected because the tip of your current branch is behind
解决方法:
方法1:拉取合并后推送(推荐)
1 2
git pull origin main # 先拉取远程更新 git push origin main # 再推送本地更改
方法2:使用rebase保持线性历史
1 2
git pull --rebase origin main # 变基合并 git push origin main