多仓库cherry-pick步骤:
一:zionsdk仓库:
git remote -v
输出: ssh://gaocanjun@icode.baidu.com:8235/baidu/ZionBase/zionsdk-unity-demo
二:yuanbang仓库:
git checkout master
git remote add zionsdk ssh://gaocanjun@icode.baidu.com:8235/baidu/ZionBase/zionsdk-unity-demo (zionsdk仓库的git remote -v输出的地址)
git fetch zionsdk fun-ecs:fun-ecs 这里要注意名字
git checkout fun-ecs
git remote -v
git branch --set-upstream-to=remotes/zionsdk/fun-ecs fun-ecs
git pull --rebase
git checkout master
git cherry-pick A^..B
...解决冲突...
git push origin HEAD:refs/for/master
使用git tutor 添加和删除资源,填上备注,然后Commit,
回到Git Bash 执行: git pull --rebase
先git commit -m "* BMetaverse-568 [Task] 编辑器资源打包及上传功能添加Bos上传功能"
再 git pull --rebase,解决冲突
最后
git push origin HEAD:refs/for/fun-ecs
审核通过后 在Icode已经合入的情况下执行:git pull --rebase,就可以消除有一个提交的提示
git push
撤销上次提交
git reset --soft HEAD^
git reset --hard HEAD^
--hard的作用是代码强制回溯到某节点,对于当前节点->回溯节点中间已commit的内容就会全部消失
git reset --soft模式下与hard模式会有所不同,他会保存当前节点->回溯节点之间已保存的内容。
对于“both added”、“both deleted”、“both modified”等类型的冲突,
若想完整地保留某一方的修改可以执行git checkout --ours(或者--theirs) <文件名>来选择想要保留的版本。
需要注意的是由于git rebase 是先撤销再应用commit,所以这里的ours指的是upstream-branch,theirs指的是我们将要应用的临时commit。
对于“added by us/them”、“deleted by us/them”等类型的冲突需要使用git rm
在此过程中需要特别注意谁是us,谁是them。
完全修改完冲突后,需要对冲突文件进行:git add 冲突文件
然后再 git rebase continue
删除文件后需要 git add -A, 光 git add. 不行,区别如下:
git add 的几种参数区别
git add -A 保存所有的修改
git add . 保存新的添加和修改,但是不包括删除
git add -u 保存修改和删除,但是不包括新建文件。
git commit --amend
git push HEAD:refs/for/fun-ecs
Tips:几条cherry-pick简易命令:注意执行cherry-pick前需要在dev分支上执行git pull --rebase,使本地知道已经提交的分支内容
1、在dev分支执行:git cherry-pick commit-Hash(fun-ecs)将同步该单次提交
2、在dev分支执行:git cherry-pick commit-HashA..commit-HashB 将同步两次commit之间提交,HashA应早于HashB,左开右闭,不包含HashA
3、在dev分支执行:git cherry-pick commit-HashA^..commit-HashB 同2,包含HashA
可选参数:
-n 只更新 工作区 和 暂存区 ,不自动产生新的提交
-e 打开编辑器 编辑 提交信息。
--abort 发生代码冲突后,放弃合并,回到操作前的样子。
只是修改了文件,没有任何 git 操作
git checkout -- aaa.html // 指定还原`aaa.html`文件
git checkout -- * // 还原所有文件
修改了文件,并提交到暂存区(即:编辑之后,进行git add 但没有 git commit -m "留言xxx")
git log --oneline // 可以省略
git reset HEAD // 回退到当前版本
git checkout -- aaa.html
修改了文件,并提交到仓库区(即:编辑之后,进行git add 并且 git commit -m "留言xxx")
git log --oneline // 可以省略
git reset HEAD^ // 回退到上一个版本,注意看HEAD后面有个 ^HEAD^ 是回退到上个版本HEAD^^ 是回退到上上个版本HEAD~数字 是回退到数字个版本
git checkout -- aaa.html