首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

git笔记-简单入门

  • 25-02-20 14:01
  • 2678
  • 12742
blog.csdn.net

git笔记

git是一个分布式版本控制系统,它的优点有哪些呢?分为以下几个部分

  1. 与集中式的版本控制系统比起来,不用担心单点故障问题,只需要互相同步一下进度即可。
  2. 支持离线编辑,每一个人都有一个完整的版本库。
  3. 跨平台支持
  4. 性能高效

安装和初始化配置

git的安装方式有方式

  1. 带GUI的git,带有图形化界面
  2. 命令行安装

个人比较推荐命令行安装的方式,我采用的是centos 7.x的系统

  • 添加 CentOS/RHEL 7 存储库
sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm

  • 1
  • 2
  • yum安装git
sudo yum install git -y
  • 1

初始化git

  1. 配置用户名
git config --global user.email '你的邮箱'
  • 1
  1. 配置邮箱
git config --global user.email '你的密码'
  • 1

创建仓库

在git中,创建仓库有两种方式

  1. 使用git init
git init
  • 1
  1. git init reop name
git init name
  • 1
  1. 从gitee/github已有的仓库,创建仓库(使用clone的方式)
git clone [email protected]:tmeermer/hnys.git
  • 1

工作区和文件状态

提交流程.png

git有三个工作区域分为工作区,暂存区,本地仓库。现在来简单解释一下这三个区域

工作区:当前的工作目录,所有的操作都在这里进行

暂存区:工作区完成工作后,将产生的文件推送到暂存区,临时保存这些文件。可以理解为一个临时的杂货铺

本地仓库:这里存放最终的成品,也就是仓库。

添加和提交文件

  1. 添加文件
git add filename
  • 1

添加时后面需要添加文件名,也可使用通配符进行批量提交

git  add *.txt 
  • 1

现在该命令就只会提交以txt为后缀的文件了,当然也可以使用.来提交当前文件夹下的所有文件

git add .
  • 1
  1. 提交文件
git commit -m "这是第一次提交"
  • 1
  • -m参数的含义是说明此次提交的主要信息,如果不加上m参数,git会默认打开vim编辑器,来输入提交的信息
  1. 查看提交状态
git status;
  • 1

查看提交状态.png

其中查看提交日志的命令是

git log 
  • 1

也可以加上参数查看简洁的提交日志

git log --oneline
  • 1

提交日志.png

其中有邮箱和名称,都是通过我们之前使用的config命令来配置的。

git reset 回退版本

在日常开发的时候,我们通常都有进行版本回退的需求。就可以使用reset这个命令以下是它的每个参数含义

gitrerset.png

soft参数的含义是:回退到某一次的提交位置,但是工作区和暂存区的内容是保存的

·hard·参数的含义是:回到某一次的提交位置,但是工作区和暂存区的内容全部丢弃

mixed参数介于sort和hard中间,工作区的内容保留但是暂存区的内容删除

soft测试

现在来测试soft参数的命令产生的作用

echo "file1" > file1.txt
echo "file2" > file2.txt
echo "file3" > file3.txt
  • 1
  • 2
  • 3

三个文件.png

现在创建了三个txt的文件并且使用了以下命令进行提交,分为三次

git add file1.txt
git commit -m "第一次提交"
git add file2.txt
git commit -m "第二次提交"
git add file3.txt
git commit -m "第三次提交"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

查看提交结果

三次提交.png

现在是已经有三次提交了,现在回退到第二次提交 7b6b999

git reset --soft 7b6b999
  • 1

回退第二次.png

可以发现真的回退到了第二次提交这个位置,而且暂存区和工作区的文件都没有被丢弃

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在提交的过程中出现了nothing to commit, working tree clean问题,原因是:

暂存区没东西获或者东西都提交到版本库中的当前分支,且工作区

中的文件都被git跟踪了(都git add .)

解决方案:修改需要提交的文件中的任何一处(空格都行),然后重新add,commit。

hard测试

现在来测试hard参数会产生什么样的效果,分为了三个文件夹进行测试

echo "file1" > file1.txt
echo "file2" > file2.txt
echo "file3" > file3.txt
  • 1
  • 2
  • 3

先创建三个txt文件,都进行依次提交

git add file1.txt 
git commit -m "这是第一次提交"
git add file2.txt 
git commit -m "这是第二次提交"
git add file3.txt 
git commit -m "这是第三次提交"

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

hard三次提交.png

进行回退操作,回退至d7a1e8a

hard测试.png

测试发现,暂存区和工作区的文件的file3.txt都被丢弃了。

hard参数的话,需要慎用!

mixed测试

现在来测试mixed参数,还是添加三个txt文件

echo "file1" > file1.txt
echo "file2" > file2.txt
echo "file3" > file3.txt
  • 1
  • 2
  • 3

依次进行提交

git add file1.txt 
git commit -m "这是第一次提交"
git add file2.txt 
git commit -m "这是第二次提交"
git add file3.txt 
git commit -m "这是第三次提交"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

进行回退操作,回退至第二次提交:d02077e

git reset --mixed d02077e

  • 1
  • 2

查看暂存区和目录下的文件状态

mixed测试.png

可以发现工作区的文件还在,但是暂存区的不存在了,此时HEAD指针指向了第二次提交的位置。

git diff 查看差异

当需要查看工作区和暂存区的内容是否有差异时,需要使用以下命令查看差异

git diff
  • 1

git diff.png

需要查看之前任意的几个版本的差异

git diff HEAD~X HEAD
  • 1

也可直接使用来查看最后一个版本之前的差异

git diff HEAD
git diff HEAD~ HEAD
  • 1
  • 2

还可以在后面加上文件名,只查看该文件的差异

git diff HEAD~1 HEAD file2.txt

  • 1
  • 2

每次提交都有一个哈希值,也可以使用这个值来判断这两次提交之间的差异

git diff d7a1e8a 9a857be

  • 1
  • 2

差异.png

使用git rm 删除文件

在使用git时,想删除本地工作区和暂存区的文件时,如果使用Linux的系统命令的话会比较麻烦

rm file1.txt

  • 1
  • 2

rm删除.png

删除完查看状态,可以发现在工作区的文件已显示被删除了,还需要使用以下命令来更新,这里的提交是要告诉暂存区,在下一次提交的时候file1.txt已经被删除了!

git add .
git commit -m "delete file1.txt"
  • 1
  • 2

rm删除后更新.png

但是git给我们提供了 git rm 命令,可以让操作变得更简单

git rm file
  • 1

测试一下、

git rm file2.txt
  • 1

girm删除.png

这次可以发现,暂存区和工作区都同步被删除了,这就是 git rm命令的作用。

gitrm总结.png

.gitgnore忽略文件

这个文件的作用是,让我们忽略掉一些不应该加入到版本库中的文件,这样可以让我们的版本库变得更加干净和更小

忽略文件.png

这是我们需要忽略的文件,以免带来不必要的风险

现在向我们的本地仓库中添加.gitignore文件

echo "acess.log" > .gitignore
  • 1
vim .gitignore
// 添加如下内容
access.log
*.log

  • 1
  • 2
  • 3
  • 4
  • 5

添加到暂存区

git add .
  • 1

提交到本地仓库

git commit -am "full submit"
  • 1

查看效果

忽略文件测试.png

可以发现我们创建的日志文件并没有被提交到缓存区。

如果打算要忽略全部的日志文件,可以参考以下写法

*.log
# 忽略temp目录下的文件
temp/
  • 1
  • 2
  • 3

关联本地仓库和远程仓库

之前演示的都是本地仓库进行的提交和各种测试,但是在实际的生产环境中往往都是需要连接到远程仓库进行提交和各种其他操作。但是先决条件是配置好了ssh密钥,平台可以选择github/gitee。其中gitee相当于国内的gihub,速度较快。

  • 登录gitee设置ssh公钥(已省略,具体步骤可自行查阅)

网址:gitee

  • clone远程仓库到本地,并且同步提交到远程的master分支
git remote -v 查看有没有远程仓库
git init .
git clone [email protected]:tmeermer/c-language-practice-code.git
//注:项目地址形式为:https://gitee.com/xxx/xxx.git或者 [email protected]:xxx/xxx.git
git add .
git commit -m "commit"
git push origin master 
将本地的master分支推送到远程的master分支,如果不存在则会覆盖


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

提交到远程.png

分支管理

git中的分支可以看作一棵树上的枝干,最粗壮的是主分支,其他分支都是从分支。git中的主分支叫做master,通常主分支都是用来发布重大更新的,其他开发和测试的过程都是在开发分支上完成的。测试通过后才会合并进主分支。

  1. git如何查看当前分支?
git branch
  • 1
  1. git如何创建分支?
git checkout dev
git status
  • 1
  • 2
  1. git中如何切换分支?
git checkout branch--name
  • 1
  1. git中如何合并分支?
git memger branch--name
  • 1
  1. git中如何删除无用的分支?
git branch -d branch--name

  • 1
  • 2

git解决合并冲突

现在来模拟两个两个分支修改了同一处的情况,这样会导致git发生合并冲突,从而合并失败

冲突模拟.png

在以上操作中,我们在两个分支中提交了一样的内容,导致了冲突。

git init myproject

# 创建master分支
git checkout -b master

# 向文件内写入内容
echo "This is a line added in feature-branch." > example.txt

vim example.txt
```
"This is a line added in feature-branch."
测试
```
git add .
git commit -m "feat commit "

# 创建feat-branch 分支
git checkout -b feat-branch

vim example.txt
```
"This is a line added in feature-branch."
测试
```
git add .
git commit -m "feat commit "


git checkout master

git merge master

# 合并分支失败
git status 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

git冲突.png

现在解决冲突需要修改

切换到master分支

git checkout master
vim example.txt

找到冲突的行修改的行进行修改

git add .
git commit -m "commit this a master"


切换到feat分支
git checkout feat-branch 
修改冲突的位置
git add .
git commit -m "commit this a feat-branch"

最后合并冲突
git merge master
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

解决冲突.png

以上就是如何解决git分支冲突的方法。

回退和rebase

分支的合并可以使用git merge 命令来进行合并,并且还会保存所有的提交记录。git 还有另一种合并分支的方式就是使用rebase

git rebase feat-branch
  • 1

rebase的翻译叫做变基,在git中我们可以这么理解

首先rebase只能在主分支上提交吗?其实不是的

它可以在任意分支上执行,如果是在main分支上执行

git rebase dev
  • 1

则main上的提交记录会变基到dev分支的末尾

如果是在dev分支上提交

git rebase main
  • 1

dev的两条提交记录都会变基到Main分支上。只是顺序不同罢了

gitrabase.png

注:本文转载自blog.csdn.net的Martinenbule的文章"https://blog.csdn.net/weixin_72686492/article/details/145406240"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

126
软件工程
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top