(一)Git基本使用

文章目录

了解Git基础、Git远程仓库、Git分支、Git标签、Git工作流、以及IDEA使用Git,Git基本命令

一、Git是什么?

Git是一种代码托管技术,在开发中,Git是一种代码托管技术,很多代码托管平台基于Git来实现,例如:版本控制,分支管理

Git是一个开源的分布式版本控制系统

二、Git基础

1.环境配置

安装Git之后首先设置用户名和Email地址

通过以下命令设置信息会保存在~/.gitcinfig文件中(C盘用户)

#设置用户名
$ git config --global user.name "Yolo"
#设置邮箱
$ git config --global user.emal "2451500780@qq.com"

2.本地初始化仓库

代码如下(示例):

#创建tmp目录文件
$ mkdir tmp
#初始化这个目录让Git对这个目录开始版本控制
$ git init

3.文件的两种状态

untracked未跟踪

未跟踪,此文件在文件夹中,但并未加入git库,不参与版本控制,通过 git add 状态变为Staged

tracked已跟踪
  • Unmodified

文件已经入库,未修改,即版本库中的文件快照内容与文件夹中完全一致,这种类型的文件有两种去处,如果它被修改而别为Modified,如果使用 git rm 移出版本库,则成为Untracked文件

  • Modified

文件已经修改,但仅仅是修改,并没有进行其他操作,这个文件也有两种去处,通过 git add 可进入暂存staged 状态,使用 git checkout 则丢弃修改过的,返回unmodify状态,这个 git checkout 即从库中取出文件,覆盖当前修改

  • Staged

暂存状态,执行 git commit 则将修改同步到库中,这是库中的文件和本地文件又变为一致,文件为Unmodify状态,执行 git reset HEAD filename 取消暂存,文件状态变为Modified

注:这些状态会随着我们执行的Git命令发生变化

  • 新建文件---->Untracked
  • 使用 git  add 命令将新建的文件加入到暂存区---->Staged
  • 使用 git commit 命令将暂存区文件提交到本地仓库---->Unmodified
  • 如果对 Unmodified 状态的文件进行修改---->modified
  • 如果对 Unmodified 状态的文件进行remove操作---->Untracked
#创建文件
$ echo "I'am happy" > happy.html
#查看所有命令
$ ll
#简洁输出
$ git status -s
#提交命令、
$ git add

4.文件加入暂存区

#文件加入暂存区
$ git add 文件名
#文件取消暂存区命令
$ git reset 文件名
#把当前所有未跟踪的文件都加入暂存区
$ git add .

5.文件的提交与删除

#文件提交命令
$ git commit -m "提交信息"
  • -m:本次提交了做了什么事,只要简单的文本,中英文都可,能让自己以及别人很快明白
  • 如果不加 -m,则直接进入类似于 vim 编辑,保存退出命令为:wq

  • 执行这个命令的文件必须在暂存区,如果不在则提交不成功
修改commit记录
  1. 把整个.git目录删除(不建议)
  2. 使用 git rebase 命令来改动历史记录
  3. 先把 Commit 用git reset 命令删除,整理后重新Commit
  4. 使用 --amend 参数改动最后一次的Commit(推荐)
    #查看日志文件
    $ git log --oneline
    #修改最后一次日志文件
    $ git commit --amend -m "内容"
    #然后查看已经修改完成
删除文件

删除文件只是删除工作目录下的文件,我们的版本库中还存在,删除整个文件会把这个文件直接放在暂存区

在文件中右击直接删除(状态为红色,暂存区也未删除),

首先 git add .

接着 git commit -m " delete  文件名.后缀"

#删除文件(在git中删除的可以直接恢复)(文件删除暂存区也无但版本库中还存在)
$ git rm 文件名
#直接删除版本库中也无
$ git commit -m "delete 文件名.后缀"
挽救删除的文件或目录
#查询所有文件
$ ls -al
#删除文件
$ rm -rf index.html
#恢复文件
$ git checkout index.html
#删除所有的html文件
$ rm *.html
#删除所有文件全部恢复
$ git checkout . 
 

注:当使用git checkout 命令时,Git会切换到指定的分支,但是如果后面接的是文件名或路径,Git则不会切换分支,而是把文件从.git目录中复制一份到当前的工作目录,更精确的说,这个命令会把暂存区中的内容或文件拿来覆盖工作目录中

注:当使用git checkout . 命令时,不仅可以将删除的文件挽救回来,还能把文件恢复到上一次的Commit的状态,不是所有情况下都能恢复被删除的文件,因为整个Git的记录都是放在根目录下的.git目录中,如果这个目录被删除了,也就意味者历史记录也被删除了,那么删除的文件就不能恢复了

6.文件添加至忽略列

在工作目录中创建一个名为 .gitignore 的文件(文件名是固定的),列出要忽略的文件模式

#创建文件
$ touch .gitignore
#查看所有文件
$ ll -a
#/表示当前文件所在的目录
#忽略public下的所有目录及文件
/public/*
#不忽略/public/assets,就是特例的意思,assets文件不忽略
!/public/assets
# 忽略具体的文件
index.class
# 忽略所有的class
*.class
# 忽略 a.class b.class
[ab].class

注:

  • 匹配规则和Linux文件匹配一样
  • 以斜杠" / "开头表示目录
  • 以星号" * "通配多个字符
  • 以问号" ? "通配单个字符
  • 以方括号" [ ] "包含单个字符的匹配列表
  • 以叹号" ! "表示不忽视(跟踪)匹配到的文件或目录

7.日志记录操作

#查看分支合并图
$ git log --graph
#简写查看所有日志
$ git log  
#压缩一行日志文件
$ git log --oneline
#查看所有执行过的命令
$ git reflog


8.比较文件差异

  • Git技术中如何显示暂存区和工作区文件的差异:$ git diff
  • Git技术中如何对比暂存区和版本库文件的差异:$ git diff --cached

注:

  • -- :标记原始文件
  • ++ :标记新文件
  • @@ :两个不同文件版本的上下文行号
  • - :原始文件删除该行
  • + :原始文件增加一行
示例:

9.还原文件

修改文件三种情况:
  • 只修改了文件,没有任何Git操作
  • 只修改文件,并提交到暂存区(即编辑之后,git add 但没有 git commit -m ...)
  • 修改了文件,并提交到仓库区(即编辑之后,git add 和 git commit -m ...)
第一种:
#新建一个示例txt文件
$ echo "zheng" >hello.txt
#查看文件内容
$ cat hello.txt
zheng
#将文件提交到暂存区
$ git add .
#将内容提交版本库中
$ git commit -m "zheng"
#修改内容
$ vim hello.txt
#恢复之前文件
$ git checkout -- hello.txt

第二种:

  • $ git log --oneline   # 可以省略
  • $ git reset HEAD   # 回退到当前版本
  • $ git checkout -- hello.txt   # hello.txt为文件名

第三种:类似于2

  • $ git log --oneline   # 可以省略
  • $ git reset HEAD^   # 回退上一个版本
  • $ git checkout -- hello.txt   # hello.txt为文件名

git reset 版本号 ---- 将暂缓区回退到指定版本,根据 $ git log --oneline 显示的版本号,可以回退到任何一个版本,也可通过 HEAD 来指定版本。

HEAD 当前版本
HEAD^ 上一个版本
HEAD^^ 上上一个版本


总结

常用Git命令
  • 初始化仓库::git init 用于将当前目录初始化为一个Git本地仓库。
  • 查看状态::git status 查看本地仓库中文件的状态。
  • 添加文件到暂存区::git add 文件名 将文件添加到暂存区,准备提交。
  • 文件取消暂存区命令:git reset 文件名
  • 提交更改:git commit -m "备注" 将暂存区的文件提交到本地仓库。
  • 删除文件: rm -rf  文件名.后缀
  • 恢复文件:git checkout 文件名.后缀
  • 推送更改到远程仓库::git push -u 将本地仓库的更改推送到远程仓库。
  • 拉取远程仓库的更改::git pull --rebase 从远程仓库拉取最新的更改并合并到本地分支。
  • 查看提交历史::git log 查看提交历史记录。
  • 创建并切换分支:git checkout -b 分支名 创建一个新的分支并立即切换到该分支。
  • 删除分支:git branch -d 分支名 删除已合并的分支。
  • 查看远程仓库设置::git remote 查看远程仓库的设置。
  • 远程仓库操作:如git push origin name 推送本地分支到远程仓库,git push origin :heads/name 删除远程分支等。
  • 标签操作:如:git tag name创建版本标签,git tag -d name 删除版本标签。
  • 子模块操作:如git submodule add url path 添加子模块,git submodule init 和 git submodule update 初始化并更新子模块。
  • 克隆仓库:git clone url 从远程仓库克隆项目到本地。

  • 38
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值