Git学习笔记(一)初遇

简介: Git学习笔记(一)初遇

引言

那是我在做毕业设计的时候,使用IDEA作为开发工具,我对系统做了比较大的改动,然后系统又跑不起来了,当时在宿舍写代码的我只想扇我自己的脸,我就想到了能不能将系统回退到正常运行的版本呢,但是我又没有使用版本控制工具,不过还好IDEA自带了一个文件历史记录,我又回退正常版本了。我想这就是版本控制工具的第一个功能吧,版本回退。

image.png

除了版本控制之外,Git还是一个团队协作工具,什么意思呢?在企业的开发过程中,我们都是不同的人开发不同的功能,但是这又是一个系统上面的东西,我们不可能使用U盘这种初级的方式将自己开发完成的功能拷到主系统上去。我们就可以使用Git将开发完成的代码提交到正在开发的系统中。

是啥

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

Git是一个免费开源的分布式版本控制系统,被设计用来管理小型到大型的项目。
复制代码

分布式 VS 集中式

  • 集中式版本控制工具需要一个中央服务器。代码最终被提交这里。
  • 分布式版本控制系统没有"中央服务器的概念"。每个人电脑都有一个完整的版本库。
    那可能有人就会问了,那我的代码提交到哪里呢? 只存在本地吗? 既然是多人协作,我们就需要指定一台服务器作为总仓库。每个人将自己所做的提交到这个服务器上,每天从这个服务器上拉取别人的修改。

那GitHub是?

GitHub是一个代码托管网站。开发者将自己的代码放到GitHub上。
复制代码

有啥用

  我们想象一下,开发团队不使用版本控制工具或者没有版本控制工具会怎么样呢?

  一个团队不同的人开发的功能,该怎么整合在一起呢?好,你通过复制,然后开发人员如何获取最新的代码呢?

   假定公司设定了这么一个岗位专门用来合并代码,我们称之为代码合并官吧! 代码合并官每天早上把最新的代码通过邮件再发给各个开发者。然后开发者再把用邮件中的最新代码覆盖自己的。

  然后某天,CTO(首席技术官)改错了一个东西,想想看最新的代码,然后想看看之前的是什么样的。代码合并官表示,不用担心,你发的代码我都按天建文件夹,稍等一下,我给你找找。

  上面的场景一想就很恐怖。程序员们不会让上面的场景出现,因为上面的工作是重复的,要知道复用可是我们的追求。

  版本控制工具可以做到,将开发者的代码汇集在一起,让开发者每天拉取到最新的代码。还可以记录文件历史,假如的误操作,把正确的代码改成错了,你就可以回退到正常的版本。又比如吧,项目经理决定兵分两路,一路接着开发新的功能,一路修复bug。你就可以做一个分支,在一个分支上开发新的功能,在另一个分支上修复bug。修的差不多了,然后把两个分支合并在一起。

总结一下版本控制工具有啥用: 
复制代码
  • 整合代码(将各个开发者的代码汇集在一起),高级一点的名字叫团队协。
  • 记录文件历史(让你有后悔药可以吃)。版本控制
  • 做分支(branch),分支大体上有下两个作用:
  • 一路修bug,一路做新的功能。
  • 代码要区分为个人版、企业版。个人版和企业版相同功能做完之后,做一个分支出来,团队就被切分为两组,不同的团队在不同的分支上开发。

怎么用?

要想用,你需要首先要下载Git。下载安装不做介绍。网上有详细的教程。

git基础概念

在学怎么用之前,我们首先介绍Git的一些基础概念。

  • 工作区(workspace): 就是你存放代码的地方。(要执行Git init指令,产生.git文件夹之后)
  • 暂存区(index): 工作区未被Git所控制的文件,在被控制之后就转到暂存区
  • 本地仓库: 暂存区的文件,假定为a.txt,执行git commit a.txt -m'测试',就转入本地仓库
  • 远程仓库: 处于本地仓库的文件, 执行git push -u  推送到远程仓库

image.png在流程图中已经出现了一些Git的命令:

  • git add
  • git commit
  • git checkOut
  • git pull
  • git push
  • git fetch/clone

后文会将对这些命令进行详细的介绍.

git的基本操作

账号配置

设置邮箱、账户名:
范围: 
  --global              use global config file  (给整个计算机一次设置,给当前计算机上的所有用户)
  --system              use system config file  (常用,给当前用户一次性设置)
  --local               use repository config file (给当前项目一次性设置) 
从范围上看,global > system > local  
但是小范围的会覆盖掉大范围的。
复制代码

为什么要设置呢?

记录文件的提交历史,谁提交的,什么时候提交的。 我们称之为日志。
注意只有将文件从暂存区推进本地仓库才会有日志。
复制代码

怎么设置呢?

git config --范围 user.name '你的用户名'
  git config --范围 user.email '你的邮箱'
复制代码

例子:

git config --system user.name  'fish' 
 git config --system user.email 'fish@qq.com'
复制代码

在哪里可以看见设置的账户和邮箱呢?

local 范围 :

在.git 文件夹下的config文件中。
复制代码

system

进入根目录下, 打开 git bash here 后, 执行cd ~命令.
下面会有一个.gitconfig 文件。
里面就记录了你设置的账户和密码
复制代码

add commit

这里我新建一个文件叫gitstudy,

image.pngimage.png

git status:  查看工作区 暂存区的状态

工作区的文件有以下几种状态:

unstatge:  未纳入版本控制,处于工作区
 statge: 加入版本控制,进入暂存区
 commited: 进入本地仓库
复制代码

我在gitstudy下新建一个文件,不执行任何指令,那么该文件就处于unstatge。

例子:

image.png

staged: 纳入版本控制
    在 git bash here 中执行: git add 文件全名 
    代表把指定的文件加入版本控制中,也就是放入暂存区。
    git add . 代表将所有的untracked的文件都加入暂存区。
 平时用git bash here用习惯了,Git还提供了图形化界面,虽然很简陋。 
复制代码

image.pngimage.png

执行git add d.txt 将文件推送至暂存区image.png

执行git status 查看工作区、暂存区的状态

网络异常,图片无法展示
|

执行git add . 将所有不在暂存区处于工作区的文件推进暂存区

image.png

我们用git status 查看工作区、暂存区的状态

image.png]

我们发现untracked files 就没有了。

image.png

进入暂存区的命令有两个:

  • git add 文件全名 将处于工作区不在暂存区的指定文件加入到暂存区
  • git add .  将处于工作区不在暂存区的所有文件加入到暂存区

将暂存区的文件推至工作区的命令也有两个:

  • git commit 文件全名 -m'每次推本地仓库的注释'
        将处于暂存区不在本地仓库的指定文件推进至本地仓库
  • git commit . -m'每次推进本地仓库的注释'
       将处于暂存区不在本地仓库的所有文件推进至本地仓库

看日志

最简单的命令就是: git log 这个命令列出所有的提交记录。image.png

image.png

commit 5663dd0764d5ddd2f645737437f22c447ab772a7

commit 后的字符串是用加密算法(SHA1(不叫sha yi,叫sha one) 算法)产生的,用来标识每一次提交操作。

可能有人要问了,为什么你不用第几次提交了标识呢?

软件开发过程中大家是一起干活的, 假若有两个人的某一次的提交次数是相同的,那远程仓库怎么标识这两个提交呢. 所以还是用加密算法产生提交标识更为稳妥

那可能有人还是要问了? 我只想看最近几次。我只想看最近三次该怎么办呢? git log -次数: 查看最新的三次提交image.png

git log --graph

image.png

  • 那我一不小心把注释打错了怎么办?
    没关系可以重写。

git commit --amend -m'注释信息'  覆盖最近一次的提交信息

例子:image.png

push 推送

如何将你的代码推给别人,或者推到服务器上呢?
复制代码
  • 假如你是拉公司的代码,拉下来的代码中就有.git文件夹。该文件夹中就有远程服务器的信息。
    你将修改的文件从暂存区推进至本地仓库。后 git push -u 就可以了。
  • 假如你想把你的代码推给别人
    你就需要设定推送的目的地。

执行下面的命令:

git remote add origin 远程仓库的地址
复制代码

我的远程仓库地址是:

git@github.com:CXK6013/studyGit.git
复制代码

所以我执行的是:

git remote add origin  git@github.com:CXK6013/studyGit.git
复制代码

origin 后面的就代表目的地,最后一块肯定是项目名.git这种形式

一台计算机上的文件夹不是什么都不做就成为了远程仓库。 至于怎么使一台计算机上的文件夹成为远程仓库。那是后文讨论的问题了。

然后执行 git push 就可以将工作区的代码推送到远程仓库了。

删除 回退

误提

假如我误提交了一个文件呢。 没关系可以是删。
复制代码

删除的两种方式:

直接调用操作系统的删除。
复制代码

image.pngimage.png

Changes not staged for commit,怎么理解这句话呢,not staged 没有暂存。 没暂存,也就是不在暂存区。还处于工作区。我们需要将这个删除命令也进入到暂存区,本地仓库区.

image.png

changes to be commit: 删除操作没有到本地仓库区。

我们commit一下,这个文件就被删除了。

image.png

Your branch is ahead of 'origin/master' by 1 commit. 这句话是说,我本地的分支不一致。我本地的比较新。 建议我执行git push。

调用git命令进行删除:
复制代码

image.pngimage.png

changes to be commited 也就是说命令已经到暂存区,还没有到工作区。

我们在执行 git commit . -m'删除本地仓库的文件'。工作区、暂存区、本地仓库区就保持一致了。image.png

误删

那假如我误删了呢?

关系不是很大,操作系统上有撤销操作,版本控制工具上也有后悔药可吃.    
复制代码

那怎么吃这个后悔药呢?

image.png

reset: 调整; 重新设置; 重新安置; 将…恢复原位.

注意这个恢复原位

image.png

相关文章
|
4月前
|
Linux 网络安全 开发工具
Git学习笔记(一):基础与应用
本文档详细介绍了如何将本地项目关联到Gitee上的空仓库并上传代码,以及如何验证本机与Git服务器的SSH连接。同时,还概述了Git的基本概念、安装步骤、初始配置、常见命令及如何配置多个SSH-Key,适用于初学者快速上手Git操作。
156 51
Git学习笔记(一):基础与应用
|
7月前
|
安全 Linux 开发工具
Git学习笔记
这篇文章是一份Git学习笔记,涵盖了Git的基本命令、工作流程、项目搭建、文件状态管理,以及如何使用码云和IDEA进行版本控制操作。
Git学习笔记
|
10月前
|
Shell 网络安全 开发工具
Git学习笔记
Git学习笔记
152 1
Git学习笔记
|
8月前
|
存储 安全 开发工具
Git学习笔记 三个区域、文件状态、分支、常用命令
理解并掌握这些概念和命令,对于有效地使用Git来管理项目源代码是至关重要的。Git的强大功能支持了复杂的开发工作流程,而良好的Git实践能够极大地提高团队的协作效率。随着实践的增多,对于Git更深层次的功能和最佳实践的理解也会随之增长,进一步加强你作为一个软件开发者的能力。
98 0
|
Linux 网络安全 开发工具
Git学习笔记
Git学习笔记
115 0
|
Linux 网络安全 API
git常用命令学习笔记
git常用命令学习笔记
87 0
|
程序员 开发工具 git
搭建博客可能会用到的 Git 命令|学习笔记
搭建博客可能会用到的 Git 命令|学习笔记
|
缓存 Shell 开发工具
【BackEnd--Git】学习笔记(实战开发常用技巧)
Git学习笔记(实战开发常用技巧)
144 0
|
算法 安全 Linux
git第n次学习笔记
git第n次学习笔记
|
开发工具 git 索引
Git学习笔记-详细使用教程
Git学习笔记-详细使用教程
Git学习笔记-详细使用教程