0


Git 基础操作手册:轻松掌握常用命令

Git 操作完全手册:轻松掌握常用命令

引言

在开发过程中,掌握 Git 的常用操作命令是提高工作效率的关键。本章将详细介绍 Git 中最常用的命令,如

git add

git commit

git pull

git push

,帮助你高效管理代码库。你将学习如何处理文件暂存、提交、更改同步及版本历史查看等核心任务。无论你是 Git 新手还是有经验的开发者,这些操作都是你日常工作的基础。通过掌握这些命令,你将能够更好地跟踪和管理你的代码变更,确保开发流程的顺畅与稳定。
在这里插入图片描述

一、暂存:git add ✏️

在仓库里刚新建的文件是不会被跟踪起来的,比如我们使用

git status

就能查看到文件的状态。
在这里插入图片描述
需要使用

git add

才可以把本地修改的数据暂存到暂存区。暂存区的作用:像 SVN 这种没有暂存区概念的版本控制,可能会产生很多无意义的提交,暂存区可以先将一些修改暂存一下,后面再统一提交到仓库,从而减少提交次数。

基本用法:

gitadd<path>

通过

git add <path>

的方式把

path

目录下的所有文件添加到

git

的暂存区,当然这些文件不包含已经被删除的文件。
示例:

# 将所有修改添加到暂存区gitadd.# 将以.cpp结尾的文件的所有修改添加到暂存区gitadd *.cpp   

# 将所有以Hello开头的文件的修改添加到暂存区,例如: helloWorld.txt,hello.h,helloGit.md ...gitadd hello*   

# 将以hello开头后面只有一位的文件提交到暂存区 # 例如:hello1.txt,helloA.cpp 如果是helloGit.txt和hello.cxx是不会被添加的。gitadd hello?.*   
git add

是把文件添加到暂存区,那如果想从暂存区删除呢?可以使用

git rm -f

或者

git rm –cached 

把文件从暂存区里移除,这个移除并不是把代码文件从磁盘上删除了,只是说不被

git

管理了而已。
在这里插入图片描述

二、提交:git commit 📝

git add

只是把文件添加到暂存区而已,并没有真正跟踪起来,需要使用

git commit

命令提交到本地仓库才能真正被

git

跟踪记录,

git commit

命令的用法如下:
在这里插入图片描述
示例:

#把暂存区和当前已被跟踪的文件的所有的修改提交到仓库里,-m参数指定了此次提交的message内容git commit -a-m"initial commit".# 提交Makefile和Logger.cpp的修改git commit Makefile Logger.cpp –m "修改编译错误,添加了对log4cpp库的依赖"

在这里插入图片描述

三、拉取、拉取合并 🔄

拉取

git fetch

):

fetch

是拉取的意思,

git fetch

只将远端仓库数据拉取到本地仓库,主要是 **将远程仓库所包含分支的最新

commit-id

记录到本地文件**。比如,远端的数据比本地多两个版本,

fetch

会将最新版本的版本ID写到本地仓库,但是,远端的文件修改并没有拉取到工作区(workspace),它只是拉取最近提交的信息出来,通过这个可以让我们知道本地比远端落后几个版本。

git fetch

通常很少去使用,因为在实际使用中会使用一个有GUI的客户端工具,并不需要敲命令。这里介绍

git fetch

命令以及其他命令主要是为了了解 Git 的工作流程。

拉取合并

git pull

直接将数据拉取到工作区(workspace)。它主要由两部分构成:

  • git fetch:先拉取,看一下本地仓库落后多少个版本信息。
  • git merge :将数据拉取到工作区。

也就是说,别人修改的代码,我们可以先

git fetch

到本地仓库,然后

git merge

拉取到工作区;也可以通过一个命令

git pull

一起完成这两个操作。

四、推送:git push 🌐

git push

用于将本地仓库中的更改推送到远程仓库。这个命令将本地分支的提交(commits)上传到远程仓库,从而使其他协作者能够看到并合并这些更改。

基本语法:

git push [<remote>][<branch>]
  • <remote>: 远程仓库的名字,通常是 origin(默认远程仓库的名字)。
  • <branch>: 想推送的本地分支名。

示例:

  1. 推送到默认远程仓库(origin)和当前分支:git push如果当前分支已经配置了上游分支(upstream branch),这个命令会将更改推送到默认远程仓库的对应分支。
  2. 推送到指定的远程仓库和分支:git push origin main将本地的 main 分支推送到远程的 main 分支。
  3. 推送所有本地分支:git push --all将所有本地分支推送到远程仓库。
  4. 推送所有标签(tags):git push --tags将所有本地标签推送到远程仓库。

常见选项:

  • -u--set-upstream:将本地分支与远程分支关联起来,后续可以只用 git pushgit pull 不指定分支。git push -u origin feature-branch
  • --force-f:强制推送,覆盖远程仓库的历史记录。注意使用这个选项时要非常小心,因为这可能会导致数据丢失。git push --force
  • --force-with-lease:在强制推送时确保不会覆盖别人推送的更改。相对比 --force 更安全一些。git push --force-with-lease
  • --dry-run:模拟推送操作,不真正推送任何更改,适用于检查即将推送的内容。git push --dry-run

错误处理:

  • rejected 错误:通常是因为远程分支比本地分支有更新,可能需要先拉取远程更改并解决冲突。
  • non-fast-forward 错误:通常需要进行合并或变基操作。git pull --rebasegit push

五、查看状态:git status 📊

git status

是 Git 中一个非常有用的命令,用于显示当前工作目录和暂存区的状态。这有助于了解哪些文件被修改了、哪些文件被暂存了、以及哪些文件是未跟踪的。

基本语法:

git status

执行

git status

后,会看到以下几类信息:

  1. 当前分支信息:显示你当前所在的分支以及它与远程分支的关系(例如,是否领先或落后于远程分支)。On branch mainYour branch is up to date with 'origin/main'.
  2. 暂存区状态:显示哪些文件被暂存(即已准备好进行提交)。Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: file1.txt modified: file2.txt
  3. 工作目录状态:显示哪些文件被修改但尚未暂存。Changes not staged for commit: (use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory) modified: file3.txt
  4. 未跟踪的文件:显示哪些文件存在于工作目录中,但 Git 还没有跟踪它们。Untracked files: (use "git add <file>..." to include in what will be committed) file4.txt

常见选项:

  • **-s--short**:以简短的格式显示状态。git status -s输出类似于:A file1.txtM file2.txtM file3.txt?? file4.txt这里的 A 表示新文件已暂存,M 表示修改已暂存,?? 表示未跟踪的文件。
  • **-b--branch**:显示分支信息。git status -b输出类似于:On branch mainYour branch is up to date with 'origin/main'.
  • **--porcelain**:以机器可读的格式输出状态信息,通常用于脚本。git status --porcelain

如果工作目录中有很多未跟踪的文件或修改,可以考虑使用

git clean

git restore

命令来清理。

六、查看历史:git log 📜

git log

是 Git 中一个非常重要的命令,用于查看提交历史。它显示了当前分支的提交记录,帮助了解代码的演变过程。

基本语法:

git log [options][<revision range>][--][<path>...]
  • <revision range>: 可以指定一个或多个提交范围。
  • <path>: 仅显示特定路径的提交记录。

基本用法:

  1. 查看提交历史:git log这将显示当前分支的所有提交记录,包括提交的哈希值、作者、日期和提交信息。
  2. 查看简洁的提交历史:git log --oneline以简洁的一行格式显示提交记录,每个提交显示其简短的哈希值和提交信息。
  3. 查看特定文件的提交历史:git log -- <file>显示对指定文件的所有提交记录。
  4. 查看某个分支的提交历史:git log branch-name显示指定分支的提交记录。

常见选项:

  • --pretty: 自定义日志的输出格式。git log --pretty=format:"%h - %an, %ar : %s"这将以自定义格式显示提交记录,其中 %h 是提交的简短哈希, %an 是作者名, %ar 是相对时间, %s 是提交信息。
  • --graph: 显示提交历史的图形化表示。git log --graph这将以图形化的方式展示提交历史和分支合并情况。
  • --abbrev-commit: 显示简短的提交哈希。git log --abbrev-commit这会显示缩短的提交哈希值,而不是完整的哈希值。
  • --since--until: 显示指定时间范围内的提交记录。git log --since="2024-01-01"--until="2024-07-01"只显示在指定时间范围内的提交记录。
  • --author: 显示由特定作者提交的记录。git log --author="John Doe"只显示指定作者的提交记录。
  • --grep: 按提交信息的关键词过滤记录。git log --grep="fix bug"只显示包含指定关键词的提交记录。
  • --patch: 显示每个提交的差异(diff)。git log -p显示每个提交中修改的具体内容。

高级用法:

  • 查看合并提交历史: 只显示合并提交的记录。git log --merges
  • 查看特定分支的提交历史:git log branch1..branch2显示从 branch1branch2 的提交记录,即 branch2 上而不在 branch1 上的提交记录。
  • 结合多个选项使用:git log --pretty=format:"%h - %an, %ar : %s"--graph --abbrev-commit以自定义格式显示提交记录,并附带图形化表示和简短的哈希值。
  • 日志文件过长:如果提交历史记录非常长,可以使用分页工具(如 less)来查看:git log |less
  • 在大项目中,查看提交历史可能会比较慢。可以限制显示的提交数量,例如:git log -n10

七、引用日志:git reflog 🔙

git reflog

是 Git 中一个非常重要的命令,用于查看和管理引用日志(reflog)。引用日志记录了对 Git 引用(如分支、HEAD)的所有修改历史,包括提交、合并、重置、移动分支等操作。它在恢复丢失的提交、调试和审计历史方面非常有用。

基本语法:

git reflog [options]

这将显示 HEAD 的所有历史记录,包括提交、重置、合并等操作。输出内容包括操作编号(reflog index)、提交哈希、操作类型和消息。

也可以查看特定操作的引用日志:

git reflog show HEAD@{<n>}

这里的

<n>

reflog

的索引。例如,

HEAD@{1}

表示上一个

HEAD

状态。可以用来查看指定历史状态的详细信息。

八、总结

在这一章中,我们详细介绍了 Git 的一些常用操作命令,包括

git add

git commit

git pull

git push

git status

git log

git reflog

。通过这些命令,你可以更高效地管理你的代码库,确保代码版本的准确性和一致性。
在这里插入图片描述

在这里插入图片描述


本文转载自: https://blog.csdn.net/Long_xu/article/details/140783446
版权归原作者 Lion Long 所有, 如有侵权,请联系我们删除。

“Git 基础操作手册:轻松掌握常用命令”的评论:

还没有评论