我的常用git命令

193 阅读2分钟

常用git命令

回退到某次提交

好吧,这个如此rude的操作,放在第一条有点不协调。

  1. git reset --hard xxxxxxx

push/pull 远程

git clone xxx.git (本地目录) git push [远程名] [本地分支]:[远程分支]

git pull [远程名] [本地分支]:[远程分支]

git checkout -b [本地分支] [远程名]/[远程分支]

checkout的本地分支和远程分支名可以不一样

git log

git log --oneline --graph --decorate 使用上面命令打印出来的日志,比较美观直观。

git rebase

  • 需要注意的第一点,如果是执行git rebase master,此处的master实际上是本地的master 。 所以在执行git rebase 。
  • master之前,最好保证本地的master是最新的。
  • rebase适用的黄金法则:最好是本地的feature,不需要同步到remote的,这样安全性是最高的,不会对他人的commit造成混乱。因为rebase实际上是将master分支的commit,压到最前面。

rebase fix conflict

rebase提示有冲突,可以按以下顺序解决:

  1. 修改程序代码,解决冲突。

  2. git add fix后的代码文件

  3. git rebase --continue

  4. 如果仍然有冲突继续解决,即重复1-3步骤,直至解决冲突。

rebase --skip --abort

  1. git rebase --skip 高风险操作,是将本次提交的代码删除掉(慎用)。

  2. git rebase --abort 将代码回退到 执行rebase之前的操作

查看远端分支

  • git branch -a

冷冻当前dev分支修复bug

软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。 当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交

$ git stash                                               //冷冻现在在dev分支上的工作状态 冻结吧!  
$ git checkout master                                     //这个bug发生在master主分支上,我们切回master分支
$ git checkout -b issue-101                               //创建代号101的修复bug分支
修改你的bug
$ git add readme.txt                                      //提交到暂存区
$ git commit -m "fix bug 101"                             //注意填写信息,以免日后查证
$ git checkout master                                     //切换回master分支
$ git merge --no-ff -m "merged bug fix 101" issue-101     //合并分支,注意不使用fast forward模式
$ git branch -d issue-101                                 //删除issue-101分支
$ git checkout dev                                        //bug 改完了,是时候回到dev继续写bug了
$ git stash list                                          //查看刚刚的冻结现场
$ git stash pop                                           //git stash pop,恢复的同时把stash内容也删了:
//一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除

参考链接

掘金---bibi94