git使用
git使用集合
删除本地commit
git reset --soft HEAD~1
git reset --hard HEAD~1
soft和hard的区别为,soft会将撤销的commit修改放在暂存区中,hard则不会保留
查看git操作记录
git reflog
gridea的机制是不保留commit,会强制覆盖整个仓库,
我之前不了解这个机制,导致本地和云端的笔记都被强制覆盖成初始状态了
最终靠relog
找到了最开始clone下来时的commit,才找回了之前的笔记
重命名远程分支
先本地将分支修改为目标名字, 推送目标分支到远端,再删除远端分支
示例,将dev修改为develop
git checkout dev
git pull origin dev
git checkout master
git branch -m dev devlope
git push origin develop
git push origin --delete develop
git 取消之前的commit --amend
如果只amend了一次,则直接reset即可
git reset HEAD~1
如果amend了多次,则先使用relog查看需要撤销多少次操作,再使用reset撤销
git reflog
git reset HEAD~2
默认是soft模式,即把修改返回到暂存区
也可以使用hard,直接丢弃修改代码
git reset --hard HEAD~1
git合并多个历史commit
# 合并历史两个提交
git rebase -i HEAD~2
弹出以下修改界面,按照提示选择前面关键字为s
或者d
等即可
pick f0b7d8sdf 历史提交1
pick f7c223889 历史提交2
修改为, 即表示将历史提交2压缩至历史提交1中
pick f0b7d8sdf 历史提交1
s f7c223889 历史提交2
远程分支查看
官方详细文档git remote branchs
注意在本地仓库中,远程分支有git进行管理,不能直接修改,仅能查看
即如果你只想查看远程仓库中的某个分支的代码时,使用下面代码即可切换到对应的远程分支进行查看
git fetch # 将远程分支同步为最新
git checkout origin/branchName
warring提示
warning: LF will be replaced by CRLF
问题是由于windows,linux,macos三种系统的文件换行符不一致
windows多数编辑器会使用lf的换行,所以为了支持跨平台的情况,git在提交的时候会自动将LF换行符替换为CRLF
配置下列命令来显示支持自动转换
git config --global core.autocrlf true