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 rebasegit 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~2git 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/foogit pull origin bar~1:bugFix相当于:git fetch origin bar~1:bugFix; git merge bugFix
git学习记录
http://example.com/2023/11/04/git学习记录/