Git入门教程
Git 是分布式的代码版本管理工具,提供了代码版本的对比、回溯功能。
介绍两个术语:
- 本地电脑:你手边用的电脑,通常是离你最近的电脑,例如笔记本电脑,台式机等。
- 远程电脑:通常是离你很远的电脑,例如:Linux服务器等。
1. Git工具
Linux/macOS自带git工具,不需要另外安装。windows上默认没有该git,需要手动安装:
可以从 https://git-scm.com/download/win 下载安装。
2. 配置ssh认证
由于git使用ssh连接进行本地仓库与远程仓库的数据传输,必须配置ssh的密钥登陆方式。
2.1. Linux/MacOS系统参考 ssh简明教程.md
2.2. windows系统
安装好git工具包后,就能在【开始】菜单/【桌面】上看到 图标 【git bash】,运行它便打开Git的命令行窗口,此命令行窗口可以执行有限的几个命令:ssh、vim、git。
2.2.1. 创建ssh密钥对(私钥与公钥)
!!! 此命令在windows上执行 !!!
1
ssh-keygen -t rsa -b 4096
执行此命令输出如下:
1
Generating public/private rsa key pair.
2
Enter file in which to save the key (/c/Users/Admin/.ssh/id_rsa): [回车]
3
Enter passphrase (empty for no passphrase): [回车] # 留空则无密码保护;如果输入文字作为key pair的保护密码。
4
Enter same passphrase again: [回车] # 如果设置密码,则重复一遍密码。
5
Your identification has been saved in /c/Users/Admin/.ssh/id_rsa. # 此行提示 私钥 保存的路径
6
Your public key has been saved in /c/Users/Admin/.ssh/id_rsa.pub. # 此行提示 公钥 保存的路径
7
The key fingerprint is:
8
SHA256:BIQZafmxmMQB3SmW4Tk1ySQhfHqCvaJptXcugWGRdyg admin@localhost.localdomain
9
The key's randomart image is:
10
+---[RSA 4096]----+
11
| .o+B/Bo |
12
| .E#**+ |
13
| o *B=.o. |
14
|. +o+.o. |
15
| .+o S |
16
|. .o . |
17
|.o. . . |
18
|o. . o . |
19
|. . +. |
20
+----[SHA256]-----+
2.2.2 修改ssh配置文件 ~/.ssh/config
!!! 此命令在windows上执行 !!!
假设,待登录的远程Linux系统(!!!需要换成实际的信息!!!):
- 名称:RemoteLinux(只允许字母、数字、下划线、连字符,服务器的昵称)
- IP地址: 192.168.1.100
- SSH端口:22(默认),或者其它端口
- 账户用户名:MyName
编辑文件 ~/.ssh/config 内容如下:
!!!用vim、windows自带的记事本、其它文本编辑软件均可,勿用office软件!!!
1
# Global Configure 全剧默认配置
2
Host *
3
ServerAliveInterval 1
4
ServerAliveCountMax 30
5
ForwardAgent no
6
ForwardX11 no
7
ForwardX11Trusted yes
8
GSSAPIAuthentication no
9
10
# ======================================
11
# My Remote Host
12
# ======================================
13
14
Host RemoteLinux
15
HostName 192.168.1.100
16
Port 22
17
User MyName
18
IdentityFile ~/.ssh/id_rsa # 刚刚创建的私钥文件
2.2.3 添加public key
a. 把 windows上创建的文件 ~/.ssh/id_rsa.pub 的内容复制到剪贴板;
b. 使用MobaXterm登陆Linux系统上的账户,编辑文件 ~/.ssh/authorized_keys,在文件末尾另起一行,粘贴剪贴板的内容。
2.2.4 测试
!!! 此命令在windows上执行 !!!
在git的窗口,执行如下命令:
1
ssh RemoteLinux
第一次登录,ssh会提示检查服务器的指纹是否正确,以来确保登录了正确的服务器。输入yes
然后回车,登录Linux。
1
The authenticity of host 'localhost (192.168.1.100)' can't be established.
2
ECDSA key fingerprint is SHA256:hJmlBX46//sd1559Eo2X+eiJ9YGcgig8eZJ5Y98PD0A.
3
Are you sure you want to continue connecting (yes/no/[fingerprint])? # 此处输入 yes
输入 [yes],然后按【Enter】。
若出现新的终端界面,则表示登录成功。
1
# 使用此命令,来检查该Linux系统的名称,以此来检查是否登录了正确的Linux系统。
2
hostname
3. 配置git仓库
git是分布式的仓库,通常相同一份代码,服务器保存一份,每台电脑保存一份。
假设:
- 本地电脑,名称:Notebook,创建了一个代码库,想要通过git管理,并且要把此仓库在远程服务器(RemoteLinux)上备份一下。
- 远程电脑,名称:RemoteLinux,运行Linux系统,并且可以从Notebook上登陆到 RemoteLinux。
在本地电脑(Notebook)的某个文件有一套代码(假设称作 ProjectA),想要使用git进行管理。
这个操作分为两步:
3.1 在远程电脑,名称:RemoteLinux
!!!此操作在 远程电脑,名称:RemoteLinux!!!
假设我想在 ~/Git/ 下 创建一个 空白的仓库,仓库名称建议保持一致,示例中是 ProjectA,按照惯例,我们加上 .git后缀,就是 ProjectA.git
1
mkdir -p ~/Git/
2
cd ~/Git/
3
git init --bare ProjectA.git
3.2 在本地电脑上,名称:Notebook
3.2.1 创建git的配置文件
!!!此操作在 在本地电脑上,名称:Notebook!!!
git配的文件是 ~/.gitconfig (windows则在用户的目录下面的 .gitconfig,可以用vim、记事本、文本编辑软件编辑),添加如下内容。
1
[user]
2
name = [你的名字 拼音]
3
email = [你的邮箱]
4
[push]
5
default = matching
6
[color]
7
ui = always
8
[alias]
9
co = checkout
10
br = branch
11
ci = commit
12
st = status
13
hist = log --pretty=medium --graph --date=short
14
15
### submodule ###
16
sm = submodule
17
smu = submodule update
18
smui = submodule update --init
19
# submodule update with initialize and recursive; this is useful to bring a submodule fully up to date.
20
smuir = submodule update --init --recursive
21
[core]
22
quotepath = false
23
[pull]
24
ff = only
3.2.2 创建git仓库
!!!此操作在 在本地电脑上,名称:Notebook!!!
找到存放代码的文件夹打开,(若是windows,鼠标右键,找到【git bash】,打开git bash窗口),
执行如下命令:
注意 确保 远程路径 存在: RemoteLinux:Git/ProjectA.git
1
# 在Linux/MacOS上,需要手动切换目录(windows则不需要):
2
cd /path/to/ProjectA/
3
git init . # 仅第一次
4
git remote add origin RemoteLinux:Git/ProjectA.git # 仅第一次,将本此仓库 与 远程仓库 建立连接,git push 会用到。
5
6
# 下述命令是日常循环
7
git st # 查看状态
8
git add some.py
9
git commit -m "commit_message" # 提交到本地仓库
10
git push # 把本此仓库 推送到 远程仓库
11
git log # 查看提交历史
4. Git常用命令
命令 | 说明 |
---|---|
git st | 查看文件的状态:编辑、删除、添加、clean等 |
git log | 查看提交历史 |
git reset --hard | 放弃文件修改,复原所有文件到上个版本 |
git add some.py | 添加一个文件,等待 git commit,才真的提交 |
git commit -m "干了啥?注释" | 提交到本里仓库,并添加本此提交的注释。每次commit,就是一个版本 |
git push | 把本地仓库推送(上传)到远程仓库,与git pull相反 |
git pull | 把远程仓库下载到本地仓库,与git push相反 |