Git命令详解与工作流介绍:全面掌握版本控制系统的操作指南
Git
Git是一个版本控制系统(也称为源代码控制系统),允许程序员和其他处理文本文件的人在独立工作时协调更改。Git还支持二进制资产,如图片,但这些格式不支持逐行版本管理,这使得版本控制真正强大。
Git概念和工作流程
每个Git用户维护一个单独的代码库(或多个代码库)以处理源代码。项目启动的代码库被视为真实来源。其他用户与这个远程代码库同步,该代码库可以托管在私有网络上或由公共服务提供商(如GitHub、GitLab或BitBucket)提供。
将内容移动到远程代码库和从远程代码库移动内容有正式的流程。每个更改经过四个阶段,最后存储在远程代码库中。这四个阶段各自有一个相关的位置来存储代码。这些位置是:
- 工作目录
- 暂存环境
- 本地代码库
- 远程代码库
以下部分描述每个位置的目的和使用。
工作目录
工作目录是本地计算机文件系统中代码的位置。开发人员在工作目录中添加和更改代码。
暂存环境
暂存环境是Git特有的区域,在许多其他版本控制系统中并不存在。开发人员使用git add
和git reset
命令将文件添加到暂存环境或从暂存环境中移除文件。可以将暂存视为一个临时区域,在提交到本地代码库之前,文件会存储在这里。
本地代码库
本地代码库是存储在本地计算机上的Git代码库实例,物理上由顶级目录下名为.git
的子目录表示(初始的点使其隐藏)。.git
目录包含Git管理项目所需的元数据和其他信息。一旦内容被添加到暂存环境,开发人员使用git commit
命令将新内容和更新内容存储到本地代码库。git pull
命令从远程代码库更新本地代码库,使本地目录与其他开发人员的工作保持同步。
远程代码库
远程代码库是网络上的Git代码库,是特定项目下所有内容的唯一真实来源。开发人员使用git push
命令将内容从本地代码库上传到远程代码库。
以下图示显示了工作目录、暂存环境、本地代码库和远程代码库的位置,以及将数据移动到每个位置的git命令。在从远程代码库拉取内容到本地代码库后,该内容在本地文件系统中可用。
使用代码库
以下部分描述创建本地代码库、将远程代码库下载(克隆)到本地计算机以及使用远程代码库的更改更新本地代码库的git命令。
git init
创建一个本地代码库,该代码库将由名为.git
的目录表示。在远程代码库中工作时不需要此命令。使用git clone
开始与其他代码库的工作。如果未提供可选的<repo_directory>
参数,则在当前目录中创建.git
文件。如果提供了<repo_directory>
参数,则创建该目录,并在该目录中创建.git
目录。
示例:
$ git init ./coolcode
Initialized empty Git repository in /home/lennonjohn/coolcode/.git/
git clone
从远程代码库下载内容以进行本地操作。如果提供了<target_directory>
参数,则将代码库内容下载到该目录(该目录必须为空)。否则,git会根据远程代码库的名称创建一个目录。
示例:
$ git clone https://github.com/redhat-developer/developers.redhat.com.git ./
git pull
在本地代码库中调用时,从关联的远程代码库下载最新的当前资产。
示例:
$ git pull
Already up to date.
git fetch
下载来自远程代码库的更新资产,但不会合并本地代码库中的分支中的增量。
示例:
$ git fetch
git log --oneline
显示代码库中所有活动的简要格式。
示例:
$ git log --oneline
工作与分支
以下部分描述您可以使用的各种git分支命令表达式,以便在代码库中处理分支。
git branch
显示本地代码库中所有分支,并标记当前已检出的分支。
示例:
$ git branch
创建分支
创建一个新分支。如果未提供可选参数<existing_branch_name>
,则新分支将从当前工作分支派生。
示例:
$ git branch dev main
切换分支
更改当前工作分支。
示例:
$ git checkout dev
工作与内容
以下部分描述您可以使用的各种git命令,以检查和管理本地代码库中的文件。
git status
报告当前工作目录中文件和目录的状态。
示例:
$ git status
git add
将内容从当前分支的本地计算机工作目录添加到暂存环境。
示例:
$ git add ./git_cheat_sheet/
git commit
将暂存环境中的内容提交到本地代码库。
示例:
$ git commit -m "adding new file for git-cheat-sheet" ./git_cheat_sheet/readme.md
git push
将所有提交到本地代码库的内容上传到与当前工作目录关联的默认远程代码库。
示例:
$ git push
回滚文件
将文件恢复到版本控制下的先前状态。
示例:
$ git restore --staged config.json
删除文件
从当前目录中删除文件或目录。
示例:
$ rm hithere.txt
压缩文件
压缩和解压缩文件或目录。
示例:
$ tar cvzf docs.tar.gz documents/
帮助命令
显示给定命令的内部帮助文档。
示例:
$ man cp
网络命令
处理与网络相关的命令。
示例:
$ curl https://example.com -o article.html