git学习记录
网站学习链接:https://learngitbranching.js.org/?locale=zh_CN
经验贴:https://zhuanlan.zhihu.com/p/383960650
- git brach -b <branchName>新建一个- branchName分支,并切换到那个分支
- git checkout branchName^使得HEAD指向- branchName的前一个分支,有几个- ^就代表前移几个,如果- branchName有多个parent,那么- ^num就是指选择跳到第几个parent
- git checkout branchName~2使得HEAD指向- branchName的前2个分支,如果没有后面的数字就是默认1
- git checkout HEAD~^2~2,- git branch -f bugWork HEAD~^2^git的操作符还支持链式操作
- git revert用于撤销提交,生成一条新的提交来覆盖之前的修改,保留修改历史,语法:- git revert <commit>,其中,- <commit>是要撤销的提交的哈希值或引用
- git reset用于重置分支的指针,可以选择保留或丢弃之前的修改,改变提交历史,语法:- git reset <commit>,其中,- <commit>是要重置到的目标提交的哈希值或引用- -soft:重置分支的指针,但不改变工作区和暂存区的内容。之前的修改将被保留在暂存区中,你可以随时重新提交它们
- -mixed(默认选项):重置分支的指针,并清除暂存区的内容。之前的修改将保留在工作区中,但不会自动提交
- -hard:重置分支的指针,并清除暂存区和工作区的内容。之前的修改将完全丢失,慎用该选项
 
- 使用git reset会改变分支的提交历史。如果你在公共分支上使用git reset,并将其推送到远程仓库,可能会导致其他人的问题。因此,在公共分支上通常更推荐使用git revert
- git rebase <branch> <based_branch>可以指定将branch对based_branch进行rebase
- git cherry-pick commit1 commit2可以将两个commit放到HEAD后面,注意commit的顺序就是这里排列的顺序
- git rebase -i HEAD~4是一个 Git 命令,用于以交互方式进行历史提交的重新整理(rebase)。该命令允许你修改最近的 4 个提交,可以根据需要修改这些操作命令。常见的操作命令包括 “pick”(保留提交)、”edit”(修改提交)、”reword”(修改提交信息)、”squash”(合并提交)等
- git rebase
- git branch -f main caption用于将分支- main的指针强制移动到指定的提交- caption上
- git commit --amend是一个用于修改最近一次提交的Git命令
- git tag tagName commitName给c1提交赋上v0标签
- git push origin <tagname>将tag推送到远程
- git describe <commit>如果不指定- <commit>,则默认使用当前所在的提交。如果这个- <commit>有标签就输出相应的标签,如果没有就会去找最近的标签,生成一个描述,格式为- <tag>-<num>-g<hash>,其中- <tag>是最近的标签,- <num>是指定提交与最近标签之间的提交数,- <hash>是指定提交的简短哈希值
- git fetch会获取远程厂库的所有分支的所有提交记录,并把- orgin/xxx指向对应的远程提交,但是它并不会更改本地的内容还有本地的分支
- git pull实际上是- git fetch和- git merge的合集,它会获取远程更新并与当前对应分支合并
- git pull --rebase是- git fetch和- git rebase的合集,它会获取远程更新并对其进行rebase
- git push实际上会merge本地拷贝的- origin/xxxx分支然后再提交
- git checkout -b foo origin/main可以把- foo和远程分支- origin/main绑定起来
- git branch -u o/main foo使得foo分支直接绑定远程分支main,如果当前分支就是foo,就可省略foo
- git branch -m <old_branch_name> <new_branch_name>可以修改branch的名字
- git push origin main将本地- main分支的提交推送到远程仓库- origin的- main分支的命令
- git push origin <source>:<destination>将本地- <source>分支的提交推送到远程仓库- origin的- <destination>分支的命令。这样可以将本地的修改共享给其他协作者,并将本地分支映射到远程仓库的不同分支。- source既可以是- branch的名字也可以是某个指定的提交位置例如- HEAD~2
- git fetch origin <source>:<destination>将远程的厂库- origin的- source分支更新到本地- destination分支。注意- source也是既可以是分支名也可以是某个指定的提交位置。注意这样子的- o/xxxx分支不会进行变化
- git push origin :side会删除远程的side分支
- git fetch origin :bugFix会在本地创建一个bugFix分支
- git pull origin foo相当于:- git fetch origin foo; git merge o/foo
- git pull origin bar~1:bugFix相当于:- git fetch origin bar~1:bugFix; git merge bugFix
git学习记录
      http://example.com/2023/11/04/git学习记录/