git 学习笔记(一)git基本操作

svn简介

SVN是Subversion的简称,目前是Apache项目底下的一个开放源代码的版本控制系统,SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑,所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。
在这里插入图片描述

svn优点
  1. 集中式管理,管理方式在服务端配置好,客户端只需要同步提交即可,使用方便,上手快。
  2. 在服务端统一控制好访问权限,代码安全管理可控度高。
  3. 所有的代码已服务端为准,代码一致性高。
svn缺点:
  1. 服务器单点故障(中央服务器出故障,那么所有内容就gameover)
  2. 容错性差(svn需要联网,一旦中央服务器宕机,则该工具就没办法用了)
  3. 管理分支比较繁琐

git

git的历史

由于为Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间),在 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。 这样大神 Linus Torvalds就开始缔造21世纪最伟大的版本控制工具git。

git的架构

Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS) ,分为两种类型的仓库:本地仓库和远程仓库。
在这里插入图片描述
本地仓库:是在开发人员自己电脑上的Git仓库
远程仓库:是在远程服务器上的Git仓库
Clone:克隆,就是将远程仓库复制到本地
Push:推送,就是将本地仓库代码上传到远程仓库
Pull:拉取,就是将远程仓库代码下载到本地仓库

git工作流程

在这里插入图片描述
1.从远程仓库中克隆代码到本地仓库
2.从本地仓库中checkout代码然后进行代码修改
3.在提交前先将代码提交到暂存区
4.提交到本地仓库。本地仓库中保存修改的各个历史版本
5.修改完成后,需要和团队成员共享代码时,将代码push到远程仓库

git的下载和安装

小猿此处以windows为例。

git的下载

上官网下载实在是太慢,小猿打算从华为镜像或者阿里镜像下载,小猿选择的是华为镜像,可能需要账号,没有账号的童鞋可能需要注册一下。
在这里插入图片描述
小猿电脑是64位的,选择下载如下:
在这里插入图片描述
安装时可以疯狂的点击下一步,选择默认。
在这里插入图片描述

git托管代码

Git中有两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。
由于github访问速度受限,在国内比较流行的是码云,以下小猿开始着重介绍码云和git的采用方式。
小猿已有码云账号,也有对应的java学习仓库
在这里插入图片描述
小猿当前的地址是:
https://gitee.com/xueshanfeitian/my-java-learning-rep.git

git本地操作常用的命令

环境配置

安装完Git后首先要做的就是配置环境变量,在任意目录下打开git.bash输入命令。

  1. 查看环境配置
$ git config --list

在这里插入图片描述
2.配置用户名和邮箱 小猿需要设置的命令为feitian,

git config --global user.name "feitian"
git config --global user.email "feitian@189.cn"

再次查看环境配置
在这里插入图片描述

获取git仓库
在本地初始化仓库

在本地某个盘建立一个仓库文件夹
在这里插入图片描述
在git bash 命令终端中切换到兴建仓库文件夹的目录下,执行

 git init

在这里插入图片描述
在这里插入图片描述
说明本地仓库初始化成功。

从远程仓库克隆

进入到将要放置克隆仓库的文件夹
在这里插入图片描述

 git clone https://gitee.com/xueshanfeitian/my-java-learning-rep.git

仓库克隆完毕
在这里插入图片描述

git工作目录、暂存区以及版本库
版本库

上述所看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等

工作目录

包含.git文件夹的目录就是工作目录,主要用于存放开发的代码

暂存区

git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方。

三种目录之间的关系

在这里插入图片描述

git工作目录下文件的两种状态

untracked 未跟踪(未被纳入版本控制)
tracked 已跟踪(被纳入版本控制)

  1. Unmodified 未修改状态
  2. Modified 已修改状态
  3. Staged 已暂存状态

这些文件的状态会随着我们执行Git的命令发生变化
小猿在刚刚克隆的仓库中添加几个文件并修改README.MD,查看各个we文件的状态。

git status

在这里插入图片描述

将未跟踪文件提交到暂存区

其中hellowworld为未跟踪状态,而readme.md为已修改状态,那么如何将未跟踪的文件加入到跟踪区,这就要求我们将此文件加入暂存区。

git add helloworld.txt

在这里插入图片描述
将已跟踪文件变成未跟踪状态文件。

git restore --staged helloworld.txt

在这里插入图片描述

暂存文件提交到版本库

目标文件提交到版本库必须先要放到暂存区已修改文件或者未跟踪文件都是没有放入暂存区,首先需要放入暂存区。

git add README.md
git add helloworld.txt

在这里插入图片描述
小猿将两个文件都进行提交

git commit README.md helloworld.txt  -m  "update introduction"

再次查看
在这里插入图片描述
此处值得大家注意的是如果不加-m 默认情况下git会进入vi编辑器j进行日志手写。

git删除文件

如小猿现在需要删除helloworld.txt,在git中输入命令

git rm helloworld.txt

当执行rm命令操作的暂存区,后续还需要提交才能真正删除,

git commit -m "deleted"

在这里插入图片描述
如果直接从仓库中删除了文件,这种情况就相当于越过暂存区操作,所以解决方案是先加入暂存区,再进行提交,一般情况下不建议这么做。

git add  xxx
git commit -m "delete"
将文件添加至忽略列表

在实际开发过程中有些文件可能不需要我们进行版本控制,也不希望它们总出现在未跟踪文件列表,这时我们需要建立忽略列表。通常建立忽略列表一般包含日志文件,编译器产生的编译文件等,忽略列表一般命名为: .gitignore。下面是忽略列表编写的一些规则:

# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf

如:我们需要忽略Account.class 和User.class,这时我们就需要建立忽略列表,注意在工作目录下无法直接创建.gitignore文件,我们需要借助git终端。
使用touch命令或者直接vim命令都可以,小猿直接使用vim编辑器命令,vim编辑器会默认创建文件。

vim .gitignore

加入 *.class
忽略效果明显,.class文件不再提示未提交到暂存区
在这里插入图片描述

git 查看日志
git log

git 远程仓库设置

查看当前仓库是否存在远程仓库

查看远程仓库基本信息

git remote -v

若要进一步查看更加详细的信息,则采用如下命令

git remote show origin

在这里插入图片描述

添加远程仓库

添加远程仓库的本质是将本地仓库和远程仓库之间相互建立关系,其命令如下:

git remote add origin https://gitee.com/xueshanfeitian/gitrepository.git

在这里插入图片描述
当然本地仓库也可对应多个远程仓库,及本地仓库可以与多个远程仓库建立关系,但通常这么做没有意义。

移除远程仓库
git remote rm

此条命令的本质是移除远程仓库与本地仓库的关系,并不是真正的直接删除远程仓库。

从远程仓库中抓取和拉取
git fetch
git fetch

在这里插入图片描述
此处要注意的是git fetch 命令是将远程仓库中的内容抓取后以二进制的方式存在objects目录下面,并没有自动合并到工作目录中来。
在这里插入图片描述
此时查看并没有源文件
在这里插入图片描述
如要看到全部源文件,需要做的是合并命令。

git merge origin/master

在这里插入图片描述
发现所有文件均合并了

git pull
git pull origin master

git pull 相当于git fetch和git merge两个命令
下面是采用git pull 发生错误的情况,对于这种情况是用于本地仓库中已经含有其他文件信息,git认为其中存在错误,故而报错
在这里插入图片描述
其解决方案是加入允许不相关历史参数,–allow-unrelated-histories
即输入命令

git pull origin master --allow-unrelated-histories 

执行命令后会进入日志界面,该界面不需要修改,直接wq!退出即可。
在这里插入图片描述

推送本地代码到远程仓库
git push origin master

首先修改python.txt 文件,然后将此文件推送到远程仓库。
在这里插入图片描述
开始推送
在这里插入图片描述
推送成功
在这里插入图片描述

git 分支

分支的目的

基于不同的需求,就需要根据基础代码创建不同的分支,分支的

查看仓库分支
//查看远程仓库分支
git branch -r
//查看本地仓库分支
git branch 
//查看所有分支 包含远程分支和本地分支
git branch -a
git建立分支
//建立b1分支
git branch b1  
切换分支
//切换到b1分支
git checkout  b1

在这里插入图片描述

将分支推送远程仓库
//将b1推送到远程仓库
git push origin b1

在这里插入图片描述
再次验证:
在这里插入图片描述

合并分支
git merge b1

如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没办法合并它们,同时会提示文件冲突。此时需要我们打开冲突的文件并修复冲突内容,最后执行git add命令来标识冲突已解决。
如两个User.java合并

//1
public  class User{
	private int id;
	private String sex; //estabilish by master
}
//2
public class User{
	public int id;
	public String name;//established by B1
}

分别添加上述文件到b1和master分支
在这里插入图片描述
添加User.java到b1分支的过程再此处略去,和master分支是一样的。
合并分支
在这里插入图片描述
当冲突发生时源文件就被合并为以下文件,我们需要手动解决冲突并提交
在这里插入图片描述
在这里插入图片描述
推送master 分支到远程仓库
在这里插入图片描述
推送b1到远程仓库
在这里插入图片描述
master 远程仓库
在这里插入图片描述
b1远程仓库
在这里插入图片描述

删除远程分支
删除本地分支

如要删除本地分支b1,则删除命令不能在删除目标分支中进行,所以我们需要切换到master分支中进行删除。
一般采用命令:

git branch -d b2

如当本地仓库中某项文件发生变化(提交到版本库)且没有推送到远程分会,则需要用强制删除分支命令。

git branch -D b1

在这里插入图片描述

删除远程分支

在删除本地仓库的同时,进一步需要删除远程仓库的分支,则需要执行命令,在远程仓库删除之前。在这里插入图片描述

git push origin –d  b1

执行命令后
在这里插入图片描述
在这里插入图片描述

git 标签

Git 可以给历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点(v1.0 、v1.2等)。 标签指的是某个分支某个特定时间点的状态。通过标签,可以很方便的切换到标记时的状态,下面小猿来学习git 标签的有关命令。

创建一个标签
git tag v1.0
列出所有标签
git tag
查看标签内容
git show [tag]

在这里插入图片描述

推送标签

推送到远程标签

git push origin v1.0

在这里插入图片描述
在这里插入图片描述
已成功推送。

检出标签
删除分支
删除本地分支
 git tag -d v1.0

在这里插入图片描述

删除远程标签

在这里插入图片描述

先执行删除本地仓库

 git tag -d v3.0

在这里插入图片描述
本地删除完毕,需要将本地删除推送到远程。

git push origin :refs/tags/v3.0

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

TortoiseGit

TortoiseGit是一个开放的GIT版本控制系统的源客户端,TortoiseGit是比较常见的版本控制工具,我们可以采用图形化的界面来进行版本管理。

初始化仓库

在这里插入图片描述

clone远程仓库

在这里插入图片描述

添加到暂存区

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

提交到版本库

在这里插入图片描述

提交到远程仓库
clone远程仓库提交

在这里插入图片描述

本地仓库推送到远程仓库
  1. 新建远程仓库
    2.点击提交

3.配置远程仓库
在这里插入图片描述
4. 点击提交
在这里插入图片描述

拉取仓库

在这里插入图片描述

创建分支

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

切换分支

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

合并分支

切换到master分支,master分支中没有c++.cpp文件,需要合并
在这里插入图片描述
开始操作
在这里插入图片描述
在这里插入图片描述
再次查看,master分支中出现了c++.cpp文件
在这里插入图片描述
至此,小猿已经具备git的基本技能,下一节,小猿将和大家一起学习git和idea的配置使用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值