Git入门教程


作者Lou Xiao创建时间2023-06-27 12:44:51更新时间2023-06-27 12:44:51

Git 是分布式的代码版本管理工具,提供了代码版本的对比、回溯功能。

介绍两个术语:
- 本地电脑:你手边用的电脑,通常是离你最近的电脑,例如笔记本电脑,台式机等。
- 远程电脑:通常是离你很远的电脑,例如:Linux服务器等。

1. Git工具

Linux/macOS自带git工具,不需要另外安装。windows上默认没有该git,需要手动安装:

可以从 https://git-scm.com/download/win 下载安装。

64-bit Git for Windows Setup

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.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 ssh-keygen -t rsa -b 4096

执行此命令输出如下:

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
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.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
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.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 ssh RemoteLinux

第一次登录,ssh会提示检查服务器的指纹是否正确,以来确保登录了正确的服务器。输入yes然后回车,登录Linux。

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
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.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
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.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
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.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
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.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
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相反
文章目录