Git 版本控制的简单使用记录
持续记录自己常用Git
的一些习惯
__ __ _______ __ __ ______ _______ __ .___________.
| | | | | ____|| | | | / __ \ / _____|| | | |
| |__| | | |__ | | | | | | | | | | __ | | `---| |----`
| __ | | __| | | | | | | | | | | |_ | | | | |
| | | | | |____ | `----.| `----.| `--' | | |__| | | | | |
|__| |__| |_______||_______||_______| \______/ \______| |__| |__|
一、Git基础配置
[Git - Book]引用👇
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 在本书所展示的例子中,我们对保存着软件源代码的文件作版本控制,但实际上,你可以对任何类型的文件进行版本控制。
1.1 学习地址链接
1.2 配置个人账号
以下命令使用的 Git bash 执行
1.2.1 基础配置信息
# 列出本地配置信息
$ git config --list --global
# 清除之前的全局配置 (第一次使用请忽略)
git config --global --unset user.name
git config --global --unset user.email
1.2.2 配置远程仓库SSH Key
🚩 先注册好GitHub 或者 Gitee 个人账号
- 配 SSH Key
怎样生成公钥、添加SSH公钥?
https://gitee.com/help/articles/4181
Connecting to GitHub with SSH - GitHub Docs
最后,配置全局用户即可,完成!
git config --global user.username "your_name"
git config --global user.email "your_email"
1.2.3 配置远程多个仓库(实际并没有用...虽然再 bash 上起作用了,但是其它工具上不行,比如 idea 无法clone。 再重新查找资料后再更新)
以下是多个仓库的配置:没有找到啥优雅的切换方式,当前方法:配置两个sshkey, 然后对应仓库配置 local 本地用户
- 配置 GitHub 和 Gitee 仓库
ssh-keygen -t ed25519 -C "your_email@example.com"
# 指定存储路径和文件名 一般使用默认C盘路径即可,我这里是不放在C盘
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\aj/.ssh/id_ed25519):
D:/.ssh/id_ed25519_gitee
$ ls
id_ed25519_gitee id_ed25519_github
id_ed25519_gitee.pub id_ed25519_github.pub
默认只读取id_rsa,为了让ssh识别新的私钥,需将其添加到ssh-agent中。
# ssh-agent运行 可使用如下命令,显示 pid 可看到进程
$ eval "$(ssh-agent -s)"
Agent pid 520
# 开始将其添加到SSH代理
$ ssh-add /d/.ssh/id_ed25519_github
Identity added: /d/.ssh/id_ed25519_github
$ ssh-add /d/.ssh/id_ed25519_gitee
Identity added: /d/.ssh/id_ed25519_gitee
- 将ssh key 分别配置到的GitHub 和 Gitee 地址上
# 测试连接
$ ssh -T git@github.com
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
# 得到一堆提示:无法确定这个host 'github.com (20.205.243.166)'的真实性 直接输入 yes
# key fingerprints 的说明如下:
# https://docs.github.com/en/enterprise-cloud@latest/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Hi andreamwu! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T git@gitee.com
Hi andreamwu! You've successfully authenticated, but GITEE.COM does not provide shell access.
最后会在默认的.ssh 文件夹(即 C:\Users{你的电脑用户名}/.ssh)下生成known_hosts
文件,记录了gitee.com
github.com
的信息
1.2.4 拉取远程仓库项目,配置 local 用户
- Gitee
$ git clone git@gitee.com:andreamwu/hello-git.git
Cloning into 'hello-git'...
remote: Enumerating objects: 15, done.
remote: Total 15 (delta 0), reused 0 (delta 0), pack-reused 15
Receiving objects: 100% (15/15), done.
Resolving deltas: 100% (2/2), done.
$ cd hello-git/
$ git branch -v
* master d8d3441 Test push to Gitee
$ git pull --rebase
Updating 7efcd88..d8d3441
Fast-forward
README.md | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
$ ls
README.md
# 编辑一下,测试提交
$ vi README.md
# 编辑完成测试提交
$ git commit -a -m "update README.md"
Author identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address
# 这就配置局部仓库用户就可以了
git config --local user.email "you@example.com"
git config --local user.name "Your Name"
# 配置完成再提交一次验证结果
$ git commit -a -m ":v: update README.md"
[master cb9bd83] :v: update README.md
1 file changed, 3 insertions(+), 1 deletion(-)
$ git push origin master
查看push 结果 👇
- GitHub
$ git clone git@github.com:andreamwu/my-notes.git
$ cd my-notes/
$ git pull --rebase
Already up to date.
$ ls
Git仓库的使用记录.md README.md
$ vi README.md
$ git commit -a -m "update README.md"
Author identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address
# 配置局部仓库用户完成,继续提交验证
git config --local user.email "you@example.com"
git config --local user.name "Your Name"
$ git commit -a -m ":heavy_check_mark: update README.md"
[master c435ee6] :heavy_check_mark: update README.md
1 file changed, 3 insertions(+)
$ git push origin master
查看push 结果 👇
二、常用命令
2.1 查看提交日志
- 使用格式占位符的形式
# %h 提交对象的简短哈希字串
# %cn 提交者(committer)的名字
# %cr 提交日期,按多久以前的方式显示
# %s 提交说明
$ git log -3 --pretty=format:" %h %cn [%cr] %s "
9ac31a6 andreamwu [20 minutes ago] 修该pom版本管理依赖
a1263a9 andreamwu [5 days ago] 初次上传
d5e80fe Gitee [5 days ago] Initial commit
- 将每个commit压缩成一行
$ git log -3 --oneline
9ac31a6 (HEAD -> master, origin/master, origin/HEAD) 修该pom版本管理依赖
a1263a9 初次上传
d5e80fe Initial commit