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
以下,合并后产生一个新节点G
git
D-------E / \ A---B---C---F----G--- bug, master
使用rebase
以下,并不会产生新节点,而是将两个分支融合成一个线性的提交,若是出现冲突,先修改冲突,而后执行git rebase -continue
或git rebase -skip
github
A---B---D---E---C‘---F‘--- bug, master
我的理解:如上面代码,在本地仓库初始化时拉取远程仓库的代码,使用--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^ // 将代码还原到上一版本,^的数量表示往上版本数量
未执行git add
ip
git checkout -- a.txt b.txt git checkout -- * git checkout -- *.txt
已执行git add
rem
git reset HEAD a.txt b.txt git reset HEAD *
git commit