My flight rules for git

Author Avatar
Crown 11月 25, 2017
  • 在其它设备中阅读本文章

为什么写这篇文章?

偶然的机会在Github上看到一个很有趣的项目, 叫做Flight rules for git, 这个项目是专门来记录我们在各种状况下的所需要的git操作的, 就像飞行员手中的飞行手册, 比较全面地介绍了空中紧急情况的处理方法和原则. 这里我就不照搬别人的内容了, 里面的很多操作我还没遇到过, 大家有兴趣的可以直接去github查看, 已经有人做出了相关的中文翻译. 这里我只记录下我自己遇到的一些情况……

版本穿梭

查看修改历史

git log查看详细的commit信息, 由近到远排列
git log --pretty=oneline可以查看更加简洁的信息

版本回退

git reset --hard commit_id 回退到指定commit
git reset --hard HEAD^ 回退到上一个commit
git reset --hard HEAD^^ 回退到上两个commit
git 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,不包括该条), 在接排下来的交互, 当前我们只要知道 picksquash 这两个命令即可。

  • pick 的意思是要会执行这个 commit
  • squash 的意思是这个 commit 会被合并到前一个commit

我们一般使用s来合并我们的需要合并的commit即可, 然后git push推送到线上.

如果这个过程中有操作错误,可以使用 git rebase --abort来撤销修改

更改合并远程commit

将本地commit按照自己想要的修改好以后, 强推到线上即可(git push -f [remote] [branch]), 但是非常不推荐这么来修改远端的git仓库, 如果在修改期间, 别人拉过你的分支, 会对其他人造成很大影响.


随着我自己个人的技术水平的提高,我也会尽最大力量去原创一些有价值有内容的文章出来。在此期间我的文章会同步更新在以下地方,欢迎大家在自己长逛的网站中关注或者star我的Github来了解我的最新消息!!!推荐大家收藏关注我的博客网站crowncj.com,因为我的最新更改与文章只会在这里更新,其他地方的文章可能会存在更新不及时或者忘记更新等问题。

未经允许,不准转载