git

作者: 三个程序员之一 | 来源:发表于2023-03-23 09:35 被阅读0次

git解决reflog乱码
set LESSCHARSET=utf-8

git add没有commit 找回数据
find .git/objects -type f | xargs ls -lt | sed 10q 找到最近add的10条记录


image.png

git cat-file -p 2a19f27575563638fe4922c8a8f647fad65b2b > 2a19.md
拿到列表名字就是Objects后面去掉斜杠连起来的就是名字

git reflog是看本地的所有操作日志
git log是查看当前版本之前的log提交。git reflog范围更广但是只能本地
git reset --hard commit号
reset之后需要 git push -f 强制推送
这时候本地和远程指向的head相同 但是其他合作者的这个分支指向不同也就是其他合作者git pull 并不能回滚
可以通过 git log --pretty=oneline --graph 查看其他用户本地指向的head 和 服务器端指向的head是有差异的

这个有差异的用户可以通过 git reset --hard origin/分支 来进行本地重制 这样的话自己的代码会被覆盖

所以发起者用户可以随便提交点什么 让第二个用户的head和远端保持一致 这时候 第二个用户可以直接pull并进行合并。
~~~~但是如果有的用户已经拉过之前的代码了所以会出现本地的分支分支和生产分支指向不一致的问题 具体可以通过
git log --pretty=oneline --graph 这个命令查看,如果一致不用调整,如果不一致那么就git reset --hard origin/分支 来使本地分支指向远程的分支版本就可以一致了 如果中间有需要拾取的记住commit号 可以在reset之后通过 git cherry-pick 你的commit号来拾取有用的提交
git cherry-pick commit 可以仅仅拾取某一个提交 不会有影响

git rebase是对分支的合并 和merge不一样 是 他会暂存自己的差异提交 然后把commit放到 要合并的分支的后面 然后就没有树上面的分支的概念了就变成一条链路,也可以做多次commit合并让历史版本更清晰

git revert 对指定的版本产生一个反向的新的版本然后与当前版本进行合并的出来的新的版本就是去掉那个指定会滚的版本 如果好多都不要可以 reset 这样后面的commit都不要了

相关文章

网友评论

      本文标题:git

      本文链接:https://www.haomeiwen.com/subject/nyhirdtx.html