git的常见用法
暂存区
暂存区暂时存储相关文件
git add .将所有文件放入暂存区,若不需要所有文件放入就将.改为文件名git add --all将工作区中的所有变化都添加到暂存区,包括删除git restore --staged <file>将指定文件从暂存区撤回到工作区,但本地的文件不会改变git reset HEAD <file>和上个同理git restore <file>将指定文件还原到暂存区的状态git checkout -- <file>和上个同理git status查看暂存区状态git diff --stagedgit diff --cached比较暂存区和本地库中最新提交的差异
本地库
本地库保存了项目的所有提交历史
git commit提交暂存区的文件,需要写提交说明git commit -a提交前会自动执行一步git add -u,即添加所有已跟踪文件的修改和删除git commit --amend修改最近一次提交的说明信息,或者将当前暂存区的更改追加到上一次提交中git log查看详细的提交历史--oneline以单行模式查看--graph以拓补图的形式查看show <commit-id>查看某一次提交的详细信息
git reset回退到指定提交--soft <commit-id>保留更改作为已暂存状态,工作区保存更改--mixed <commit-id>默认模式,暂存区重置,工作区保留更改--hard <commit-id>丢弃所有更改
远程库
远程库一般在 GitHub、gitee 等网站上
git clone克隆项目到当前目录git remote add origin <url>为远程库添加一个名字为 origin 的别名git remote -v查看已配置的远程库别名和对应的 urlgit remote show origin查看远程库 origin 的详细信息git fetch origin从远程库下载所有最新的链接,但还不会合并到当前的工作分支,也不会修改工作区git pull相当于git fetch+git merge下载数据并进行合并git pull --rebase相当于gti fetch+git rebase,使提交历史更加简洁,避免不必要的合并提交git push向远程库提交代码git push -u提交的同时建立上游关联,这样下次只需要打git push就可以了,不需要指定名字git push --force-with-lease强制提交。只有在自己的本地远程跟踪分支是最新的情况下才能覆盖git push -f强制提交
分支
git branch列出所有本地分支-v查看本地分支和其最新提交信息-vv查看本地分支及其跟踪的远程分支关系-r列出所有远程跟踪分支-a列出所有本地和远程分支<branch name>基于当前提交创建新分支<branch name> <commit-id>基于特定提交创建新分支<branch name> <tag name>基于标签创建新分支--merged查看已合并到当前分支的分支列表--no-merged查看未合并到当前分支的分支列表--merged | grep -v "\*" | xargs git branch -d批量删除已合并分支,但保留当前分支-m重命名当前分支
git checkout创建或切换分支<branch name>切换到新分支-b <branch name>创建并切换到新分支-切换到上一分支-d <branch name>安全删除,只在分支已合并时允许-D <branch name>强制删除
git merge将指定分支合并到当前分支--no-diff禁用快进合并,总是创建合并提交--squash将多个提交压缩成一个,然后提交--continue解决冲突后继续合并--abort中止合并,回到合并前的状态
git rebase将当前分支变基到指定分支--interactive <commit-id>交互式变基,可以编辑、合并、重排提交--abort中止变基操作--continue解决冲突后继续变基
git push origin --delete <branch name>删除远程分支git diff <branch name 1>..<branch name 2>比较两个分支的差异git diff <branch name 1>...<branch name 2>比较两个分支从共同祖先开始的差异git log <branch name 1>..<branch name 2>查看分支2有但分支1没有的提交gti log --oneline --graph --all图形化显示所有分支历史
要修改历史中的某次提交(比如倒数第三次提交)中的 README 文件
1 | |
git的常见用法
https://ivanclf.github.io/2024/05/15/git-use/