快进式推送:要推送的本地版本库的提交是建立在远程版本库相应分支的现有提交基础上的。即远程版本库相应分支的最新提交是本地版本库最新提交的祖先提交。
查看本地版本库的最新提交及历史提交:git rev-list HEAD
查看远程版本库的引用对应的SHA1哈希值:git ls-remote origin
强制推送:git push-f (会造成提交覆盖大战) (禁止非快进式推送,可以配置)
应该合并后推送
git pull =git fetch+git merge
解决冲突
git push
采用修补式提交:(前一次的提交会被抹掉)
git add -u
git commit --amend -m "user2's profile."
git merge [选项...] <commit>
<commit> :提交ID或对应的引用:分支、里程碑
合并操作:将<commit>对应的目录树和当前工作分支的目录树的内容进行合并,合并后的提交以当前分支的提交作为第一个交提交,以<commit>为第二个父提交。
合并操作:支持将多少<commit>代表的分支和当前分支进行合并
黙认合并会自动提交。--no-commi选项,将合并的结果放入暂存区
合并冲突会造成合并操作的中断,冲突的文件被标识,用户可以对标识为冲突的文件进行冲突解决操作,然后更新暂存区,再提交,过多成合并的扣作
合并结果:自动合并、逻辑冲突、真正的冲突和树冲突
.git/MERGE_HEAD记录所合并的提交ID
.git/MERGE_MSG 记录合并失败的信息
.git/MERGE_MODE标识合并状态
解决冲突:如果两个用户修改了同一个文件的同一区域,则在合并的时候会冲突,而导致合并过程中断。
冲突解决的实质就是通过编辑操作,将冲突标符所标识的冲突内容替换为合适的内容,并去掉冲突标识符。编辑完成后执行git add命令将文件添加到暂存区,然后再提交就完成了冲突解决。
或者放弃合并操作:git reset将暂存区重置