创建git新仓库并提交代码
1 git init
创建一个新仓库
2 git clone username@host:/path/to/repository
克隆远端服务器上的仓库到本地并关联
git工作流:
本地仓库由git维护的三棵树组成
- 工作目录:实际的文件
- 暂存区(index或stage):
git add <filename>
,提交到暂存区 - Head(指向最后一次提交的结果):
git commit -m "注释"
,提交到Head,但还未到远端仓库,需要git push才可以
git提交代码基本操作
git add 文件名
git commit -m "注释"
git push origin master(master可替换为对应分支)
分支
产品在master(默认分支)上上线,开发过程中不影响主分支新建的测试分支,只有将新建的分支push到远端仓库,才会被他人看到
git checkout -b 分支名 新建分支
git checkout master 切换回主分支
git checkout -d 分支名 删除分支
git push origin 分支名 将分支推送到远程仓库
理解
git版本库的内部结构是有向无环图。
每一次提交commit都会生成一个版本树的快照,通常快照会保存一个指向父节点引用,即最近一次提交的节点的快照;初次提交没有,git merge会有两个或多个
辨析
- git merge与git rebase(工作方式不同)
同:
从一个分支获取,并合并到当前分支
异:
git merge:
- git merge master 把master分支合并到当前分支上,并产生一次新的commit(merge commit)
- 若合并遇到冲突,仅需要修改冲突,再commit一次
- 优:能真实的记录每一次commit
- 缺:每次merge会自动产生一次merge commit,在commit比较频繁的时候(如使用git GUI tools时),分支杂乱。
git rebase:本质是变基,即找公共祖先。
- 合并之前的commit历史,并且不会产生新的commit
- 若合并中遇到冲突,需要修改冲突,然后
git add git rebase --continue(若无效) git rebase --skip
- 优:工作区简洁
- 缺:不容易定位问题,rewrite工作区history
不要在公共分支上使用git rebase
git指令
- git log --graph:可以查看分支合并图
- git merge 分支名:将该分支合并到当前分支,合并commit操作