如何回退已经push的代码?
第一步:
git rebase -i "commit id" // 这里会处理 commit id 之前的提交记录,不包含 commit id
git rebase -i "commit id"^ // 这里会处理 commit id 以及 commit id 之前的提交记录,包含commit id
比如提交记录顺序:
7bb5dae 第三次提交
1b041cf 第二次提交
7105892 第一次提交
git rebase -i 1b041cf , 则会修改 1b041cf 和 7bb5dae ,也就是 从第二次提交之后 的提交
第二步:
进入 编辑框后,
选择需要 删除的 提交记录,修改命令为 s
保存退出
第三步:
git push origin branch_name -f // 这里需要加 -f 参数,强制 提交
操作之后,本地库会和远程库不一致,提交时 会提示 先 pull 远程库的代码。所以,如果没有强制提交权限,那么这种操作也是行不通的。
注意的是,虽然回退了,但是 别人拉下来的项目 似乎不会同步 回退,所以 还需要 同步一下信息。
如何回退已经commit没有push的代码
这个时候,记录还在本地:
git reset --hard commitId
如何合并多次commit?
第一步:
git rebase -i "a213ef6"^ "ef35b2" // 需要合并的 commit id 范围
第二步:
进入编辑框后
第一个commit id 是最开始的,需要设置为 p 命令
后面的commit id 是最近的,需要设置为 s 命令
第三步:
保存,后 进入 编辑 commit message ,编辑 提交 信息
第四步:
此时,会生成一条新的commit id
执行以下命令来处理:
git checkout your branch
git reset --hard 新的commit id
git push origin your branch -f // 使用参数 -f 进行 强制提交
就OK 了
pull 不下来代码
git pull origin master ,提示: refusing to merge unrelated histories
解决: 用: git pull origin master --allow-unrelated-histories
如果没有强制提交的权限,可以在git仓库-Settings-Respository-Protected branches 进行设置
如何将某个commit合并到指定的分支呢?
1. 切换到 指定分支
2. git cherry-pick 2a206245
删除远程分支/tag
git push origin --delete branch
git push origin --delete tag tag
查看提交记录的常用命令
git log --oneline -5 #显示 commitId commit message
git log --pretty=raw -5 #显示commitId author commit message
-5 表示显示前5条数据
本地厂库与远程厂库的绑定与解绑
绑定:
git remote add origin git地址
解绑:
git remote -v // 查看 本地厂库绑定到的远程厂库,显示: origin 远程厂库git地址
git remote remove origin // 这样就把远程厂库解绑了