常规操作
添加暂存
git add .
提交
git commint -m "commit log"
可合并
git commit -am "add && commit"
推送
git push origin master
克隆仓库
git clone git@sre.wiki:devops/blog.git
默认分支
指定分支克隆
git clone -b branch_a git@sre.wiki:devops/blog.git
从某一commit提取变更合并到另外一个commit/分支
git cherry-pick {CommitID}
把某个分支合并到另外一个分支
merge方式
# 在master分支,将dev分支合并到master中
git merge dev
rebase方式
# http://jartto.wang/2018/12/11/git-rebase/
git:(feature1) git rebase master
# 如果有冲突,解决冲突,然后
git add
# 你无需执行 git-commit,只要执行 continue
git rebase --continue
# 如果不想继续,想回到起初的样子
git rebase —abort
切换分支
git checkout sre/dev
撤销修改,恢复成原有的样子
git checkout .
查看变更
git diff
本地合并多次提交为一次提交,然后push
# 合并4次提交记录
git rebase -i HEAD~4
## 注意不要合并先前提交的东西,也就是已经提交远程分支的纪录。
git rebase --edit-todo
git rebase --continue
查看历史提交
git log
问题
关于分支合并&冲突解决的二三事
如果 online 分支 和 master 分支 都作为保护分支,online 只能接受来自 master 的 merge,master 只能接受来自 feature分支 的合并,那么只要 online 和 master 都包含所有的commit变更,那么master合并到online就不会出现冲突的情况。
那么如果 master 合并 online 出现了冲突,该怎么办呢?(当然最好按照严格流程来,这不万一嘛!)首先解决冲突,按照提示,在本地解决,checkout online,merge master --no-ff,然后解决冲突 add commit push(当然这里需要有权限),这时候online就包含master的所有变更了,但是master不包含online的那个解决冲突的变更,所以还需要将online合并到master,无冲突,直接合并即可,最终保证online和master包含所有变更,接下来就可以按照规范流程走了!!!
.gitignore不生效
git rm -r --cached .
git add .
git commit -m 'update .gitignore'