Git 学习总结
整理自己学习git问题
1.git fetch 拉取远程指定分支,但不合并
默认克隆,会跟踪origin(远程仓库名称) master(默认远程仓库起始分支)
2.git pull = git fetch + git merge
使用git pull 默认会三方合并,形成C5新的快照通常叫做merge commit
3.git rebase 变基
将我的版本my branch 所有修改 移动到 某分支;
将my branch 所有修改,放到master重播
假如修改了同一个文件,冲突是必不可免的;
实例演示:
master分支 和 feature/增加入库同步标示分支
当前feature/增加入库同步标示分支git log
1.我先git checkout bugfix/修改包裹号逻辑分支上
2.git rebase master ,将当前分支的修改 变基(我自己叫做融合,或者重播)到master分支上去
变基后,bugfix分支已经与master分支融合
3.git checkout master
4.git merge bugfix/我的分支名称,因为bugfix已经与master分支融合过,
并且解决过冲突,那么bugfix 与 master分支将会进行快速合并,形成下图分支,masrer分支变基完成;
可以看到我分支的修改,已经同步到master分支上了;
而且没有丑陋的merge branch commit记录
rebase 与 merge 的区别:两则达到的最终效果其实是一致的,但是两者形成的历史记录不同;
merge会有三方合并记录,但rebase不会有,rabase相当于融合;
rebase提供解决冲突的方法:
1.跟merge一样解决,然后git add 标示已解决冲突
2.git rebase --continue 标示继续变基,解决完成
3.如果不想要这次rabase,可以使用git rebase --abort 放弃这次变基操作,回到rebase之前;
4.git reset --hard HEAD
--hard 重设索引和工作目录,丢弃到指定的log,HEAD标示最新的,HEAD^上个版本,git log,找到指定commit记录,回到指定版本
5.git fetch origin -p -P
与远程分支对齐
6.删除 除master以外的分支全部删除
git branch | grep -v 'master' | xargs git branch -D
7.删除已经提交到远程仓库中的文件
git filter-branch --index-filter “git rm -rf --cached --ignore-unmatch logs/service/service.log” HEAD
git push origin --force --all