push: 本地分支合并到远程分支
pull: 远程分支合并到本地分支
git在合并时,两个分支修改了同一个文件的同一处代码时,会产生冲突。
通过对比 commit 的记录,如果本地高于远程就直接把多出来的commit 给怼上去,如果本地分支的最新版本和远程的 commit 有冲突,就需要解决冲突
为什么要先commit,然后pull,再push?
commit是告诉git,这次提交改了哪些东西,不然只是自己改了,git不知道你改了,无从判断比较
pull是为了本地commit和远程commit的对比记录,git按照文件的行数操作进行对比,如果同时操作了某文件的同一行那么就会产生冲突,这时候需要手动解决,保留本地分支代码还是保留远程分支代码
出现代码覆盖或者丢失的情况:
A、B进行协同开发时,有一人没有commit操作,就push了(修改了另一个人写的代码),容易出现代码覆盖
本地代码进行commit后,仓库不会将本地代码与远程仓库代码进行比较,不会识别是否存在代码冲突,必须进行pull命令后,才会将本地代码与仓库远程代码进行比较,如果存在冲突,必须要解决冲突后重新commit和push。不存在冲突,会在pull时直接合并代码,不会将本地代码覆盖掉。
一些常用命令
git config --global user.name"bukas"
git config --global user.email"bukas@gmail.com"
git reset --hard 1094a 回退到指定提交
git remote add origin git@github.com:michaelliao/learngit.git
git push origin master 推送到远程库master分支
git branch 查看所以分支
git commit -m " a" 告诉git把文件提交到本地仓库(本地分支)
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以现在git commit就是往master分支上提交更改
git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后执行git commit就可以一次性把暂存区的所有修改提交到分支