git 基本概念、基本操作

工作区、暂存区、git目录

  1. 工作区是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改
  2. 暂存区是一个文件,保存了下次将要提交的文件列表信息,一般在 Git 仓库目录中。 按照 Git 的术语叫做“索引”,不过一般说法还是叫“暂存区”。
  3. Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,复制的就是这里的数据。

已修改、已暂存、已提交

  1. 已修改表示修改了文件,但还没保存到暂存区
  2. 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中
  3. 已提交表示数据已经安全地保存在本地数据库中(Git 目录)

git 基本工作流程

  1. 在工作区中修改文件。
  2. 将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。
  3. 提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。

获取git仓库

1. 在本地已存在目录中初始化仓库

该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪

cd /c/user/my_project
git init

如果在一个已存在文件的文件夹(而非空文件夹)中进行版本控制,你应该开始追踪这些文件并进行初始提交。 可以通过 git add 命令来指定所需的文件来进行追踪,然后执行 git commit。现在,已经得到了一个存在被追踪文件与初始提交的 Git 仓库

git add *.pom
git commit -m 'initial project version'

2. 克隆现有的仓库

git clone https://github.com/libgit2/libgit2

这会在当前目录下创建一个名为 “libgit2” 的目录,并在这个目录下初始化一个 .git 文件夹, 从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。 如果你进入到这个新建的 libgit2 文件夹,你会发现所有的项目文件已经在里面了,准备就绪等待后续的开发和使用。

如果你想在克隆远程仓库的时候,自定义本地仓库的名字,你可以通过额外的参数指定新的目录名,这会执行与上一条命令相同的操作,但目标目录名变为了 mylibgit

git clone https://github.com/libgit2/libgit2 mylibgit

记录每次更新到git仓库(.git文件夹)

检查当前文件状态

git status
  1. 新clone项目或无修改、无新增文件
    可以用 git status 命令查看哪些文件处于什么状态。 如果在克隆仓库后立即使用此命令,会看到类似这样的输出:
    在这里插入图片描述
    这说明你现在的工作目录相当干净。换句话说,所有已跟踪文件在上次提交后都未被更改过

  2. 新增文件未add至暂存区(未跟踪)
    创建一个新的 README 文件。 如果之前并不存在这个文件,使用 git status 命令,你将看到一个新的未跟踪文件:
    在这里插入图片描述

  3. 跟踪新文件

git add README

此时再运行 git status 命令,会看到 README 文件已被跟踪,并处于暂存状态:
在这里插入图片描述
4. 暂存已修改的文件
此时修改被跟踪的CONTRIBUTING.md文件,执行git status结果如下:
在这里插入图片描述
文件 CONTRIBUTING.md 出现在 Changes not staged for commit 这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区。使用 git add CONTRIBUTING.md 命令提交至暂存区,之后再次执行 git status 命令查看文件状态,结果如下:
此时README、CONTRIBUTING.md文件都已提交至暂存区,一个是新文件、一个是修改文件
在这里插入图片描述
5. 修改已暂存的文件
上面CONTRIBUTING.md文件修改后已提交至暂存区,此时再次修改CONTRIBUTING.md文件,使用git status 命令查看文件状态:
在这里插入图片描述
此时需要重新使用 git add 命令把 CONTRIBUTING.md文件提交至暂存区,再次通过git status 查看文件状态:
在这里插入图片描述

  1. 查看工作区修改文件和已暂存文件内容差异
    test1.txt 已被暂存文件内容为111,此时在工作区又修改test1.txt修改后内容为111222,使用git status查看文件状态:
    在这里插入图片描述
  2. 想要知道工作区文件内容和暂存区快照文件内容的差异,使用git diff命令查看:
    在这里插入图片描述
  3. 查看暂存区文件和git 仓库内容差异(查看将要提交的文件内容的修改)
    使用 git diff --staged/git diff --cached 查看暂存区和git 仓库文件内容的差异:
    暂存区test1.txt的文件内容为111
    在这里插入图片描述

提交更新

1. 直接使用 git commit 命令

输入 git commit 命令后会打开vim编辑器(基于git 编辑器配置,默认是vim编辑器),之后可以输入提交内容的注释信息,提交结果如下:
在这里插入图片描述

2. 使用 git commit -m “提交内容注释”

在这里插入图片描述

3. 跳过使用暂存区域 git commit -a

使用git add将修改文件内容提交至暂存区的操作有时候过于繁琐,可以使用 git commit -a命令把所有修改并且已经被git跟踪的文件全部暂存起来一并提交,因为文件test2.txt没有被git跟踪,所以没有提交:
在这里插入图片描述

移除文件

删除未被git跟踪的文件

直接手动删除(rm test5.txt),因为没有被git跟踪,如果使用git rm test5.txt会提示找不到test5.txt这个文件,也不用使用git add 提交删除操作至暂存区和commit提交至git数据库
在这里插入图片描述

删除被git跟踪的文件

  1. 手动删除test5.txt 文件、使用git add 提交删除操作至暂存区

  2. 或直接使用git rm -f test5.txt 会在工作区删除并把删除操作提交至暂存区
    在这里插入图片描述

  3. git comit 提交删除操作
    在这里插入图片描述

删除暂存区保留工作区文件(文件不想被git跟踪)

git rm --cached test8.txt
在这里插入图片描述

查看提交记录

  1. 直接使用git log
    会按顺序列出所有提交记录,最后提交的在最上面,最开始提交的在最下面
    在这里插入图片描述

  2. 查看最近几次的提交记录 git log -p -2,会显示每次提交的内容变化
    在这里插入图片描述

  3. 复杂例子
    如果要在 Git 源码库中查看 Junio Hamano 在 2008 年 10 月其间, 除了合并提交之外的哪一个提交修改了测试文件,可以使用下面的命令:
    在这里插入图片描述

撤销操作

有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时可以使用git commit --amend 选项的提交命令来重新提交,最终你只会有一个提交——第二次提交将代替第一次提交的结果。

修改上次提交的注释

直接使用git commit --amend,会打开vim编辑器,直接修改提交注释

修改提交内容、漏提文件

工作区修改文件,使用git add 提交修改文件、漏提文件至暂存区,使用git commit --amend提交文件
在这里插入图片描述

撤销暂存的文件

如果你修改了两个文件,并使用git add * 将两个文件的修改都提交至暂存区,此时你想将其中的一个文件从暂存区撤销, git status 命令提示了你该如何操作:
在这里插入图片描述

撤销工作区的修改

git status 也提示了你该怎么做:
在这里插入图片描述

远程仓库操作

查看远程仓库

  1. 如果想查看你已经配置的远程仓库服务器,可以运行 git remote 命令。 它会列出你指定的每一个远程服务器的简写。 如果你已经克隆了自己的仓库,那么至少应该能看到 origin ——这是 Git 给你克隆的仓库服务器的默认名字
    在这里插入图片描述
  2. 也可以指定 -v 参数,会显示远程仓库的简写与对应的url
    在这里插入图片描述

添加远程仓库

使用git remote add 远程仓库别名 远程仓库地址,之后就可以通过别名代替url进行git 操作
在这里插入图片描述
设置别名之后就使用远程仓库别名拉取文件(git fetch 别名)
在这里插入图片描述

从远程仓库抓取

git fetch :这个命令会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
例如:如果你使用 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写。 所以,git fetch origin 会抓取克隆(或上一次抓取)后新推送的所有工作。必须注意 git fetch 命令只会将数据下载到你的本地仓库——它并不会自动合并或修改你当前的工作

在这里插入图片描述
如果你的当前分支设置了跟踪远程分支, 那么可以用 git pull 命令来自动抓取后合并该远程分支到当前分支。
默认情况下,git clone 命令会自动设置本地 master 分支跟踪克隆的远程仓库的 master 分支(或其它名字的默认分支)。 运行 git pull 通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。
在这里插入图片描述

推送到远程仓库

git push :当你想要将 master 分支推送到 origin 服务器时(再次说明,克隆时通常会自动帮你设置好那两个名字), 那么运行这个命令就可以将你所做的备份到服务器:git push origin master
当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。 你必须先抓取他们的工作并将其合并进你的工作后才能推送。

查看某个远程仓库

如果想要查看某一个远程仓库的更多信息,可以使用 git remote show 命令:
这个命令列出了当你在特定的分支上执行 git push 会自动地推送到哪一个远程分支。还有当你执行 git pull 时哪些本地分支可以与它跟踪的远程分支自动合并。

  • Fetch URL 和 Push URL:这是 Git 用来从远程仓库拉取(fetch)和推送(push)数据的 URL。
  • HEAD branch:这是远程仓库当前的默认分支。
  • Remote branches:这是远程仓库的所有分支列表,以及它们是否在本地被跟踪。
  • Local branches configured for ‘git pull’:这是本地配置为可以从远程分支拉取的分支列表。
  • Local refs configured for ‘git push’:这是本地配置为可以推送到远程分支的引用(通常是分支)列表。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值