目录
1.初始化
git config --global user.name "Your name"
git config --global user.email "[email protected]"
git config --global credential.helper store //配置 Git 以明文形式存储你的凭据
2.创建仓库
创建一个新的本地仓库(省略project-name则在当前目录创建)
git init <project-name>
下载一个远程仓库
git clone <url>
3.添加和提交
添加指定文件到暂存区
注意:<file-name>可以填写文件的路径,路径是以终端为起始的相对路径
git add <file-name>
将当前目录及其所有子目录中的所有更改添加到暂存区
git add .
将暂存区中的所有的文件提交到本地仓库并附带提交信息
在本地仓库中相当于保存了一份快照
git commit -m "message"
将所有已跟踪文件的更改暂存并提交,同时附带提交信息
git commit -am "message"
4.查看
查看文件在当前工作目录和暂存区中的状态
末尾的-s表示简略模式,不加则是详细模式
git status -s
查看暂存区中的文件列表
git ls-files
查看提交历史记录
末尾的-oneline表示简略模式,不加则是详细模式
git log --oneline
查看未暂存更改的文件更新了哪些部分
git diff
查看两个提交之间的差异
git diff <commit-id> <commit-id>
5.分支
查看所有本地分支,当前分支前面会有一个星号*,-r查看远程分支,-a查看所有分支
git branch
创建一个分支
git branch <branch-name>
切换到指定分支,并更新工作区和暂存区(以下两个命令都可以)
git checkout <branch-name>
git switch <branch-name>
创建并切换到分支(以下两个命令都可以)
git checkout -b <new-branch-name>
git switch -c <new-branch-name>
删除一个已经合并的分支
git branch -d <branch-name>
强制删除一个分支 ,不管是否合并
git branch -D <branch-name>
将目标分支合并到当前分支,-ff是默认选项
--no-ff参数表示禁用Fast forward模式,始终创建一个合并提交,能看出曾经做过合并;
而--ff参数表示使用Fast forward模式,尽可能将合并解决为快进(仅更新分支指针以匹配合并的分支;不创建合并提交)。当无法快进时,创建一个合并提交;
git merge --ff -m "message" <branch-name>
git merge --no-ff -m "message" <branch-name>
将一个分支的更改重新应用到另一个基准提交上。这可以帮助你保持提交历史的线性和整洁,避免不必要的合并提交
git rebase <base>
6.撤销和恢复
删除工作目录和暂存区中的指定文件
git rm <file-name>
删除暂存区中的文件
git rm --cached <file-name>
将暂存区中的文件恢复到工作区中,参数为.则恢复所有文件
git restore <file-name>
将版本库中的文件恢复到工作区和暂存区,相当于切换快照
--soft模式保留暂存区和工作区原本的内容
--hard模式不保留暂存区和工作区原本的内容(覆盖)
--mixed模式不保留暂存区,保留工作区(默认)
切换的流程:先覆盖到暂存区,再用暂存区对比覆盖工作区
git reset --mixed <commit-id>
7.远程仓库
添加远程仓库,第一个参数为远程仓库的别名,第二个为仓库链接
git remote add <remote-name> <remote-url>
查看所有的远程仓库
git remote -v
删除远程仓库
git remote rm <remote-name>
重命名远程分支
git remote rename <old-name> <new-name>
从远程仓库拉取代码,默认拉取远程仓库名 origin 的 master 或者 main 分支
git pull <remote-name> <remote-branch-name:local-branch-name>
推送代码到远程仓库
git push <remote-name> <local-branch-name:remote-branch-name>
将本地改动的代码rebase到远程仓库的最新代码上(为了有个一个干净、线性的提交历史)
git pull --rebase
获取远程仓库的最新更改
git fetch <remote-name>