My flight rules for git
为什么写这篇文章?
偶然的机会在Github
上看到一个很有趣的项目, 叫做Flight rules for git, 这个项目是专门来记录我们在各种状况下的所需要的git操作的, 就像飞行员手中的飞行手册, 比较全面地介绍了空中紧急情况的处理方法和原则. 这里我就不照搬别人的内容了, 里面的很多操作我还没遇到过, 大家有兴趣的可以直接去github
查看, 已经有人做出了相关的中文翻译. 这里我只记录下我自己遇到的一些情况……
版本穿梭
查看修改历史
git log
查看详细的commit
信息, 由近到远排列git log --pretty=oneline
可以查看更加简洁的信息
版本回退
git reset --hard commit_id
回退到指定commitgit reset --hard HEAD^
回退到上一个commitgit reset --hard HEAD^^
回退到上两个commitgit reset --hard HEAD~4
回退到前4个commit
git reset filename
重置某个特殊的文件, 可以用文件名做为参数
放弃本地commit, 与线上保持一致
git reset --hard origin/my-branch
回退到我已经删除了的commit(回到未来)
git reflog
查看命令历史, 然后git reset --hard commit_id
回退到指定commit
从版本库中删除文件
git rm test.txt
git commit -m "remove test.txt"
本地文件删错了,需要恢复
git checkout -- test.txt
分支管理
查看本地分支
git branch
创建本地分支
git branch <name>
切换本地分支
git checkout <name>
创建+切换本地分支
git checkout -b <name>
合并某本地分支到当前你所在的本地分支
git merge <name>
将某本地分支推送到远端某分支
git push origin test:master
// 提交本地test分支作为远端的master分支git push origin test:test
// 提交本地test分支作为远端的test分支git push origin <name>
// 直接将当前本地分支推送到远程<name>
分支
删除本地分支
git branch -d <name>
删除一个远程分支
git push origin :<name>
放弃我本地的所有更改, 以便我的分支与远程的保持一致
先切换到你想被覆盖的本地分支, 然后执行git reset --hard origin/<name>
commit 管理
合并多个本地commit为一个
git rebase -i HEAD~2
合并分支上最近的两个commit(HEAD~3
:3个, HEAD~4
:4个, abcdefxx
: 该条commit之前的所有commit,不包括该条), 在接排下来的交互, 当前我们只要知道 pick
和 squash
这两个命令即可。
pick
的意思是要会执行这个 commitsquash
的意思是这个 commit 会被合并到前一个commit
我们一般使用s
来合并我们的需要合并的commit即可, 然后git push
推送到线上.
如果这个过程中有操作错误,可以使用 git rebase --abort
来撤销修改
更改合并远程commit
将本地commit
按照自己想要的修改好以后, 强推到线上即可(git push -f [remote] [branch]
), 但是非常不推荐这么来修改远端的git仓库, 如果在修改期间, 别人拉过你的分支, 会对其他人造成很大影响.
随着我自己个人的技术水平的提高,我也会尽最大力量去原创一些有价值有内容的文章出来。在此期间我的文章会同步更新在以下地方,欢迎大家在自己长逛的网站中关注
或者star
我的Github来了解我的最新消息!!!推荐大家收藏关注我的博客网站crowncj.com,因为我的最新更改与文章只会在这里更新,其他地方的文章可能会存在更新不及时或者忘记更新等问题。
- 我的博客网站 — crowncj.com
- 我的掘金 — 掘金 | Crown
- 我的简书 — 简书 | Crown3
- 我的segmentfault — segmentfault | Crown3
未经允许,不准转载