Linux17 Git 指令
Git 指令
- 1. 配置命令 - git config
- 配置用户姓名(name)
- 配置用户电子邮件(email)
- 配置默认初始分支名称(branch)
- 配置默认编辑器(core.editor)
- 2. 针对仓库初始操作
- 仓库初始化 - init
- 克隆仓库 - clone
- 添加远程仓库 - remote
- 3. 分支操作
- 创建分支 - branch
- 切换分支 - checkout
- 重命名分支 - m
- 合并分支 - merge
- 4. 代码上传过程 - add - commit - push
- 添加文件到暂存区 - add
- 暂存区提交到本地仓库 - commit
- 本地推送更改到远程仓库 - push
- 5. 回退到某个提交状态 - reset
- 默认重置
- 软重置
- 6. 查看信息
- 查看仓库状态 - status
- 查看提交历史 - log
- 查看配置信息 - list
- 7. 从远程仓库拉取更改 - pull
1. 配置命令 - git config
- git config是 Git 用于获取和设置配置变量的命令。这些配置变量控制着 Git 的行为和外观的各个方面,从用户标识信息到操作的细节设定等诸多内容。
- Git 的配置有三个层次:系统级、全局级和仓库级。
- 系统级配置:适用于系统中所有用户和所有 Git 仓库,它的配置文件通常位于 Git 的系统安装目录下(如/etc/gitconfig)。这些配置一般由系统管理员设置,用于规定整个系统范围内 Git 的基本规则,例如设置全局的协议、路径等。不过,普通用户通常较少直接操作这个层次的配置。
- 全局级配置(–global):正如前面提到的,这是应用于当前用户在系统中所有 Git 仓库的配置。它的配置文件一般位于用户的主目录下(如~/.gitconfig)。这个层次的配置用于定义用户的个人习惯和通用设置,像用户的姓名、邮箱、默认的文本编辑器等,这些设置会在用户操作的所有 Git 仓库中生效。
- 仓库级配置:是针对特定的 Git 仓库的配置,配置文件位于仓库的.git目录下(如/.git/config)。仓库级别的配置会覆盖全局级和系统级的相同配置项。这使得在具体项目中,可以根据项目的特殊要求对 Git 进行更精细的设置,比如项目特定的合并策略、忽略文件的特殊规则等。
如果是全局配置需要加 --global选项,如果是仓库级配置则不需要
配置用户姓名(name)
git config --global user.name "your name"
这里的Your Name是你希望在提交记录中显示的名字(全局配置)。
配置用户电子邮件(email)
git config --global user.email "your@email.com"
这是用于识别提交者身份的重要信息(全局配置)。
配置默认初始分支名称(branch)
git config --global init.defaultBranch <name>
- Git 在创建新仓库时,默认会将初始分支命名为 “master”。
- 这里的就是你想要设置的新的初始分支名称,之后再创建新的 Git 仓库时,初始分支就会按照你设置的名称来命名了。
配置默认编辑器(core.editor)
git config --global core.editor [编辑器命令]
- 如果需要把默认编辑器改成vim,git config --global core.editor vim
2. 针对仓库初始操作
仓库初始化 - init
git init
在当前目录下创建一个新的 Git 仓库。这会在目录中生成一个隐藏的.git文件夹,用于存储仓库的所有版本控制信息。例如,在一个新的项目文件夹中执行git init后,该文件夹就变成了一个可以被 Git 管理的仓库。
克隆仓库 - clone
git clone repository-url
用于从远程服务器(如 GitHub、GitLab 等)克隆一个现有的 Git 仓库到本地。其中 repository - url 是远程仓库的地址
这会在本地创建一个和远程仓库同名的文件夹,并将远程仓库的所有内容(包括代码、文件历史等)下载到这个文件夹中。
添加远程仓库 - remote
git remote add [remote - name] [remote - repository - url]
为本地仓库添加一个远程仓库。
例如,git remote add origin https://github.com/user/my_repository.git,这里origin是远程仓库(必须在gitee或者github创建好)的名称(通常使用origin),后面是远程仓库的地址
3. 分支操作
创建分支 - branch
git branch 分支名称
在本地仓库中创建一个新的分支。例如,git branch new_feature会创建一个名为new_feature的新分支。
切换分支 - checkout
git checkout 分支名称
切换到指定的分支。例如,git checkout new_feature会从当前分支切换到new_feature分支。
重命名分支 - m
- 如果你当前正处于要重命名的分支上:
- git branch -m <新分支名称>
- 你当前所在的分支名自动修改成这个新名称
- 如果当前所处分支不是要修改的分支:
- git branch -m <原分支名称> <新分支名称>
- 重命名其他分支
合并分支 - merge
git merge 分支名称
将指定分支合并到当前分支。例如,在main分支上执行git merge new_feature,会将new_feature分支的内容合并到mian分支。
4. 代码上传过程 - add - commit - push
添加文件到暂存区 - add
git add filenames
将指定的文件添加到 Git 的暂存区。暂存区是一个中间区域,用于准备要提交的文件修改。
如果想添加目录下的所有文件,可以使用git add .(注意,“.” 表示当前目录下的所有文件和子目录,包括新建的文件和修改后的文件)。
暂存区提交到本地仓库 - commit
git commit
将暂存区的文件提交到本地仓库,并自动打开默认编辑器(可以通过git config命令设置),在其中可以输入提交说明。提交说明应该简洁明了地描述本次提交所做的更改。
git commit -m "提交说明"
将暂存区的文件提交到本地仓库,并添加一个提交说明(commit - message)。提交说明应该简洁明了地描述本次提交所做的更改。
git commit --amend
- 它允许你修改最近一次的提交
- 当你只想要修改最近一次提交的提交信息时,执行git commit --amend命令后,Git 会打开默认的文本编辑器(可以通过git config命令设置),在编辑器中,你可以修改提交信息。修改完成后保存并退出编辑器,Git 就会使用新的提交信息更新最近一次的提交。
- 如果你在提交后发现遗漏了一些文件,首先需要将这些文件添加到暂存区(使用git add命令),然后执行git commit --amend。Git 会将暂存区中的这些文件添加到最近一次提交中,并且更新提交时间为当前时间。
本地推送更改到远程仓库 - push
git push [remote - name] [branch - name]
将本地分支的更改推送到远程仓库。
例如,git push origin main会将本地main分支的内容推送到名为origin的远程仓库的main分支。
- 使用场景:
当你在本地仓库完成了代码的开发、修改或者新功能的添加后,使用git push将这些变更发送到远程仓库,这样团队中的其他成员就可以获取到你所做的更新。
5. 回退到某个提交状态 - reset
- 如果add后发现这些文件并不是想要的,可以进行回退操作清空暂存区
默认重置
语法: git reset HEAD
- 这是git reset命令的默认行为。它会将暂存区的文件取消暂存,即将git add的内容清空,同时把文件的修改内容保留在工作目录中。
- HEAD的定义和作用:
- HEAD 是一个指针,它指向当前所在的分支引用(在 Git 中,分支实际上是一个指向提交的指针)它代表你当前工作目录中的代码所对应的最新提交。
- 当你执行git add 操作时,你是将工作目录中的文件修改添加到暂存区。这个过程并没有改变 HEAD 指针所指向的位置。
- 执行git commit 操作时,会创建一个新的提交记录,并且 HEAD 指针会移动到这个新的提交上。
- 当你使用 git checkout 来切换分支时,HEAD 会指向新分支的最新提交。
- 默认重置无法重置已经 commit 的文件,软重置可以
软重置
- 写法1:git reset --soft HEAD^数字
- 写法2:git reset --soft HEAD~数字
- 软重置可以指定回退的提交数量,比方说多次 commit 但没 push,就可以通过 HEAD 后面的数字回退之前多次的提交,但回退完之后的文件会回到暂存区
6. 查看信息
查看仓库状态 - status
git status
显示当前仓库的状态,包括哪些文件被修改了、哪些文件在暂存区、哪些文件没有被跟踪等信息。
例如,在修改了一些文件后执行git status,会看到类似这样的信息:
On branch main:显示当前所在分支是main
Changes not staged for commit:未暂存的更改
modified: file1.txt:列出被修改但未添加到暂存区的文件
Untracked files:未被跟踪的文件
new_file.cpp:列出新创建但未添加到 Git 的文件
查看提交历史 - log
git log
显示仓库的提交历史,包括每次提交的作者、日期、提交说明和唯一的提交哈希值等信息。
例如,执行git log后会看到类似如下的输出:
commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6(提交哈希值)
Author: John Doe johndoe@example.com(作者信息)
Date: Mon Jan 01 12:00:00 2024 -0500(提交日期)
Add new functionality to the system(提交说明)
查看配置信息 - list
git config --list --global
7. 从远程仓库拉取更改 - pull
git pull [remote - name] [branch - name]
从远程仓库拉取指定分支的更新并合并到本地对应的分支。
例如,git pull origin main会从名为origin的远程仓库的main分支拉取更新并合并到本地main分支(前提,必须是本身就处在main分支下,否则可能会与其他分支合并)。
- 使用场景:
在团队协作开发过程中,其他成员可能会对远程仓库中的代码进行修改和更新。你可以使用git pull将这些远程的更新拉取到本地仓库,以保持本地代码和远程仓库代码的同步。