Git本地有修改、远程有更新,无需强制推送如何提交代码并同步远程内容?
正确操作方案
操作逻辑说明
git pull本质是git fetch + git merge的组合,只要操作流程正确,不会丢失你已经提交的本地代码,之前出现代码丢失的情况多为冲突处理不当导致。以下是两种安全的操作方案,均不需要强制推送:
方案1:变基操作(推荐,提交历史更整洁)
- 第一步:拉取远程development分支的最新更新到本地,不自动合并
执行命令:git fetch origin development - 第二步:将本地提交移至远程最新提交的后方,完成分支整合
执行命令:git rebase origin/development冲突处理说明:如果出现冲突提示,逐行修改冲突文件,同时保留你需要的本地变更和远程更新,修改完成后执行
git add <冲突文件名>,再执行git rebase --continue即可完成变基。若要中途放弃操作,执行git rebase --abort即可回到操作前的状态,无代码丢失风险。 - 第三步:推送整合后的代码到远程
执行命令:git push origin development
方案2:合并操作(更易上手)
- 第一步:拉取远程development分支的最新更新到本地
执行命令:git fetch origin development - 第二步:合并远程更新到本地分支
执行命令:git merge origin/development冲突处理说明:出现冲突时同样逐行核对修改,完成后执行
git add <冲突文件名>+git commit完成合并即可。 - 第三步:推送合并后的代码到远程
执行命令:git push origin development
安全操作提醒
- 所有操作开始前,确认本地修改已经全部提交,未提交的临时变更可执行
git stash暂存,操作完成后执行git stash pop恢复 - 冲突处理时不要直接全量覆盖本地或远程内容,逐行核对两个版本的修改点,确认无误后再继续操作
- 若出现操作失误,可执行
git reflog查看历史操作记录,找到操作前的commit哈希值后执行git reset --hard <哈希值>即可恢复原有代码
内容的提问来源于stack exchange,提问作者Hakuna matata
相关产品推荐
相关产品推荐

