第一次初始化
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
变基,相当于本地代码与远程仓库代码的mergegit push -u
第一次提交后,之后可以简化为git push
现在项目临时出了一个BUG,所以新建了一个bug分支专门用来解决,当bug解决完后要合并到master
上去
D---E bug
/
A---B---C---F--- master
使用merge
如下,合并后产生一个新节点G
D-------E
/ \
A---B---C---F----G--- bug, master
使用rebase
如下,并不会产生新节点,而是将两个分支融合成一个线性的提交,如果出现冲突,先修改冲突,然后执行git rebase -continue
或git rebase -skip
A---B---D---E---C‘---F‘--- bug, master
何时用rebase
个人理解:如上面代码,在本地仓库初始化时拉取远程仓库的代码,使用--rebase
可以得到更好的提交树,而且在合并的过程中遇到冲突会中断,提示去修改冲突
其他情况避免使用rebase
,如上,一旦bug
分支与master
分支合并,出现问题,可以直接回退到版本F
,如果使用rebase
那就出现大问题了
第一拉取远程代码
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指向版本要比远程旧
或者
git reset --hard HEAD^ // 将代码还原到上一版本,^的数量表示往上版本数量
放弃本地修改
未执行
git add
git checkout -- a.txt b.txt git checkout -- * git checkout -- *.txt
已执行
git add
git reset HEAD a.txt b.txt git reset HEAD *
- 已执行
git commit
执行版本回退
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。