文章整理自哔哩哔哩:
一小时Git教程
01 版本简介
查看git 版本
git -v
优化配置
posh -Git
02 初始化配置
git config --global credential.helper store
是一个 Git 命令,用于配置 Git 存储凭据的方式。
03 新建仓库
Repository简称Repo
创建仓库两种方式:
git init 和 git clone
04 工作区域和文本状态
05 添加和提交文件
git add *.txt
git log --oneline //简洁提交记录
git reset 回退版本
07 使用git diff查看差异
git diff 查看工作区和暂存区之间的差异
git diff HEAD 查看工作区和版本库之间的差异
git diff --cached 查看暂存区和版本库之间的差异
git diff 哈希值1 哈希值2 查看两个版本之间的差异
git ls-files 查看暂存区的内容
08 使用git rm删除文件
09 .gitignore忽略文件
匹配规则:
10 注册gitHub账号
11 .SSH配置和克隆仓库
https和ssh区别
HTTPS开头的这种方式在我们把本地代码push到远程仓库时,需要验证用户名和密码
SSH不需要验证用户名和密码,但需要在GitHub上添加SSH公匙的配置
查找本地是否有.sh目录
ll -d ~/.sh
列出当前用户主目录下的 .ssh 目录的详细信息
-d
选项告诉 ll 命令仅列出目录本身
切换到.sh目录/生成公匙
`ssh-keygen` 是一个用于生成新的SSH密钥对的工具。SSH(Secure Shell)是一种加密网络协议,用于安全地访问远程计算机。以下是 `ssh-keygen` 命令的一些参数解释:
- `-t`:指定密钥类型。在这个例子中,`-t rsa` 表示生成的密钥类型是RSA。
- `-b`:指定密钥的位数。`-b 4096` 表示生成的密钥将具有4096位的长度。
当你执行 `ssh-keygen -t rsa -b 4096` 命令时,系统将引导你完成以下步骤:
1. **选择密钥保存的位置**:系统会询问你想要将密钥保存在哪个文件中。如果你没有指定文件名,它默认会保存在 `~/.ssh/id_rsa`。
2. **输入密码短语**:系统会询问你是否要为这个密钥设置密码短语。密码短语提供了额外的安全层,每次使用密钥时都需要输入这个密码短语。
3. **确认密码短语**:如果你设置了密码短语,系统会要求你再次输入以确认。
4. **生成密钥**:系统将生成一对密钥,包括私钥和公钥。私钥是保密的,不应该分享给任何人。公钥可以安全地分享给需要你安全访问的服务器。
生成的密钥对可以用于SSH无密码登录,通过将公钥添加到远程服务器的 ~/.ssh/authorized_keys
文件中,你可以实现无密码登录到该服务器。4096位的RSA密钥提供了比默认的2048位更强的安全性。
上一步操作如果生成指定目录,需要使用tall -5 config
查看生成的配置文件,如果没有配置文件,创建文件并将下面五行命令添加到文件中。
#github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github
11 关联本地仓库和远程仓库
//push an existing repository from the command line
git remote add origin git@github.com:cuinibox/test_repo.git
git branch -M main //-M表示move/rename可以修改分支的名字
git push -u origin main
//create a new repository on the command line
echo "# test_repo" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:cuinibox/test_repo.git
git push -u origin main:main //-u 表示upstream <远程仓库名> <远程分支名>:<本地分支名>
git remote -v
//显示 Git 仓库配置的远程仓库列表以及它们的 URL
13 Gitee的使用和GitLab本地化部署
- gitlab私有化部署
14 GUI工具
15 在VSCode中使用Git工具
git中起启用vscode code .
16 分支简介和基本操作
git版本在v2.23版本新增git switch
切换版本
16.1合并举例
把dev分支合并到main分支:
1、git switch main //切换到main分支
2、git merge dev //dev将要合并的分支
16.2查看分支图
1、git log --graph --oneline --decorate --all//查看分支图
16.3 删除分支
git branch -d dev // -d参数表示已经完成合并的分支
git branch -D dev // -D参数表示强制删除分支
17 解决合并冲突
18 回退和rebase
18.1 Merge操作
18.2 rebase操作
18.3 alias操作
在计算机编程和命令行界面中,alias
是一个用于创建命令别名的机制,这样你可以给一个较长的命令或者一系列命令组合指定一个简短的名字。这可以提高效率,特别是对于那些经常使用的复杂命令。
在不同的 shell 和操作系统中,alias
的用法可能会有所不同,但基本概念是一致的。以下是一些常见的 alias
用法示例:
-
创建别名:
在 Bash 或 Zsh shell 中,你可以使用alias
命令来创建别名:alias ll='ls -l'
这将创建一个名为
ll
的别名,当你在终端输入ll
时,实际上会执行ls -l
命令。 -
查看所有别名:
要查看当前所有的别名,可以使用:alias
-
持久化别名:
别名在 shell 会话中是临时的,当你关闭终端或注销时,别名会失效。要使别名持久化,你需要将别名命令添加到你的 shell 配置文件中,如.bashrc
或.zshrc
:echo "alias ll='ls -l'" >> ~/.bashrc
然后,你需要重新加载配置文件,或者重新启动终端。
-
删除别名:
如果你想要删除一个别名,可以使用unalias
命令:unalias ll
-
使用别名执行多个命令:
别名也可以用于执行多个命令。例如,创建一个别名来清空临时文件夹并列出其内容:alias cleanup='rm -rf /tmp/*; ls /tmp'
-
使用别名传递参数:
别名可以接受参数,就像普通命令一样:alias grep='grep --color=auto' grep "pattern"
-
别名的优先级:
在某些情况下,别名的优先级可能低于某些命令选项或脚本中的命令。例如,如果你创建了一个别名ls='ls -l'
,但是直接运行ls -l
时,-l
选项会覆盖别名定义的-l
。
请注意,别名是 shell 特定的功能,不是所有命令行界面都支持。在使用别名时,要考虑到它们可能不会在所有环境中有效,特别是在脚本中或者当使用不支持别名的 shell 时。
18.4 回退操作
git rebase
回退操作
18.5 rebase和merge有什么区别该如何区别使用?
18.5.1 merge
优点:不会破坏原分支的提交历史,方便回溯和查看
缺点:会产生额外的提交节点,分支图比较复杂
18.5.2 rebase
优点:不会新增额外的提交记录,形成线性历史,比较直观和干净;
缺点:会改变提交历史,改变了当前分支branch out的节点。避免在共享分支使用。