【git】那些事儿

431 阅读1分钟

分离HEAD

分离HEAD是让HEAD指向某个提交记录

git  checkout commitId
cat .git/HEAD   // 查看HEAD指向

git switch -c  分支名 // 切一个分支
git switch -  // 放弃

image.png

相对引用与绝对引用

  • 相对引用
git checkout main^1 

git checkout HEAD^1

git checkout HEAD~1

  • 直接引用
git checkout commitId

git branch -f

git branch -f 分支名(如:main,ps不知道有啥作用) ,强制让main分支拥有某个commitId的记录

git branch -f main HEAD~3

git branch -f main commitId

git revert 与 git reset

git reset HEAD^  // 不会产生记录

image.png

git revert HEAD^  // 会产生记录

git cherry-pick

git cherry-pick c1 c2 
// 将某个c1 c2 添加到HEAD下面

git commit --amend

通常在git rebase -i 修改某个msg使用

git tag

git v0 C1  //  为指定commit打tag

git tag v0   // 查看某个tag的详情

git tag -l   // 查看本地所有的tag

git pull

git pull 是 git fetch 与 git merge的组合

git pull --rebase

git merge 与git rebase

git rebase // 可以让你的提交树变得很干净

git merge

其他情况

  • 设置远程跟踪(远程分支必须存在)
//  第1种,切出一个relase分支,让他跟远程的release关联
git checkout -b release origin/release


//  第2种,让本地foo的分支,和远程main分支关联
git branch -u origin/main foo

  • git pull、git fetch、git push 设置来源与去向

格式为:git push origin source:destination(git fetch与git pull也是如此)

git push origin foo^:main

// 将本地的foo分支的最近一次commit推送到main分支上去

git push origin foo:main
// 将本地的foo分支的最近一次commit推送到main分支上去

git fetch origin main~1:bar(git pull也可以)
//  从远程的main分支最近一次commit,拉取本地的bar分支

learngitbranching

小技巧

设置git的忽略大小写的配置为false

git config core.ignorecase false