草庐IT

Git学习笔记-2.Git基本命令(本地)

HeartFireY 2023-09-06 原文

1.创建仓库类命令

git init 初始化仓库

git init 命令用于在目录中创建新的 Git 仓库。

在项目目录中执行 git init 就可以创建一个 Git 仓库了。

如果要指定创建到某个新文件夹下,可以执行:

git init folder_name

然后就会在当前路径下创建一个名为"folder_name"的项目文件夹,内含已经初始化完毕的Git仓库。

git clone 克隆仓库

git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。拷贝项目命令格式如下:

git clone [url]

[url]为待克隆项目的地址,一般为网址,例如:

git clone https://github.com/Heartfirey/ACM_Algorithm_Library

克隆完毕后,在当前目录下会生成一个目录用于存放克隆的项目。

如果要指定克隆的位置,也可以在命令后面附加:

git clone [url] [location]

比如,克隆项目到当前目录下,而不是创建新文件夹:

git clone https://github.com/Heartfirey/ACM_Algorithm_Library ./

2.提交与修改命令

git add 添加文件到暂存区

git add 命令可将该文件添加到暂存区。

添加一个或多个文件到暂存区:

git add [file1] [file2] ...

添加指定目录到暂存区,包括子目录:

git add [dir]

添加当前目录下的所有文件到暂存区:

git add .

git status 查看仓库当前的状态,显示文件变更

git status 命令用于查看在上次提交之后是否有对文件进行再次修改

git status

为了获取更为简短的输出,一般附加参数-s

git status -s

git diff 比较暂存区和工作区对应文件不同

git diff 命令显示已写入暂存区和已经被修改但尚未写入暂存区文件的区别。

git diff 有两个主要的应用场景。

  • 尚未缓存的改动:git diff
  • 查看已缓存的改动: git diff --cached
  • 查看已缓存的与未缓存的所有改动:git diff HEAD
  • 显示摘要而非整个 diff:git diff --stat

显示暂存区和工作区的差异:

git diff [file]

显示暂存区和上一次提交(commit)的差异:

git diff --cached [file]
git diff --staged [file]

显示两次提交之间的差异:

git diff [first-branch]...[second-branch]

git commit 提交暂存区到本地仓库

git commit用于将暂存区的内容提交到本地代码仓库中。

git commit -m [message]

[message]主要写本次提交的改动等备注信息。

提交暂存区的指定文件到仓库中:

git commit [file1] [file2] ... -m [message]

也可以使用-a参数跳过缓存区,直接将工作区代码提交到代码仓库(不建议)。

git commit -a

git reset 回退版本

git reset 用于回退版本,可以指定退回某一次提交的版本,也可以用于取消已缓存的内容。

git reset [--soft | --mixed | --hard] [HEAD]

--mixed为默认参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。

--soft参数用于回退到某个版本

--hard撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交

慎用--hard参数!

[HEAD]参数说明:

  • HEAD 表示当前版本
  • HEAD^ 上一个版本
  • HEAD^^ 上上一个版本
  • HEAD^^^ 上上上一个版本
  • 以此类推…

可以使用 ~数字表示

  • HEAD~0 表示当前版本
  • HEAD~1 上一个版本
  • HEAD^2 上上一个版本
  • HEAD^3 上上上一个版本
  • 以此类推…

示例:

git reset --hard HEAD~3  # 回退上上上一个版本  
git reset –hard bae128   # 回退到某个版本回退点之前的所有信息。 
git reset --hard origin/master    # 将本地的状态回退到和远程的一样 

git reset HEAD命令用于取消已暂存的内容:

git reset HEAD [file1] [file2] ...

将会将指定文件从暂存区移除。

git rm 将文件从暂存区和工作区中删除

git rm 命令用于删除文件。

如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit 的提示。

git rm 删除文件有以下几种形式:

1、将文件从暂存区和工作区中删除:

git rm <file>

如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f

git rm -f <file> 

如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可:

git rm --cached <file>

git mv 移动或重命名工作区文件

git mv 命令用于移动或重命名一个文件、目录或软连接。

git mv [file] [newfile]

如果新文件名已经存在,但还是要重命名它,可以使用 -f 参数:

git mv -f [file] [newfile]

3.日志相关操作

git log 查看提交历史记录

git log [<options>] [<revision-range>] [[--] <path>…​]

[<options>]常用参数选项:

  • --online

    该命令可以查看当前项目的历史提交记录,如果需要查看简洁版的历史记录,可以加入--oneline参数:

    git log --oneline
    

    此时会将所有提交的历史记录以简洁模式进行展示。

  • --graph

    如果希望查看项目的分支创建、合并情况,可以附加--graph参数:

    git log --graph
    

    此时能够在控制台中显示项目历史记录的拓扑图,能够清晰的看到工作的分支和合并记录关系。

  • --reverse

    如果希望逆向来显示日志,可以附加--reverse参数:

    git log --reverse
    
  • --author

    如果希望仅查找指定用户/作者的提交日志,可以附加参数--author

    git log --author xxx
    

    该命令会显示显示与xxx有关的提交日志

  • --since--before

    如果要指定日期,可以执行几个选项:--since--before,也可以用 --until--after

    git log --oneline --before={3.weeks.ago} --after={2010-04-18}
    
  • --no-merges

    可以用于隐藏合并提交:

    git log --no-merges
    
  • --follow

    仅展示指定的单个文件的历史提交记录

    git log --follow ./xxx.xxx
    

更多的命令参数选项,可以参考:Git - git-log Documentation (git-scm.com)

git blame <file> 以列表形式查看指定文件的历史修改记录

如果需要查询指定文件的修改记录,并以列表形式进行查看,可以使用git blame命令:

git blame xxx

有关Git学习笔记-2.Git基本命令(本地)的更多相关文章

  1. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  2. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  3. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

  4. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  5. ruby-on-rails - rbenv:从 RVM 移动到 rbenv 后,在 Jenkins 执行 shell 中找不到命令 - 2

    我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions

  6. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  7. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  8. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  9. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  10. git使用常见问题(提交代码,合并冲突) - 2

    文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g

随机推荐