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
就是指选择跳到第几个parentgit checkout branchName~2
使得HEAD指向branchName
的前2个分支,如果没有后面的数字就是默认1git 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进行rebasegit 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
的合集,它会获取远程更新并对其进行rebasegit push
实际上会merge本地拷贝的origin/xxxx
分支然后再提交git checkout -b foo origin/main
可以把foo
和远程分支origin/main
绑定起来git branch -u o/main foo
使得foo分支直接绑定远程分支main,如果当前分支就是foo,就可省略foogit 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学习记录/