这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记
rebase使用场景及和merge的区别与下面链接在自己的分支feature上开发了一段时间了,准备从主干master上拉一下最新改动这个场景的解决方法有区别
解决方案在评论区
包含4篇关于git使用的blog
mkdir demo
cd demo
git init
tree ./git (liunx和windows需要安装)
cat .git/HEAD
git remote add origin git@github.com:git/git.git //添加远程库的push和fetch源
git remote set-url --add --push origin git@github.com:my_repo/git.git //同一个origin设置不同的push和fetch URL
cat .git/config
git config --global url.git@github.com:.insteadOf github.com/ //更换ssh
git config --global alias.cin "commit --amend --no-edit" //git命令别名配置
touch readme.md
git status
git add .
git status
git commit -m "add redme" //添加commit是添加的message
tree .git
git cat-file -p 上面命令显示的objects的子文件(需要添加子文件夹所有路径,中间没有间隔符号) //查看信息
/*
object:commit,tree,blob tag
commit:存储提交信息,一个Commit可以对应唯一版本的代码
Tree:存储文件的目录信息
Blob:存储文件的内容
*/
cat .git/refs/heads/master
git tag v0.0.1
tree .git
//创建附注标签
git tag -a v0.02 -m "add feature 1"
//访问历史版本
git log
git cat-file -p
//修改历史版本
commit --amend //修改最近一次的commit 信息,修改之后id改变 ,导致本地commit 和远程commit历史不一样
rebase //通过 git rebase -i HEAD~3 可以实现对最近三个commit的修改:
合并commit 修改具体的commit message 删除某个commit
filter --branch 该命令可以指定删除所有提交中的某个文件或者全局修改邮箱地址等操作
git fsck --lost-found //查看悬空的object
git reflog expire --expire=now --all //reflog用于记录操作日志,防止误操作后数据丢失,通过reflog来找到丢失的数据,手动将日志设置为过期
git gc prune=now //指定是修剪多久之前的对象 ,默认两周前
感想:有些操作慎用