Git 安装和用法
一 、Windows 安装 Git
1、下载软件包安装 Git
Git下载地址:
https://git-scm.com/download/win
Windows 安装 Git 一直下一步就好
2、命令行安装 Git
- 在命令提示符或 Powershell 中键入此命令。
1
|
winget install --id Git.Git -e --source winget
|
功能:安装 Git 的最新版本。
来源:从 winget(Windows 包管理器)的官方源获取 Git 包。
3、查看 Git 版本
二 、Git 的全局配置
- 第一件事是设置您的用户名和电子邮件地址。这很重要,因为每个 Git 提交都会使用此信息,并且它会不可改变地嵌入到您开始创建的提交中:
1、设置用户信息
1
2
3
4
5
|
# 设置用户名
git config --global user.name "John Doe"
# 设置用户邮箱
git config --global user.email johndoe@example.com
|
2、Git 添加代理
1
2
|
git config --global http.proxy 127.0.0.1:7890
git config --global https.proxy 127.0.0.1:7890
|
- 如果你之前git中已经设置过上述配置,则使用如下命令取消再进行配置即可:
1
2
|
git config --global --unset http.proxy
git config --global --unset https.proxy
|
3、增加 Git 的超时时间
1
2
|
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999
|
4、查看当前配置
1
|
git config --list --show-origin
|
三 、切换到SSH密钥(推荐)
1、检是查否已经有SSH密钥
输入以下令命来检查.ssh录目下的文件:
2、 如果没有SSH密钥,创建新的SSH密钥
输以入下命令生成SSH钥密对:
1
|
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
|
3、一键复制公钥文件到剪切板
1
|
type %USERPROFILE%\.ssh\id_rsa.pub | clip
|
4、 将钥公添加到GitHub账户
- 登录你到的GitHub账户。
- 点击右上角的头像,选择
Settings
。
- 在侧左菜单中选择
SSH and GPG keys
。
- 点击
New SSH key
按钮。
- 在
Title
字段中输一入个名称(例如,你的电脑名称),
- 在 “Key” 字段中粘贴刚才制复的公钥内容,
- 然后点击 “Add SSH key” 按钮。
5、修改远程仓库URL为SSH格式
1
|
git remote set-url origin git@github.com:meimolihan/sh.git
|
四 、GitHub新建项目并发布
2、输入项目名称music-lrc
–>Public
【公开】–>Create repository
【创建存储库】
3、将本地仓库与 GitHub 上的远程仓库关联并推送代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# 在README.md文件中追加一行"# music-lrc"
echo "# music-lrc" >> README.md
# 初始化一个新的Git仓库
git init
# 将README.md文件添加到暂存区
git add README.md
# 提交暂存区的所有更改,并附上提交信息"first commit"
git commit -m "first commit"
# 将当前分支名更改为'main'
git branch -M main
# 添加远程仓库地址,这里的远程仓库名为'origin',地址为'https://github.com/meimolihan/music-lrc.git'
git remote add origin https://github.com/meimolihan/music-lrc.git
# 推送本地的'main'分支到远程仓库'origin',并且设置上游分支(-u参数的作用),这样以后可以直接使用'git push'或'git pull'而无需指定远程仓库和分支名
git push -u origin main
|
4、将本地仓库推送到 GitHub (更新仓库)
branch 'main' set up to track 'origin/main'.
说明本地的 main 分支已经设置为跟踪远程仓库 origin 的 main 分支。后续再使用 git push
或 git pull
时,如果不指定分支,Git 就会默认操作这个跟踪关系对应的分支。
1
2
3
4
5
6
7
8
|
# 将所有修改、新增或删除的文件添加到暂存区
git add .
# 提交暂存区的更改,并附上提交信息"update"
git commit -m "update"
# 将本地分支的更新推送到远程仓库对应的分支。假设已经设置过上游分支(例如之前使用过`git push -u origin main`),可以直接使用`git push`
git push
|
5、查看状态
查看当前工作区和暂存区的状态,了解哪些文件已修改、新增或删除。
五 、Git 克隆项目
1、Git http克隆项目
1
|
git clone https://github.com/meimolihan/music.git
|
2、Git SSH克隆项目
1
|
git clone git@github.com:meimolihan/music.git
|
1
2
3
4
5
6
7
|
if not exist "%USERPROFILE%\.ssh" mkdir "%USERPROFILE%\.ssh"
(
echo Host github.com
echo HostName github.com
echo IdentityFile ~/.ssh/id_rsa # 根据你的私钥文件路径修改
echo StrictHostKeyChecking no
) > "%USERPROFILE%\.ssh\config"
|
- 预先添加 GitHub 主机信息
- 若解决
.ssh
目录问题后仍不想每次手动确认,可预先将 GitHub 的主机信息添加到 known_hosts
文件中。
- 获取 GitHub 的 SSH 指纹:
1
|
ssh-keyscan -t ed25519 github.com
|
该命令会输出 GitHub 的 ED25519 密钥指纹信息。
1
|
ssh-keyscan -t ed25519 github.com >> ~/.ssh/known_hosts
|
此命令会把 GitHub 的 SSH 指纹信息追加到 known_hosts
文件中。之后再进行克隆操作时,就不会再提示你确认主机信息了。
六 、忽略文件
1、创建 .gitignore 文件
2、指定不需要被 Git 跟踪的文件或目录。例如:
1
2
3
4
5
|
# 忽略所有 .log 文件
*.log
# 忽略 node_modules 文件夹
/node_modules
|
七 、Git 仓库合并
1 、将【本地仓库】的更改合到并【程远仓库】
- 查看是否有未提交的修改
- 更新本地分支到最新状态
- 提交本地更改
1
2
|
git add .
git commit -m "描述你的更改"
|
- 推送更改到远程仓库
2 、将【程远仓库】的更改合到并【本地仓库】
- 查看当前分支
首先,确认你当所前在的分支。如果你打将算远程改更合并到 main 分支,确保你在该分支上。
- 切换到目标分支
- 直接获并取合并远更程改
- 查最看新提交记录
查看新最的提交记录,确远认程仓库的更是改否已经正确合到并本地。
八 、清理仓库并优化存储
1、检查仓库大小
你可以使用以下命令检查仓库的大小变化:
2、清理仓库并优化存储
git gc 的主要功能是清理本地仓库中的无用对象(如未引用的提交、树对象、blob 对象等),并优化存储结构(如压缩对象、优化 packfile 等)。
这些操作不会改变你的代码内容、分支结构或提交历史。因此,远程仓库的内容不会因为本地执行 git gc 而发生变化。
3、自动维护
1
|
git config --global gc.auto 250
|
4、检查 Git 仓库的完整性
建议定期运行 git gc 和 git fsck,以保持仓库的整洁和健康。可以设置 gc.auto 参数来自动触发垃圾回收:
这表示当仓库中的松散对象数量达到 250 时,Git 会自动运行 git gc。
九 、git 分支操作
1、 查看分支
- 查看本地分支
git branch
,查看远程分支git branch -r
2、 创建分支
1
|
git branch <branch-name>
|
1
|
git switch <branch-name>
|
1
|
git switch -c <branch-name>
|
3、 删除分支
1
|
git branch -d <branch-name>
|
1
|
git branch -D <branch-name>
|
1
|
git push origin --delete <branch-name>
|
4、 重命名分支
1
|
git branch -m <new-branch-name>
|
1
|
git branch -m <old-branch-name> <new-branch-name>
|
5、 推送分支
1
|
git push origin <branch-name>
|
1
|
git push -u origin <branch-name>
|
6、 拉取分支
1
|
git pull origin <branch-name>
|
7、 跟踪远程分支
1
|
git branch --set-upstream-to=origin/<branch-name>
|
8、 解决冲突
- 在合并或 rebase 时可能会出现冲突,解决冲突后需要手动标记文件为已解决:
1
|
git add <file-with-conflict>
|
十 、Git 使用 ssh 密钥连接 GitHub
1、 生成个人访问令牌
- 登录到你的GitHub账户。
- 点击上右角的头像,选择
Settings
。
- 在左侧菜中单选择
Developer settings
。
- 在左菜侧单中选择
Personal access tokens
。
- 点击
Generate new token
按钮。
- 给令牌命名(例如
Git-Push-Token
),然后根据你需的求选择权限范围。对于简单推的送操作,通常只需要 repo
权限即可。
- 点击
Generate token
按钮,然后制复生成的令牌。
2、 使用个人访问牌令进行推送
- 当执行
git push
命令时,在提示输密入码的地方,输刚入刚生成的人个访问令牌。
3、检是查否已经有SSH密钥
输入以下令命来检查.ssh录目下的文件:
1
2
3
4
|
dir %USERPROFILE%\.ssh
## 或者
dir $env:USERPROFILE\.ssh
|
4、 如果没有SSH密钥,创建新的SSH密钥
输以入下命令生成SSH钥密对:
1
|
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
|
5、一键复制公钥文件到剪切板
1
|
type %USERPROFILE%\.ssh\id_rsa.pub | clip
|
6、 将钥公添加到GitHub账户
- 登录你到的GitHub账户。
- 点击右上角的头像,选择
Settings
。
- 在侧左菜单中选择
SSH and GPG keys
。
- 点击
New SSH key
按钮。
- 在
Title
字段中输一入个名称(例如,你的电脑名称),
- 在 “Key” 字段中粘贴刚才制复的公钥内容,
- 然后点击 “Add SSH key” 按钮。
7、修改远程仓库URL为SSH格式
1
|
git remote set-url origin git@github.com:meimolihan/sh.git
|
- 在项目录目下执行以下命令,查看程远仓库URL:
1
2
3
|
C:\Users\Administrator\Desktop\Git\sh>git remote -v
origin git@github.com:meimolihan/sh.git (fetch)
origin git@github.com:meimolihan/sh.git (push)
|
8、使用SSH进推行送
1
|
git push -u origin main
|
- 再次执行
git push -u origin main
命令,此时应该以可成功推送。
git tag
用于标记特定的提交,通常用于版本发布。以下是常用的 git tag
相关命令:
1、 查看所有标签
列出所有已创建的标签。
2、 创建标签
示例:git tag v1.0
1
|
git tag -a <tagname> -m "Tag message"
|
示例:git tag -a v1.0 -m “Release version 1.0”
带注释的标签会存储更多信息,如标签创建者、创建日期和注释消息。
1
|
git tag -a <tagname> <commit-hash> -m "Tag message"
|
示例:git tag -a v1.0 abc1234 -m “Release version 1.0”
指定某个历史提交作为标签。
3、 查看标签详情
示例:git show v1.0
查看标签的详细信息,包括注释。
4、 删除本地标签
示例:git tag -d v1.0
5、 删除远程标签
1
|
git push origin --delete <tagname>
|
示例:git push origin –delete v1.0
6、 推送标签到远程仓库
1
|
git push origin <tagname>
|
示例:git push origin v1.0
7、 检出标签
示例:git checkout v1.0
检出标签对应的代码(进入“分离 HEAD”状态)。
1
|
git checkout -b <branch-name> <tagname>
|
示例:git checkout -b release-v1 v1.0
从标签创建一个新分支。
8、 标签排序
按创建时间排序(倒序):
1
|
git tag --sort=-creatordate
|
9、 查找特定标签
列出符合模式的标签(如 v1.0, v1.1 等)。
10、 将更新推送到历史标签的windows批处理文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
@echo off
REM Windows 批处理脚本:更新 Git 标签
REM 设置 Git 仓库路径
SET REPO_PATH=C:\Users\Administrator\Desktop\Git\music
REM 切换到指定的 Git 仓库目录
CD /D %REPO_PATH%
REM 检查是否成功切换到仓库目录
IF NOT EXIST .git (
echo ===========================================
echo 错误:目录 %REPO_PATH% 不是一个有效的 Git 仓库。
echo ===========================================
pause
EXIT /B 1
)
REM 添加所有更改并提交
echo ===========================================
echo 正在添加所有更改...
git add .
echo ===========================================
echo 正在提交更改,提交信息为 "update"...
git commit -m "update"
echo ===========================================
REM 推送提交到远程仓库
echo 正在将提交推送到远程仓库...
git push
echo ===========================================
REM 删除本地标签 v1.0.0
echo 正在删除本地标签 v1.0.0...
git tag -d v1.0.0
echo ===========================================
REM 删除远程标签 v1.0.0
echo 正在删除远程标签 v1.0.0...
git push origin :refs/tags/v1.0.0
echo ===========================================
REM 检查标签是否删除成功
echo 检查标签 v1.0.0 是否删除成功...
git tag -l | findstr /I "v1.0.0" >nul
IF %ERRORLEVEL% EQU 0 (
echo 远程标签 v1.0.0 删除失败,请手动检查。
) ELSE (
echo 远程标签 v1.0.0 删除成功。
)
echo ===========================================
REM 创建新标签 v1.0.0
echo 正在创建新标签 v1.0.0,标签信息为 "为最新提交的重新创建标签"...
git tag -a v1.0.0 -m "Recreate tags for the latest submission"
echo ===========================================
REM 推送新标签到远程仓库
echo 正在将新的标签 v1.0.0 推送到远程仓库...
git push origin v1.0.0
echo ===========================================
REM 检查标签是否推送成功
echo 检查标签 v1.0.0 是否推送成功...
git tag -l | findstr /I "v1.0.0" >nul
IF %ERRORLEVEL% EQU 0 (
echo 标签 v1.0.0 推送成功。
) ELSE (
echo 标签 v1.0.0 推送失败,请手动检查。
)
echo ===========================================
echo 所有操作已完成。
pause
|
十二 、Git下载GitHub文件
1、 获取下载链接
我的项目地址:
https://github.com/meimolihan/sh
- 点击要下载的文件
linux-check.sh
- 点击
Raw
按钮
- 复制下载链接
https://raw.githubusercontent.com/meimolihan/sh/refs/heads/main/linux-check.sh
2、 linux 下载命令
1
|
wget -c -O /etc/profile.d/linux-check.sh https://raw.githubusercontent.com/meimolihan/sh/refs/heads/main/linux-check.sh && chmod +x /etc/profile.d/linux-check.sh && ln -sf /etc/profile.d/linux-check.sh /usr/local/bin/m && /etc/profile.d/linux-check.sh
|
/etc/profile.d
目录是一个用于存放 shell 脚本的目录,这些脚本会在用户登录系统并启动一个交互式登录 shell 时被自动执行。
ln -sf /etc/profile.d/linux-check.sh /usr/local/bin/m
执行这条命令后,会在 /usr/local/bin
目录下创建一个名为 m 的符号链接,
- 该符号链接指向
/etc/profile.d/linux-check.sh
文件。这样,当你在终端中输入 m
并按下回车键时,实际上就相当于执行了 /etc/profile.d/linux-check.sh
脚本。
十二 、Git 解决 .gitignore 文件不起作用
注意:以下命令需在要你项目中右键点击 Git Bash Here
进行命令口窗输入:
移除 public 目录的跟踪
1
2
3
4
5
6
7
8
9
10
11
|
# 移除 public 目录的跟踪
git rm --cached -r public
# 将更改添加到暂存区
git add .
# 提交更改
git commit -m "Remove tracked files to respect .gitignore"
# 将本地分支的更新推送到远程仓库对应的分支。假设已经设置过上游分支(例如之前使用过`git push -u origin main`),可以直接使用`git push`
git push
|
将Git缓存的所文有件都除清掉,再重新添并加提交.gitignore文件。
1
2
3
4
5
6
7
8
9
10
11
|
# 将Git缓存的所文有件都除清掉,再重新添并加提交.gitignore文件。
git rm -r --cached .
# 将更改添加到暂存区
git add .
# 提交更改
git commit -m 'update .gitignore'
# 将本地分支的更新推送到远程仓库对应的分支。假设已经设置过上游分支(例如之前使用过`git push -u origin main`),可以直接使用`git push`
git push
|