常用git命令
回退到某次提交
好吧,这个如此rude的操作,放在第一条有点不协调。
- 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提示有冲突,可以按以下顺序解决:
-
修改程序代码,解决冲突。
-
git add fix后的代码文件
-
git rebase --continue
-
如果仍然有冲突继续解决,即重复1-3步骤,直至解决冲突。
rebase --skip --abort
-
git rebase --skip 高风险操作,是将本次提交的代码删除掉(慎用)。
-
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来删除