尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Git的使用 推送代码,merge rebase cherry-pickup

Git的使用 推送代码,merge rebase cherry-pickup ## 将 ty21 的开发提交到远程 main 分支### 场景说明远程: origin/main (已更新) 本地: ├── main (旧版本未开发) └── ty21 (工作分支有开发提交)目标将 ty21 的开发提交合并到 main然后推送到远程 main。### 方法一Merge 方式推荐步骤1更新本地 main 到最新# 切换到 main 分支 git checkout main # 拉取远程 main 的最新更新 git pull origin main步骤2合并 ty21 到 main# 将 ty21 的提交合并到 main git merge ty21 # 如果有冲突解决冲突后提交 # 冲突文件会标记为 modified解决后 git add . git commit -m Merge ty21 into main步骤3推送到远程 main# 将本地 main 推送到远程 main git push origin main### 方法二Rebase 方式保持线性历史步骤1更新本地 main 到最新git checkout main git pull origin main步骤2将 ty21 变基到 main# 切换到 ty21 git checkout ty21 # 将 ty21 的提交重新基于 main 的最新提交 git rebase main # 如果有冲突解决冲突后继续 git add . git rebase --continue步骤3合并到 main 并推送# 切换到 main git checkout main # 快速合并因为 ty21 已经在 main 之上 git merge ty21 # 推送到远程 git push origin main### 方法三Cherry-pick挑选特定提交如果只想将 ty21 的部分提交推送到 main# 查看 ty21 的提交历史 git log ty21 --oneline # 切换到 main 并更新 git checkout main git pull origin main # 将指定提交 cherry-pick 到 main git cherry-pick commit-hash # 如果有多个提交可以批量 cherry-pick git cherry-pick commit1..commit2 # 推送到远程 git push origin main### 完整流程图1. 更新本地 main: git checkout main git pull origin main 2. 合并 ty21 到 main: git merge ty21 # 或 git rebase main在ty21分支上 3. 推送远程: git push origin main### 常见问题问题1合并时出现冲突解决方案 # 查看冲突文件 git status # 打开冲突文件手动解决冲突 # 冲突标记 HEAD、、 ty21 # 解决后添加文件 git add filename.cpp # 继续合并 git commit -m Resolve merge conflicts # 推送 git push origin main问题2远程 main 更新了推送失败错误信息 error: failed to push some refs to origin hint: Updates were rejected because the remote contains work that you do hint: not have locally.解决方案 # 先拉取远程更新 git pull origin main # 解决冲突后再推送 git push origin main问题3想保留 ty21 分支合并后 ty21 分支仍然存在可以继续开发# 切换回 ty21 继续开发git checkout ty21# 下次需要推送到 main 时重复上述流程### 总结方法 优点 缺点 适用场景 Merge 保留完整历史安全 历史记录较复杂 多人协作Rebase 线性历史清晰 需要强制推送 个人开发Cherry-pick 灵活选择提交 可能遗漏依赖 部分提交推荐使用 Merge 方式 git checkout maingit pull origin maingit merge ty21git push origin main这样就能将 ty21 的开发提交推送到远程 main 分支了使用 Git 删除分支Git 分支允许开发者在项目中同时开展不同工作而不互相干扰删除已合并或不再需要的分支有助于保持仓库整洁1。1. 查看现有分支在删除分支之前先查看本地和远程分支列表确认要删除的分支名称Bashgit branch # 查看本地分支 git branch -a # 查看所有本地和远程分支这一步可以避免误删当前所在分支或其他重要分支23。2. 删除本地分支如果要删除本地分支先切换到其他分支再执行删除命令。例如要删除本地分支aBashgit checkout b # 先切换到非删除分支 git branch -d a # 删除本地分支 a使用git branch -d时Git 会检查该分支是否已经合并到当前分支如果尚未合并会拒绝删除2。如果你确认该分支的修改不再需要可以强制删除Bashgit branch -D a3. 删除远程分支删除远程分支使用git push命令Bashgit push origin --delete branch-name也可以使用简写形式Bashgit push origin -d branch-name其中origin是远程仓库名称branch-name是要删除的远程分支名3。4. 远程分支已删除但本地仍有残留有时候远程分支已经在远程仓库中被删除但本地还保留着remotes/origin/...的跟踪副本。此时直接执行删除命令可能会提示错误3。可以通过以下命令清理本地的远程跟踪分支Bashgit remote prune origin或者Bashgit fetch --prune5. 恢复误删的分支如果删除分支后发现还需要它可以通过git log -g查找之前的提交记录然后基于该提交重新创建分支4。Bashgit log -g找到对应的提交 ID例如0537afd2d7a9f4ba0159dd4c6d32157c332faef8然后创建新分支Bashgit branch dev 0537afd2d7a9f4ba0159dd4c6d32157c332faef8最后切换到该分支检查内容Bashgit checkout dev这样可以恢复误删的远程分支或本地分支4。总结删除本地分支git branch -d 分支名未合并时用-D强制删除。删除远程分支git push origin -d 分支名。清理远程残留git remote prune origin。恢复误删分支先用git log -g找提交再git branch重新创建。
返回列表