GIT操做

第一次初始化

git init  // 初始化一个git仓库
git add . 
git status
git commit -m 'first add'
git remote add origin https://github.com/shichangqi/scqvue.git // 创建远程链接
git pull --rebase origin master // 拉取远程master分支下的代码
git push -u origin master // 推送至远程仓库master
--rebase 变基,至关于本地代码与远程仓库代码的merge
git push -u第一次提交后,以后能够简化为git push

如今项目临时出了一个BUG,因此新建了一个bug分支专门用来解决,当bug解决完后要合并到master上去vue

D---E bug 
      /
 A---B---C---F--- master

使用merge以下,合并后产生一个新节点Ggit

D-------E
      /          \
 A---B---C---F----G---   bug, master

使用rebase以下,并不会产生新节点,而是将两个分支融合成一个线性的提交,若是出现冲突,先修改冲突,而后执行git rebase -continuegit rebase -skipgithub

A---B---D---E---C‘---F‘---   bug, master

什么时候用rebase

我的理解:如上面代码,在本地仓库初始化时拉取远程仓库的代码,使用--rebase能够获得更好的提交树,并且在合并的过程当中遇到冲突会中断,提示去修改冲突
其余状况避免使用rebase,如上,一旦bug分支与master分支合并,出现问题,能够直接回退到版本F,若是使用rebase那就出现大问题了bash

第一拉取远程代码

git clone xxxx.git
git branch -al // 查看本地和远程的分支
git branch master // 建立本地分支master
git checkout master // 切换到本地分支master
git pull origin master // 将本地master与远程master关联
git branch -vv  // 查看当前分支的关联分支
git add .
git commint 
git push

合并分支

git checkout master
git merge dev // 将dev分支的代码合并到master上去

合并远程分支日志

git checkout -b dev origin/dev // 简写语法,至关于
// git branch dev
// git checkout dev
// git remote add origin xxx.git
git pull
git checkout master
git merge dev // 合并本地master分支与dev分支
git push origin master // 推送至远程仓库,完成远程合并

版本回退

git log // 查看提交日志,里面包含提交的版本号
git reset --hard 版本号 // --hard会清空工做区未commit的修改,慎用
git push -f // 强制推送,由于本地的HEAD指向版本要比远程旧

或者code

git reset --hard HEAD^ // 将代码还原到上一版本,^的数量表示往上版本数量

放弃本地修改

  1. 未执行git addip

    git checkout -- a.txt b.txt
    git checkout -- *
    git checkout -- *.txt
  2. 已执行git addrem

    git reset HEAD a.txt b.txt
    git reset HEAD *
  3. 已执行git commit
    执行版本回退
相关文章
相关标签/搜索