文章目录
- 仓库的创建
- 一、配置操作
- 二、本地操作
- 2.1 查看变更情况
- 2.2 添加当前目录及其子目录为提交内容
- 2.3 添加工作区下所有新增文件为提交内容
- 2.4 将指定文件添加到git控制
- 2.5 比较工作区和暂存区的所有差异
- 2.6 比较暂存区和HEAD的所有差异
- 2.7 比较某文件工作区和HEAD的差异
- 2.8 创建commit
- 2.9 将工作区指定文件恢复成和暂存区一致
- 2.10 将暂存区指定文件恢复为和Head一致
- 2.11 将暂存区和工作区所有文件恢复成和HEAD一样
- 2.12 用 difftool 比较任意两个 commit 的差异
- 2.13 查看哪些文件没被 Git 管控
- 2.14 将未处理完的变更先保存到 stash 中
- 2.15 临时任务处理完后继续之前的工作
- 2.16 查看所有 stash
- 2.17 取回某次 stash 的变更
- 2.18 修改最后一次 commit
- 三、分支操作
- 3.1 查看当前工作分支及本地分支
- 3.2 查看本地和远端分支
- 3.3 查看远端分支
- 3.4 切换到指定分支
- 3.5 基于当前分支创建新分支
- 3.6 基于指定分支创建新分支
- 3.6 基于某个 commit 创建分支
- 3.7 创建并切换到该分支
- 3.8 安全删除本地某分支
- 3.9 强行删除本地某分支
- 3.10 删除已合并到 master 分支的所有本地分支
- 3.11 删除远端 origin 已不存在的所有本地分支
- 3.12将 A 分支合入到当前分支中且为 merge 创建 commit
- 3.13 将 A 分支合入到 B 分支中且为 merge 创建 commit
- 3.14 将当前分支基于 B 分支做 rebase,以便将B分支合入到当前分支
- 3.15 将 A 分支基于 B 分支做 rebase,以便将 B 分支合入到 A 分支
- 3.16 IDEA分支操作理解
- 四、变更历史
- 五、标签操作
- 六、远端交互
- 七、ssh秘钥
仓库的创建
在电脑的任意位置创建一个空目录,进入后通过点击右键打开Git bash窗口,然后执行git init后,它就可以作为我们的本地Git仓库
当然也有UI版本
当然用IDEA我们也可以直接使用
一、配置操作
1.1 全局配置
如果不加名字、邮箱,就是读取当前的名字和邮箱
git config --global user.name '名字'
git config --global user.email '邮箱'
1.2 当前仓库配置
同理在当前仓库可以达到一样的效果
git config --local user.name '名字'
git config --local user.email '邮箱'
1.3 查看全局配置
git config --global --list
1.4 查看当前仓库配置
git config --local --list
1.5 删除全局配置
git config --unset --global 要删除的配置项
1.6 删除当前仓库配置
git config --unset --local 要删除的配置项
二、本地操作
2.1 查看变更情况
git status
也是IDEA的这里
2.2 添加当前目录及其子目录为提交内容
当然,.就代表当前路径,也可以写其他路径
git add .
当然提交的时候,你也可以在这里打勾
2.3 添加工作区下所有新增文件为提交内容
git add -A
2.4 将指定文件添加到git控制
git add 文件1 文件2 文件3
2.5 比较工作区和暂存区的所有差异
git diff
也就是这样
IDEA中
2.6 比较暂存区和HEAD的所有差异
HEAD指的就是.git/HEAD文件,它存储着当前working directory所处的某次commit
git diff --cached
2.7 比较某文件工作区和HEAD的差异
git diff HEAD
2.8 创建commit
git commit
2.9 将工作区指定文件恢复成和暂存区一致
git checkout 文件1 文件2 文件3
2.10 将暂存区指定文件恢复为和Head一致
git reset 文件1 文件2 文件3
2.11 将暂存区和工作区所有文件恢复成和HEAD一样
git reset --hard
IDEA中在这里可以找到
2.12 用 difftool 比较任意两个 commit 的差异
git difftool 提交1 提交2
也就是IDEA下的这里选择比较即可
2.13 查看哪些文件没被 Git 管控
git ls-files --others
2.14 将未处理完的变更先保存到 stash 中
git stash
也就是下面的 uncommitted changes(stash 加入,unstash移出)
对单个/多个则选中后右键找到类似的内容即可
暂存区非常好用,在写一个需求时,如果这时有一个漏洞需要立即修复,你可以将当前未完成的部分先放到暂存区
2.15 临时任务处理完后继续之前的工作
pop 不保留 stash
apply 保留 stash
git stash pop
git stash apply
在IDEA中点击unstash里面会有该选择
2.16 查看所有 stash
git stash list
2.17 取回某次 stash 的变更
git stash pop stash@{数字n}
2.18 修改最后一次 commit
比如,发现有文件传漏了,就可以这么做,本次提交将和上一次提交合并
选中修改
git add.
git commit --amend
三、分支操作
基本就是IDEA的这里
3.1 查看当前工作分支及本地分支
git branch -v
3.2 查看本地和远端分支
git branch -av
3.3 查看远端分支
git branch -rv
3.4 切换到指定分支
git checkout 指定分支
3.5 基于当前分支创建新分支
git branch 新分支
3.6 基于指定分支创建新分支
git branch 新分支 指定分支
3.6 基于某个 commit 创建分支
git branch 新分支 某个 commit 的 id
3.7 创建并切换到该分支
git checkout -b 新分支
3.8 安全删除本地某分支
git branch -d 要删除的分支
3.9 强行删除本地某分支
git branch -D 要删除的分支
3.10 删除已合并到 master 分支的所有本地分支
git git branch --merged master | grep -v '^\*\| master' | xargs -n 1 git branch -d
3.11 删除远端 origin 已不存在的所有本地分支
git remote prune orign
3.12将 A 分支合入到当前分支中且为 merge 创建 commit
git merge A分支
3.13 将 A 分支合入到 B 分支中且为 merge 创建 commit
git merge A分支 B分支
3.14 将当前分支基于 B 分支做 rebase,以便将B分支合入到当前分支
git rebase B分支
3.15 将 A 分支基于 B 分支做 rebase,以便将 B 分支合入到 A 分支
git rebase B分支 A分支
3.16 IDEA分支操作理解
Checkout : 切换至该分支。
Checkout As… : 使用这个分支创建新的分支并切换到新分支。
Compare With… : 使用当前分支与所选分支做代码提交比较。
Rebase Current onto Selected: 将所选分支提交加入到当前分支
Checkout with Rebase : 将当前分支提交加入到所选分支
Merge into Current: 将所选分支合并到当前分支
Rname:修改所选分支名称
Delete :删除所选分支
四、变更历史
4.1 当前分支各个 commit 用一行显示
git log --oneline
4.2 显示就近的 n 个 commit
git log -n
4.3 用图示显示所有分支的历史
git log --oneline --graph --all
4.4 查看涉及到某文件变更的所有 commit
git log 文件
4.5 某文件各行最后修改对应的 commit 以及作者
git blame 文件
五、标签操作
也就是IDEA中的这个位置
5.1 查看已有标签
git tag
5.2 新建标签
git tag v1.0
5.3 新建带备注标签
git tag -a v1.0 -m ‘第一期提测’
5.4 给指定的 commit 打标签
git tag v1.0 commitid
5.5 推送一个本地标签
git push origin v1.0
5.6 推送全部未推送过的本地标签
git push origin --tags
5.7 删除一个本地标签
git tag -d v1.0
5.8 删除一个远端标签
git push origin :refs/tags/v1.0
六、远端交互
6.1 查看所有远端仓库
git remote -v
6.2 添加远端仓库
git remote add url
6.3 删除远端仓库
git remote remove remote的名称
6.4 重命名远端仓库
git remote rename 旧名称 新名称
6.5 将远端所有分支和标签的变更都拉到本地
git fetch remote
6.6 把远端分支的变更拉到本地,且 merge 到本地分支
git pull origin 分支名
6.7 将本地分支 push 到远端
git push origin 分支名
6.8 删除远端分支
git push remote --delete 远端分支名
git push remote :远端分支名
七、ssh秘钥
7.1 ssh 秘钥生成与基本使用
ssh-keygen -t rsa -C "邮箱"
依据给出的地址可以找打秘钥位置
也可以通过如下命令查看
ls -al ~/.ssh
或者通过以下命令展现公钥
cat ~/.ssh/id_rsa.pub
以gitee为例,将公钥放入如下区域
安全设置->SSH
放入后即可使用,克隆时使用ssh网址即可。
7.2 config 多 ssh配置
创建一个config即可
通过如下命令指定保存使用的文件名称,区分不同git ssh
ssh-keygen -t rsa -C "邮箱" -f ~/.ssh/文件名称
使用如下命令,指定使用的公钥
- host:指定远程主机网址
- PreferredAuthentications:指定使用方式
- IdentityFile:指定使用文件
# gitee
Host gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
# github
Host github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
7.2.1 多个ssh可用时指定使用
Host ssh.dev.azure.com
IdentityFile ~/.ssh/id_rsa_azure
IdentitiesOnly yes
IdentitiesOnly yes 设置可确保 SSH 不会使用任何其他可用标识进行身份验证。如果有多个标识可用,可以加上这个。
7.2.2 同地址使用不同ssh
Host devops_fabrikam
HostName ssh.dev.azure.com
IdentityFile ~/.ssh/private_key_for_fabrikam
IdentitiesOnly yes
Host devops_contoso
HostName ssh.dev.azure.com
IdentityFile ~/.ssh/private_key_for_contoso
IdentitiesOnly yes
使用如下地址时:
git@ssh.dev.azure.com:v3/Fabrikam/Project1/fab_repo
就需要替换为
git@devops_fabrikam:v3/Fabrikam/Project1/fab_repo
或者
git@devops_contoso:v3/Fabrikam/Project1/fab_repo
这时候就可以使用我们指定的秘钥了
7.2.3 加密策略请求
根据TFS文档
某些 Linux 发行版(例如 Fedora Linux)的加密策略需要比 Azure DevOps 支持的更强大的 SSH 签名算法(截至 2021 年 1 月)。 有一个开放功能请求可用于添加此支持。
我们可以使用类似 主机地址 + PubkeyAcceptedKeyTypes的方式添加支持。
Host ssh.dev.azure.com vs-ssh.visualstudio.com
PubkeyAcceptedKeyTypes +ssh-rsa
7.2.4 安全策略降级
根据TFS文档
可以使用如下方式,对于禁用的算法方式进行解禁。
Host ssh.dev.azure.com vs-ssh.visualstudio.com
HostkeyAlgorithms +ssh-rsa