Git 常用指令全攻略:掌握版本控制的艺术 | WenQi Wei
Post

Git 常用指令全攻略:掌握版本控制的艺术

Git 常用指令全攻略:掌握版本控制的艺术

在当今的软件开发领域,Git 早已成为不可或缺的版本控制系统。它如同一位智慧的守护者,默默记录着代码的每一次变迁,让团队协作变得高效而有序。无论是初出茅庐的开发者,还是经验丰富的技术专家,掌握 Git 的常用指令都是迈向高效开发的关键一步。本文将带你深入 Git 的世界,从基础到进阶,逐一剖析那些常用的 Git 指令,助你轻松驾驭版本控制的精髓。

一、初识 Git:搭建你的版本控制舞台

在踏上 Git 的旅程之前,我们需要先搭建好舞台。安装 Git 是一切的起点。对于 Windows 用户,可以从 Git 官方网站下载安装包,一路点击“Next”即可完成安装;Mac 用户则可以通过 Homebrew(brew install git)轻松搞定;Linux 用户更是简单,使用包管理器(如 aptyum)就能安装。

安装完成后,别忘了配置你的 Git 环境。使用以下命令设置你的用户名和邮箱,这将伴随你的每一次提交,成为你代码的“签名”:

1
2
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"

此外,还可以通过 git config --list 查看当前的配置信息,确保一切设置无误。

二、创建与克隆仓库:开启代码的版本之旅

(一)创建本地仓库

每一段代码的旅程都需要一个起点,而 Git 仓库就是这个起点。在本地创建一个新的仓库非常简单,只需进入目标文件夹,运行以下命令:

1
git init

此时,Git 会在该文件夹下创建一个隐藏的 .git 文件夹,里面存储着仓库的所有元数据。你的本地仓库已经搭建好了,接下来就可以开始记录代码的每一次变化。

(二)克隆远程仓库

很多时候,我们需要从远程仓库(如 GitHub、GitLab)获取代码。这时,git clone 命令就派上了用场。只需输入以下命令:

1
git clone [远程仓库地址]

Git 就会将远程仓库的代码完整地复制到本地。例如,如果你想克隆一个开源项目,只需将对应的仓库地址替换进去,就能轻松获取完整的代码库。

三、基本操作:记录代码的每一次变化

(一)查看状态

在开发过程中,随时了解代码的当前状态至关重要。git status 命令就像一位贴心的助手,随时为你汇报代码的最新动态:

1
git status

运行该命令后,Git 会告诉你哪些文件被修改了、哪些文件尚未被跟踪,以及当前分支的状态。通过这些信息,你可以清晰地掌握代码的变更情况,避免遗漏重要的修改。

(二)添加文件到暂存区

当你完成代码修改后,需要将这些修改添加到暂存区,以便后续提交。git add 命令用于将文件添加到暂存区。你可以通过以下几种方式使用它:

1
2
3
git add [文件名]  # 添加指定文件
git add .         # 添加当前目录下所有修改的文件
git add -A        # 添加所有修改的文件,包括新文件和已删除的文件

暂存区就像是一个待提交的清单,只有将文件添加到暂存区,Git 才会在后续的提交中记录这些修改。

(三)提交修改

暂存区的文件准备好后,就可以通过 git commit 命令将它们提交到仓库了。提交时需要附带一条清晰的提交信息,描述这次修改的内容:

1
git commit -m "提交信息"

例如:

1
git commit -m "修复了登录功能的错误"

提交信息应该简洁明了,便于后续查看代码变更的历史记录。如果你在提交时发现还有文件未添加到暂存区,可以使用 git commit -a 命令,它会自动将所有已跟踪的文件的修改添加到暂存区并提交。

四、分支管理:并行开发的艺术

(一)创建分支

在团队协作中,分支是实现并行开发的关键工具。通过创建分支,每个开发者可以在独立的环境中进行开发,互不干扰。使用以下命令创建一个新的分支:

1
git branch [分支名]

例如:

1
git branch feature-login

这将创建一个名为 feature-login 的分支。不过,此时你仍然处于原来的分支(通常是 mainmaster)。要切换到新创建的分支,需要使用 git checkout 命令。

(二)切换分支

要切换到另一个分支,使用以下命令:

1
git checkout [分支名]

例如:

1
git checkout feature-login

此时,你已经切换到了 feature-login 分支。在这个分支上,你可以自由地进行开发,而不会影响其他分支的代码。

(三)合并分支

当一个分支的开发任务完成后,通常需要将它的修改合并回主分支(如 mainmaster)。使用以下命令进行合并:

1
2
git checkout [目标分支]
git merge [源分支]

例如:

1
2
git checkout main
git merge feature-login

这将把 feature-login 分支的修改合并到 main 分支。在合并过程中,可能会出现冲突,Git 会提示你手动解决这些冲突。解决冲突后,再次运行 git commit 完成合并。

五、远程操作:与世界同步

(一)查看远程仓库

在开发过程中,了解远程仓库的状态非常重要。使用以下命令查看远程仓库的详细信息:

1
git remote -v

该命令会列出所有远程仓库的地址和别名。通常,远程仓库的默认别名是 origin

(二)推送本地分支到远程仓库

当你在本地完成开发后,需要将本地分支的修改推送到远程仓库,以便团队成员共享。使用以下命令:

1
git push [远程仓库别名] [分支名]

例如:

1
git push origin feature-login

这将把本地的 feature-login 分支推送到远程仓库的同名分支。如果远程仓库中不存在该分支,Git 会自动创建。

(三)从远程仓库拉取更新

在团队协作中,远程仓库的代码可能会被其他成员更新。为了保持本地代码的最新状态,需要定期从远程仓库拉取更新。使用以下命令:

1
git pull [远程仓库别名] [分支名]

例如:

1
git pull origin main

这将从远程仓库的 main 分支拉取最新的代码,并自动合并到本地当前分支。如果本地分支有未提交的修改,可能会导致冲突,需要手动解决。

六、撤销修改:回到过去的力量

(一)撤销暂存区的修改

如果你在暂存区添加了错误的文件,或者需要撤销暂存区的某些修改,可以使用以下命令:

1
git reset [文件名]

例如:

1
git reset file.txt

这将撤销暂存区中对 file.txt 的修改,但不会影响工作区的文件。如果你想撤销暂存区的所有修改,可以使用:

1
git reset

(二)撤销工作区的修改

如果在工作区不小心修改了文件,或者需要撤销工作区的某些修改,可以使用以下命令:

1
git checkout -- [文件名]

例如:

1
git checkout -- file.txt

这将撤销工作区对 file.txt 的修改,恢复到最近一次提交的状态。请注意,这个操作是不可逆的,被撤销的修改将无法恢复。

(三)回退提交

如果发现之前的提交有问题,需要回退到之前的某个版本,可以使用以下命令:

1
git revert [提交 ID]

例如:

1
git revert 12345678

这将创建一个新的提交,撤销指定提交的修改。这种方式不会直接修改历史记录,而是通过一个新的提交来抵消之前的修改。

七、查看历史记录:追溯代码的变迁

(一)查看提交历史

要查看代码的提交历史,使用以下命令:

1
git log

该命令会列出所有提交的详细信息,包括提交 ID、提交者、提交时间、提交信息等。你可以通过以下参数对输出进行定制:

  • -p:显示每次提交的详细修改内容。
  • --stat:显示每次提交的文件修改统计信息。
  • --oneline:将每次提交的信息显示在一行内。

例如:

1
git log --oneline

这将以简洁的格式显示提交历史。

(二)查看文件的历史版本

如果你想查看某个文件的历史版本,可以使用以下命令:

1
git log [文件名]

例如:

1
git log file.txt

这将列出 file.txt 的所有提交历史,你可以通过提交

八、代理设置

在开发过程中,我们可能会遇到网络环境的限制,导致无法直接访问远程 Git 仓库(如 GitHub、GitLab 等)。例如,某些公司内部网络或特定地区可能对某些 Git 服务进行了限制。此时,Git 代理设置就显得尤为重要。它如同一座桥梁,帮助我们跨越网络限制,顺利连接到远程仓库。

(一)为什么需要代理

在某些网络环境中,直接访问远程 Git 仓库可能会遇到以下问题:

  • 网络延迟或不稳定:某些地区或网络环境对远程 Git 服务的访问速度较慢,甚至可能出现频繁断线的情况。
  • IP 地址被限制:某些公司或机构的网络可能对特定的 Git 服务 IP 地址进行了限制,导致无法直接访问。
  • 安全策略限制:出于安全考虑,某些网络环境可能只允许通过特定的代理服务器访问外部网络。

在这种情况下,通过设置 Git 代理,我们可以将 Git 请求转发到代理服务器,从而绕过这些限制,实现对远程仓库的正常访问。

(二)设置 Git 代理

Git 支持多种代理设置方式,包括 HTTP 代理和 SOCKS 代理。以下是详细的设置方法:

①设置 HTTP 代理

如果你的网络环境使用的是 HTTP 代理服务器,可以通过以下命令设置 Git 的 HTTP 代理:

1
2
git config --global http.proxy http://[用户名]:[密码]@[代理服务器地址]:[端口号]
git config --global https.proxy http://[用户名]:[密码]@[代理服务器地址]:[端口号]

例如,假设你的代理服务器地址为 192.168.1.100,端口号为 8080,用户名为 user,密码为 pass,则可以设置为:

1
2
git config --global http.proxy http://user:pass@192.168.1.100:8080
git config --global https.proxy http://user:pass@192.168.1.100:8080

如果代理服务器不需要用户名和密码,可以直接省略用户名和密码部分:

1
2
git config --global http.proxy http://192.168.1.100:8080
git config --global https.proxy http://192.168.1.100:8080

②设置 SOCKS 代理

如果你的网络环境使用的是 SOCKS 代理服务器,可以通过以下命令设置 Git 的 SOCKS 代理:

1
2
git config --global http.proxy socks5://[用户名]:[密码]@[代理服务器地址]:[端口号]
git config --global https.proxy socks5://[用户名]:[密码]@[代理服务器地址]:[端口号]

例如,假设你的代理服务器地址为 192.168.1.100,端口号为 1080,用户名为 user,密码为 pass,则可以设置为:

1
2
git config --global http.proxy socks5://user:pass@192.168.1.100:1080
git config --global https.proxy socks5://user:pass@192.168.1.100:1080

同样,如果代理服务器不需要用户名和密码,可以直接省略用户名和密码部分:

1
2
git config --global http.proxy socks5://192.168.1.100:1080
git config --global https.proxy socks5://192.168.1.100:1080

③设置全局代理(适用于所有 Git 操作)

如果你希望为所有 Git 操作设置统一的代理,可以使用 --global 参数。这样,无论你在哪个仓库中执行 Git 操作,都会使用相同的代理设置。例如:

1
2
git config --global http.proxy http://192.168.1.100:8080
git config --global https.proxy http://192.168.1.100:8080

④为特定仓库设置代理

如果你只想为某个特定的仓库设置代理,可以在仓库的根目录下运行以下命令,而不使用 --global 参数:

1
2
3
cd /path/to/your/repo
git config http.proxy http://192.168.1.100:8080
git config https.proxy http://192.168.1.100:8080

这种方式不会影响其他仓库的代理设置,更加灵活。

(三)验证代理设置

设置代理后,你需要验证代理是否生效。可以通过以下命令检查当前的代理设置:

1
2
git config --get http.proxy
git config --get https.proxy

如果代理设置正确,你会看到对应的代理地址和端口号。例如:

1
2
http://192.168.1.100:8080
http://192.168.1.100:8080

此外,你可以尝试执行一些 Git 操作(如 git clonegit pull)来验证代理是否正常工作。如果代理设置正确,Git 应该能够顺利连接到远程仓库。

(四)取消代理设置

如果你不再需要使用代理,或者需要切换到其他代理服务器,可以通过以下命令取消代理设置:

1
2
git config --global --unset http.proxy
git config --global --unset https.proxy

或者,你可以直接将代理设置为空值:

1
2
git config --global http.proxy ""
git config --global https.proxy ""

如果你之前为某个特定仓库设置了代理,也可以在该仓库的根目录下运行以下命令取消代理设置:

1
2
3
cd /path/to/your/repo
git config --unset http.proxy
git config --unset https.proxy

(五)常见问题及解决方法

①代理无法连接

如果你在设置代理后发现 Git 无法连接到远程仓库,可能是以下原因之一:

  1. 代理服务器地址或端口号错误:请仔细检查代理服务器的地址和端口号是否正确。
  2. 代理服务器未启动或不可用:确保代理服务器已经启动,并且网络连接正常。
  3. 用户名或密码错误:如果代理服务器需要用户名和密码,请确保输入的用户名和密码正确。
  4. 代理服务器限制了 Git 访问:某些代理服务器可能对特定的 Git 服务进行了限制。请咨询网络管理员,确认代理服务器是否允许访问 Git 服务。

②代理连接速度慢

如果代理连接速度较慢,可能是以下原因之一:

  1. 代理服务器性能问题:尝试更换其他性能更好的代理服务器。
  2. 网络环境不稳定:检查本地网络环境,确保网络连接稳定。
  3. 代理服务器配置问题:咨询网络管理员,确认代理服务器的配置是否正确。

③代理设置后仍然无法访问特定仓库

某些 Git 服务(如 GitHub)可能支持多种协议(如 HTTPS 和 SSH)。如果你的代理设置只针对 HTTP 或 HTTPS 协议,而远程仓库使用的是 SSH 协议,可能会导致无法访问。在这种情况下,你可以尝试切换协议,或者为 SSH 协议也设置代理。

(六)代理设置的高级技巧

①使用环境变量设置代理

除了通过 git config 命令设置代理外,你还可以通过环境变量来设置代理。这种方式更加灵活,可以在不同的环境中快速切换代理设置。

在 Linux 或 macOS 系统中,可以通过以下命令设置环境变量:

1
2
export http_proxy=http://192.168.1.100:8080
export https_proxy=http://192.168.1.100:8080

在 Windows 系统中,可以通过以下命令设置环境变量:

1
2
set http_proxy=http://192.168.1.100:8080
set https_proxy=http://192.168.1.100:8080

设置环境变量后,Git 会自动使用这些代理设置。

②使用 Git Credential Manager 管理代理

如果你使用的是 Windows 系统,可以通过 Git Credential Manager 来管理代理设置。Git Credential Manager 是一个强大的工具,可以帮助你更方便地管理 Git 凭证(包括用户名、密码和代理设置)。

安装 Git Credential Manager 后,你可以在 Git 配置文件中设置代理,或者通过 Git Credential Manager 的图形界面进行代理设置。这种方式更加直观,适合不熟悉命令行操作的用户。

(七)附代理服务器IP查看:不同操作系统的查看方法

①Windows 系统

步骤一:打开系统设置
  1. 打开“设置”应用,搜索并点击“代理”设置。
  2. 在代理设置中,找到并点击“使用代理服务器”的编辑按钮。
步骤二:查看代理服务器信息
  1. 在代理服务器设置中,你可以看到代理服务器的 IP 地址(通常为 127.0.0.1 或其他指定的 IP 地址)和端口号(例如 7890)。
  2. 确认这些信息后,点击“保存”按钮。
步骤三:设置 Git 代理
  1. 打开命令提示符或 PowerShell,输入以下命令设置 Git 的 HTTP 和 HTTPS 代理:
    1
    2
    
    git config --global http.proxy http://127.0.0.1:7890
    git config --global https.proxy http://127.0.0.1:7890
    

②macOS 系统

步骤一:打开系统偏好设置
  1. 打开“系统偏好设置”应用。
  2. 点击“网络”图标,选择你正在使用的网络连接(如 Wi-Fi 或以太网)。
步骤二:查看代理服务器信息
  1. 在网络设置中,点击“高级”按钮。
  2. 在“代理”选项卡中,你可以看到代理服务器的配置信息,包括 IP 地址和端口号。
步骤三:设置 Git 代理
  1. 打开终端,输入以下命令设置 Git 的 HTTP 和 HTTPS 代理:
    1
    2
    
    git config --global http.proxy http://127.0.0.1:7890
    git config --global https.proxy http://127.0.0.1:7890
    

③Linux 系统

步骤一:打开网络设置
  1. 打开“设置”应用,选择“网络”选项。
  2. 选择你正在使用的网络连接。
步骤二:查看代理服务器信息
  1. 在网络设置中,找到并点击“网络代理”或“代理”设置。
  2. 在代理设置中,你可以看到代理服务器的 IP 地址和端口号。
步骤三:设置 Git 代理
  1. 打开终端,输入以下命令设置 Git 的 HTTP 和 HTTPS 代理:
    1
    2
    
    git config --global http.proxy http://127.0.0.1:7890
    git config --global https.proxy http://127.0.0.1:7890
    
This post is licensed under CC BY 4.0 by the author.