工作了可以帮助你的 git 的一些高级操作
工作了可以帮助你的 git 的一些高级操作
-
一个好的 commit 会说话
作为一个弱鸡程序员, 我还不能做到 show me the code, 只能让 commit 来帮忙解释了.
-
git commit
会进入一个编辑器的模式, 干净的改动配上详细的 commit, 我写的真好,美滋滋 -
如果 commit 比较简单,比如简单的 tweak, fixes 啊, 比如
git commit -m "Tweak: something"
-
-
保持代码最新, 及时拉取最新的远程代码 我们要保持第一梯队,绝不落后!!! 远程工作的我们,虽然有公司群,但是难免会看不到消息, 难不成大家都在群里大喊一声我要提交了 😂
-
git pull
是一般简单的用法, 在提交之前先拉取一下 -
git pull --rebase
如果远程分支有其他人的提交, 那么需要先拉一下最新的来 rebase 下, 因为别人比你的修改要早嘛
-
-
回到之前的历史编辑状态
代码改的不好, 但是 commit 了, 那要怎么回去呢? 总不能一点点改回去吧, 下面的可以搞定哦,想回哪个版本回哪个
git reset -i HEAD~1
如果当前 git 的操作不满意,需要回退到前面一个操作,可以用这个命令. 再前面一个可以把HEAD~1
改成HEAD~2
或者HEAD~3
,以此类推git reset --hard f08f333
如果要回到具体的 commit,可以用--hard
来指定
-
修改分支的名字 最难取名字(头秃), 分支名字取的不合适, 要删掉重来吗? 不, 一行命令搞定
- 如果分支名取的不好, 要如何修改呢
git rebase --onto newBase oldBase feature/branch
- 如果分支名取的不好, 要如何修改呢
-
撤销文件的修改, 如何把不需要修改的文件还原呢
-
老大在 code review, 诶, 怎么多了这个文件 啊, 这个是因为代码编辑器帮我自动 format,我不小心提交了, 恐慌 😨, 要怎么补救呢? 别怕, 我教你办法.
-
首先去 master 或者别的未修改到这个文件的分支,拿到最新的 commit 号
-
git checkout 8a7b201 index.html
再把这个文件 checkout 到这个 commit 号,是不是还原了呀
Another use case for “checkout” is when you want to restore an old revision of a file: If you specify “HEAD” as the revision, you will restore the last committed version of the file, effectively undoing any local changes that you current have in that file:
-
-
-
撤销 merge 一个 PR 老大, 我把代码合到 demo 了 老大说不, 这个暂时不要放上去 可是总不能干掉吧, force push 更是不敢. 别怕, 下面的可以一下子搞定
git revert -m 1 b76a5f1f
其中的 header 是 merge 的 commit 号
-
删除所有除了 master 之外的分支 这段时间终于忙完了, 诶, 我怎么有这么多分支了
到了删分支的神圣时刻了: 拜拜啦, 你们都是我的功臣们 ps: 注意, 要确认都是 merge 了的哟,不小心删掉了开发中的,那就嗝屁了
git branch | grep -v "master" | xargs git branch -D
-
合并 commit
这个大法好, 特别适合丢三落四的我, 发现总会少点什么, 还好我心细检查出来了, 但是之前已经写过一个了,难道再写一个 commit, no, 看我把她们变成一个
git rebase -i HEAD~2
同样的, 这个也可以适用于~2 和~3 哦, 以此类推
-
大分支和小分支
写大项目的时候, 如果一直在一个分支上开发, 老大看的时候: 晕,怎么有几百个, 你要累死我啊 内心慌得一批, 老大如何解决呢 当然是大分支和小分支了 大分支负责 merge, 小分支负责加功能
一个个小的,最后变成大的么
- git checkout -b xxx 就可以切出去了
持续更新 ing~
团队合作,一般都是在同一个分支上进行开发, 或者开发完之后,需要 code review, 那么一份好的 git 历史, 就像一份文档一样,很清楚的交代了自己的行为, 也会得到别人的认可和亲切感. 因为看起来不那么累了,哈哈 😄