Git 原理探秘
版本控制系统与 Git
Git 内部原理基础
Git 基本操作
Git 团队协同开发指令
还没push 前可以做的事
Git概念及工作原理总结
Git 内部原理详解
本文档使用 MrDoc 发布
-
+
首页
还没push 前可以做的事
不同于 SVN 等中央式版本控制系统,Git 的 Commit 其实还在本地端,所以可以修改 commit logs!! * 修改 commit 讯息,甚至内容 * 合并 commits * 打散 commit 成多个 commits * 调换 commits 顺序 ## reset (回到特定节点) ``` 跟 revert 不同,reset 是直接砍掉 commits 歷史記錄 git reset e37c75787 git reset HEAD^ (留著修改在 working tree) git reset HEAD^ --soft (修改放到 staging area) git reset HEAD^ --hard (完全清除) ``` ## 快速修正上一个 Commit 上一个 commit 有 typo,想要重新 commit ``` 1. git reset HEAD^ 2. 修正 3. git commit -am “message” ``` 可以简化成 ``` 1. 修正 2. git commit -a --amend ``` ## rebase (重新 commit 一遍) ``` git rebase -i e37c7578 跳出編輯器,出現: pick 048b59e first commit pick 995dbb3 change something pick aa3e16e changed # Rebase 0072886..1b6475f onto 0072886 # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # # If you remove a line here THAT COMMIT WILL BE LOST. # However, if you remove everything, the rebase will be aborted. ``` rebase 跟 reset 都是危险的操作,因为它们是*改写*历史历史,一不小心资料就不见啰。没把握的话,操作前最好先用 *branch* 保存下来。 ## 第四种合并方式: rebase rebase 调整分支点(仅适用于 local branch) 1. 从要被合并的 branch 头重新分支 2. 将目前 branch 的 commits 记录一笔一笔重新 apply/patch 上去 等于砍掉重练 commit log,仅适合还没分享给别人的 local branch。 > 已经 push 分享出去的 commits 记录,请千万不要再修改记录 push 出去!! ## 集大成:rebase + merge 的完美合并法 假设我们要将 feature branch 合并回主干 develop 原因 * feature branch 很乱,不时 merge 与主干同步 * feature branch 有 typo,commit 讯息想改 * feature branch 有些 commits 想合并或拆开 作法 * 先在 feature branch 做 git rebase develop -i * (反覆整理直到满意) git rebase 分岔点-i * 在从 develop branch 做 git merge feature –no-ff 实际操作可以参考这份录影:[Git rebase 和 merge 合并操作示范录影](http://ihower.tw/blog/archives/6704/) 注意事项 * 必须要加–no-ff 才会有 merge commit。不然会是 fast-forward。 * rebase 之后的 feature branch 就不要再 push 出去了 * 如果有远端的 feature branch,合并完也砍掉 * 不求一次 rebase 到完美,不然中间的 conflict 会搞混。 * 可以一次改点东西就 rebase 一次,然后开个临时的 branch 存档起来,再继续 rebase 自己直到满意为止。
追风者
2022年3月3日 00:36
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码