git 使用技巧
迪丽瓦拉
2024-03-24 22:22:51
0

多仓库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 和git add 来删除/添加file。
在此过程中需要特别注意谁是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

相关内容