• Git命令快速入门(建议收藏)


    一、简介

    Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
    在使用Git前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。
    Git 各平台安装包下载地址为:http://git-scm.com/downloads
    安装过程可以参考菜鸟教程:https://www.runoob.com/git/git-install-setup.html
    国内访问码云速度快一点,所以使用https://gitee.com/作为远程仓库。

    二、基本场景Git用法

    基本场景:

    1. 使用git init初始化一个Git仓库。
    2. 使用git add将文件添加到暂存区。
    3. 使用git commit将文件提交到本地仓库。
    4. 创建远程仓库并使用git remote add origin命令添加远程仓库地址。
    5. 使用git push命令将本地仓库代码推送到远程仓库。
    6. 使用git pull命令可以将远程仓库的文件拉取到本地仓库。

    示例:

    git init  #初始化仓库
    touch README.md #创建README.md文件
    git add README.md  #将README.md文件提交到暂存区
    git commit -m "add README.md" #将暂存区的文件提交到本地仓库
    
    • 1
    • 2
    • 3
    • 4

    接下来在gitee创建仓库:
    在这里插入图片描述
    仓库创建完成后,复制仓库地址:
    在这里插入图片描述
    接下来将远程仓库地址添加到Git本地仓库,然后将本地Git仓库代码推送到刚刚创建的远程仓库中。

    git remote add origin https://gitee.com/L1692312138/git-demo.git #添加远程仓库
    git push -u origin "master"   #将本地仓库的代码推送到远程仓库
    git pull   #从远程仓库拉取代码
    
    • 1
    • 2
    • 3

    以上就是Git仓库最简单的使用场景,接下来会详细介绍一下Git命令的用法。

    三、工作区、暂存区、本地仓库、远程仓库

    在使用git init命令初始化一个仓库或者使用git clone克隆一个仓库后,文件夹下的文件就会被Git管理。
    仓库可以分四种区域
    工作区(workspace):就是当前这个项目目录或者文件夹下的所有文件。
    暂存区(stage/index): 在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index),在使用git add命令后,文件被添加到暂存区。
    本地仓库(版本库):工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库,可以当做是本地Git仓库,在使用git commit命令后,文件被提交到版本库。
    远程仓库githubgitee等网站所提供的仓库,也可以是个人或公司搭建,使用git push命令将本地仓库文件推送到远程仓库上。

    被Git所管理的文件会有四种状态
    Untracked: 未跟踪,文件还没有加入到git库,还没参与版本控制。
    Unmodified:未更改,文件已经加入git库中,但是还没有被修改过。
    Modified:已更改,文件被修改了。显示为蓝色文件。
    Staged: 已暂存,在使用add命令后,文件会被添加到暂存区,显示为红色文件。

              add              commit                  push
    workspace ---> staging area ----> local repository ---->remote repository
    工作区           暂存区                   本地仓库            远程仓库
    
    • 1
    • 2
    • 3

    当执行 git add 命令时,文件会被添加到暂存区。在IDEA中显示为红色文件。
    当执行git commit命令时,文件会被提交到版本库。在IDEA中显示为绿色文件。
    当执行git push命令时,文件会被推送到远程仓库中。
    此外,在IDEA中,如果文件被删除,在commit提交时显示为灰色;
    在这里插入图片描述

    四、常用命令用法

    git clone

    git clone [url] 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。

    git clone https://gitee.com/L1692312138/git-command.git # 将远程Git仓库下载到本地
    
    • 1

    git add

    git add 命令可将该文件添加到暂存区。
    添加一个或多个文件到暂存区:git add [file1] [file2] ...
    添加指定目录到暂存区,包括子目录:git add [dir]
    添加当前目录下的所有文件到暂存区:git add .

    git commit

    git commit 命令将暂存区内容添加到本地仓库中。
    git commit -m [message] : message是备注信息。
    git commit [file1] [file2] ... -m [message]:可以提交指定文件到本地仓库。
    git commit -am [msg] : 表示修改后的文件,不需要执行git add命令,可以直接提交。

    git status

    git status 命令用于查看在你上次提交之后是否有对文件进行再次修改。
    可以使用 -s 参数来获得简短的输出结果。
    在这里插入图片描述

    git diff

    git diff 命令比较文件的不同,使用--stat参数可以显示摘要。
    git diff:可以比较工作去和暂存区文件的差异
    在这里插入图片描述
    在这里插入图片描述

    git diff [commitID] [commitID] :可以比较两次commit提交记录之间的不同
    在这里插入图片描述

    git diff [branchName] [branchName] :可以比较两个分支之间的不同

    git rm

    git rm 命令用于删除文件。
    git rm 删除文件有以下几种形式:

    1. 将文件从暂存区和工作区中删除;
    2. 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
    3. 如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可;
    4. 可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件;
    git rm <file>
    git rm -f <file> # 强制删除
    git rm --cached <file> # 把文件从暂存区域移除,但仍然保留在当前工作目录中
    git rm –r <dir>  # 文件夹递归删除
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    如果暂存区文件已经被修改,删除则需要强制删除:

    在这里插入图片描述

    将文件从暂存区域移除,但仍然保留在当前工作目录中:
    在这里插入图片描述

    git mv

    git mv 命令用于移动或重命名一个文件。

    git mv [file] [newfile]
    
    • 1

    在这里插入图片描述

    git log

    git log 查看历史提交记录。
    使用--oneline 选项来查看历史记录的简洁的版本。
    使用--graph 选项,查看历史中什么时候出现了分支、合并。
    author参数可以查找指定用户的提交日志。
    如果要指定日期,可以执行几个选项:--since--before,也可以用 --until--after,使用--no-merges 选项可以隐藏合并提交。

    git log
    git log --oneline
    git log --graph --oneline  
    git log --author=LiuShihao --oneline -5 
    git log --oneline --before={3.weeks.ago} --after={2022-11-07} --no-merges
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    git blame

    如果要查看指定文件的修改记录可以使用 git blame 命令

    git blame <file>
    git blame master.txt
    
    • 1
    • 2

    在这里插入图片描述

    git remote

    git remote 命令用于在远程仓库的操作。

    git remote -v #显示所有远程仓库
    git remote show [remote] #显示某个远程仓库的信息
    git remote add [shortname] [url]# 添加远程版本库
    git push -u origin master # 将本地仓库代码推送到远程仓库
    git remote rm name  # 删除远程仓库
    git remote rename old_name new_name  # 修改仓库名
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    git fetch

    git fetch 命令用于从远程获取代码库。

    git fetch origin
    git merge origin/master # 如果远程仓库有更新,可以使用merge命令进行合并
    
    • 1
    • 2

    在这里插入图片描述

    git pull

    git pull 命令用于从远程获取代码并合并本地的版本。

    git pull
    git pull origin
    git pull origin master:brantest # 将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。
    git pull origin master #如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
    
    • 1
    • 2
    • 3
    • 4

    git push

    git push 命令用于从将本地的分支版本上传到远程并合并。
    如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数:

    git push origin master #将本地的 master 分支推送到 origin 主机的 master 分支
    git push --force origin master # 强制推送到远程仓库
    
    
    • 1
    • 2
    • 3

    git checkout

    git checkout [branchName] :表示切换分支
    git checkout --file [fileName] :表示会用暂存区的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。
    git checkout HEAD : 表示会用 HEAD 指向的 master 分支中的文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

    git tag

    如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。
    使用-a选项会添加一个标签的注解,可以当做备注,推荐使用。
    使用git log --decorate --oneline命令就可以看到打的标签。
    也可以给之前版本追加标签,只需要在最后加上版本号即可git tag -a v0.9 63007d5
    可以使用git tag命令查看所有的标签。

    git tag v1.0
    git tag -a v1.0  
    git tag -a v0.9 63007d5  # 给指定版本打标签
    git log --decorate --oneline -5 #查看带标签日志
    git tag  # 查看所有标签
    git tag -d v1.1 # 删除标签
    git show v0.9 # 查看该版本修改的内容
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    Git有commit,为什么还要引入tag?
    “请把上周一的那个版本打包发布,commit号是6a5819e…”
    “一串乱七八糟的数字不好找!”
    如果换一个办法:
    “请把上周一的那个版本打包发布,版本号是v1.2”
    “好的,按照tag v1.2查找commit就行!”
    所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。

    五、分支管理 Branch

    使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

    5.1 创建分支

    使用git branch (branchname) 可以创建一个分支。
    使用git branch可以查看本地所有分支。
    在这里插入图片描述

    5.2 切换分支

    使用git checkout (branch)命令切换分支。
    使用git checkout -b (branchname) :表示创建分支并立即切换到新分支。
    在这里插入图片描述

    5.3 删除分支

    使用git branch -d (branchname)命令删除分支:
    在这里插入图片描述

    注意:在当前分支上不能删除当前分支:
    在这里插入图片描述

    5.4 合并分支

    使用git merge命令可以进行分支合并,示例:
    首先我们创建出dev分支,切换到dev分支并修改text.txt文件,修改后commit提交。然后切换到master分之,执行git merge dev命令,即:将dev分支合并到当前分支(master),最后我们就可以在master分支看到在dev分支修改的内容。

    git checkout -b dev #创建并切换到dev分支
    git commit -m "create dev branch & update text.txt" # 在dev分支修改test.txt并commit提交
    git checkout master # 切换回master分支
    git merge dev #将dev分支合并到master分支
    git branch -d dev # 合并完成之后将dev分支删除
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    六、撤销与回退

    有关于Git的撤销与回退,一般就以下几个核心命令:

    1. git checkout
    2. git reset
    3. git revert

    6.1 git checkout

    1. 未添加到暂存区的文件(但是是已被追踪的文件)(还未使用git add命令),可以使用git checkout命令将文件已修改的部分全部撤销(上次已经提交的部分不会被撤销)。
    2. 已经添加到暂存区的文件(已经使用了git add命令),也可以使用git checkout命令进行撤销,是在使用了git add 命令之后改变的内容会被撤销。
    git checkout 1.txt # 撤销1.txt所有修改的东西
    git checkout . # 撤销当前目录所有操作
    
    • 1
    • 2

    6.2 git reset

    git reset HEAD --file #回退暂存区里的某个文件,回退到当前版本工作区状态
    git reset –-soft 目标版本号 #可以把版本库上的提交回退到暂存区,修改记录保留
    git reset –-mixed 目标版本号 #可以把版本库上的提交回退到工作区,修改记录保留
    git reset –-hard  #可以把版本库上的提交彻底回退,修改的记录全部revert。
    
    • 1
    • 2
    • 3
    • 4
    1. 如果代码已经添加到暂存区(已经使用了git add命令),但是还未commit提交,可以回退:
      git reset HEAD file #取消暂存,文件内容不变,只是文件状态改变
      git checkout file #撤销修改,在使用add命令之后的内容的改变会被撤销
      
      • 1
      • 2
    2. 代码已经git commit了,但是还没有push,想要退回:
      git log --oneline -3 # 查看版本号
      git reset --hard 67f2414  #回退到67f2414版本
      
      • 1
      • 2
      另外,也可以使用git rm -r --cached 1.txt 命令,将文件从本地仓库回退到工作区,停止追踪文件,文件内容不变。
    3. 如果代码已经push到远程仓库了,也可以使用reset回滚:
      git log --oneline -3
      git reset --hard 9c5be25
      git push origin HEAD --force
      
      • 1
      • 2
      • 3

    在这里插入图片描述

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

    注意:谨慎使用 –-hard 参数,它会删除回退点之前的所有信息。
    HEAD 说明:

    HEAD 表示当前版本
    HEAD^ 上一个版本
    HEAD^^ 上上一个版本
    HEAD^^^ 上上上一个版本
    
    可以使用 ~数字表示
    HEAD~0 表示当前版本
    HEAD~1 上一个版本
    HEAD^2 上上一个版本
    HEAD^3 上上上一个版本
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    git reset HEAD 命令用于取消git add 添加到暂存区的文件,内容不会改变。
    在这里插入图片描述

    6.3 git revert

    如果代码已经推送到远程的话,还可以考虑revert回滚:

    git log --oneline -4 
    git revert -n 62d6ac3
    
    • 1
    • 2

    附录

    https://www.runoob.com/git/git-basic-operations.html
    https://www.cnblogs.com/konglxblog/p/15216646.html

  • 相关阅读:
    3. MyBatis与spring结合原理
    数据结构~~~~ [队列] ~~~~
    Java基础语法
    代码随想录算法训练营第五十三天| 309.最佳买卖股票时机含冷冻期 、714.买卖股票的最佳时机含手续费
    2022-c纯css3-霓虹灯-button
    彻底弄懂 Java 线程池原理
    rust 创建多线程web server
    【机器学习】李宏毅——Flow-based Generative Models
    if 语句 python
    如何提升网站图片的加载速度呢?
  • 原文地址:https://blog.csdn.net/DreamsArchitects/article/details/127766803