Git实战
写在前面
这个学期计算机网络和操作系统的 project 对 git 的使用频率很高,多人协作涌现出大量实战需求,以此文章做简单记录。
实战1
背景:pintos 的 proj4 和 proj3 都是是基于 proj2 的分支上进行开发,main 分支作为测试的分支。 当前 main 的 HEAD 与 proj3 的 HEAD 一致。
需求: 需要将 proj4 的内容『转移』到 main 分支上
尝试:为什么要用『转移』这个词,起初的思考是 main 作为一个『测试』分支, 应该与任意 proj[i] 保持一致。步骤如下: 1
2
31. git checkout main
2. git reset --hard proj4 /* 完全替换 main 分支的内容 */
3. git push origin main -f /* 强制推送到远程 */
解决:接步骤 2. 此时插件提醒我有 59 pull, 31 push. 59 pull 是远端proj3的存档, 31 push 是 proj4 的更改。于是需要先 pull, 解决冲突后,合并后总计 32 push.
实战2
背景:合并后才发现,有地方没和好,比如 doc/userprog.md
在 proj4 的分支上已删除
需求:将 doc/userprog.md
恢复
步骤: 1. 找到 doc/userprog.md
的修改记录的 hash。 1
2git log -- doc/userprog.md /*查找修改该文件的commit*/
git log -p -- doc/userprog.md /*查看修改的内容*/1
git cherry-pick [对应的hash]