【2022-11-08】Git使用(一)

一、Git介绍

# Git简介
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

官网地址为:https://git-scm.com/
    
# Git作用

1 对文件(代码)进行版本管理
2 完成 协同开发 项目,帮助程序员整合代码
	i)帮助开发者合并开发的代码
	ii)如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突

# Git和SVN的区别
1 SVN是集中式版本控制系统,而Git是分布式版本控制系统,这是Git和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。
2 Git把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。
3 Git分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录。
4 Git没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。
5 Git的内容完整性要优于SVN:Git的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

二、Git工作流程

# 工作流程如下:

    1 从远程仓库中克隆 Git 资源作为本地仓库;
    2 从本地仓库中checkout代码然后进行代码修改;
    3 在提交本地仓库前先将代码提交到暂存区;
    4 提交修改,提交到本地仓库;本地仓库中保存修改的各个历史版本;
    5 在需要和团队成员共享代码时,可以将修改代码push到远程仓库。
    
# 注意点:
    """
    1)有红色信息(工作区有内容),就执行 add 
    2)全绿信息(内容全部在暂存区),才执行 commit
    3)只有被版本库控制的代码,才能被监听,所以可以回滚到任何一个版本
    """

三、Git常用命令

3.1 初始化仓库

# 初始化仓库
	git init

3.2 在仓库中新增文件

# 在仓库中新增文件
	touch test.py

3.3 查看仓库状态

# 查看仓库状态
	git status

3.4 配置用户信息

# 配置用户信息
	局部配置---》只针对于当前仓库--》当前仓库.git文件夹下的config中
         git config user.name 'dy12138'
		git config user.email '1652814964@qq.com'
    全局配置---》针对于所有仓库---》 C:\Users\用户文件夹\.gitconfig新建用户信息,在所有仓库下都可以使用
         git config --global user.name 'dy12138'
         git config --global user.email '1652814964@qq.com'

3.5 把工作区内容提交到暂存区

# 5 把工作区内容提交到暂存区
	git add .      # 把工作区所有更改都提交到暂存区
    git add 文件名  # 把工作区当前文件的更改都提交到暂存区    

3.6 把暂存区提交到版本库,不要忘记加注释

# 6 把暂存区提交到版本库,不要忘记加注释
	git commit -m '提交了test.py'

3.7 修改一下test.py ,再提交到本地版本库

# 7 修改一下test.py ,再提交到本地版本库
    git status   # 状态变成了红色
    git add .    # 提交到暂存区
    git status   # 状态变成了绿色
    git commit -m '修改了test.py'
    git status   # 没有变化

3.8 查看版本情况,本地版本库有哪些版本,一个版本有一个唯一id号

# 8 查看版本情况,本地版本库有哪些版本,一个版本有一个唯一id号
    git log     # 详细的显示
    git reflog  # 精简的显示

3.9 修改test.py后,进行回退操作

# 9 修改test.py后,进行回退操作
    git checkout .  # 当前所有的更改都回退,不包含新增的文件

3.10 把123.txt,先提交到暂存区

# 10 把123.txt,先提交到暂存区
    新增123.txt
    git add .
    git status      # 123.txt变绿了
    git reset HEAD  # 123.txt变红了,说明从暂存区拉回到了工作区

3.11 把版本库内容,回退到暂存区

# 11 把版本库内容,回退到暂存区
    git reset --soft 上一个的版本号  

3.12 从版本库拉回到工作区

# 12 从版本库拉回到工作区
    git reset --版本号
    git reset --mix 版本号  

3.13 撤销版本库提交:commit的逆向运算

"""
回滚暂存区已经提交到版本库的操作:
    查看历史版本:
        >: git log
        >: git reflog
    查看时间点之前/之后的日志:
        >: git log --after 2018-6-1
        >: git log --before 2018-6-1
        >: git reflog --after 2018-6-1
        >: git reflog --before 2018-6-1
    查看指定开发者日志
        >: git log --author author_name
        >: git reflog --author author_name
    回滚到指定版本:
        回滚到上一个版本:
            >: git reset --hard HEAD^
            >: git reset --hard HEAD~
        回滚到上三个版本:
            >: git reset --hard HEAD^^^
            >: git reset --hard HEAD~3
        回滚到指定版本号的版本:
            >: git reset --hard 版本号 (重点)
            >: eg: git reset --hard 35cb292
"""

3.14 git log和git reflog

git log 和git reflog的区别
git log 命令可以显示所有提交过的版本信息如果感觉太繁琐,可以加上参数 --pretty=oneline,只会显示版本号和提交时的备注信息
git reflog 命令可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)

git reset --hard,--mix,--soft的区别
hard ()-> 全部删除,会彻底返回到回退前的版本状态,了无痕迹mixed ()-> 保留工作目录,文件回退到未commit的状态
soft ()-> 保留工作目录、暂存区 ,文件会回退到未 add(未到暂存)的状态

总结:soft是撤销commit的提交,但工作区未提交的更改还是保留;mixed是撤销暂存区的提交,工作区的更改同样也保留;而hard是把工作区、暂存区、commit到仓库的三个版本都回滚了

四、Git过滤文件

在项目中,并不是所有文件都需要保存到版本库中的,例如“target”目录及目录下的文件就可以忽略。在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件或目录。

# 在仓库中新建 .gitignore,在文件中配置
        1)在仓库根目录下创建该文件
        2)文件与文件夹均可以被过滤
        3)文件过滤语法

        """ 过滤文件内容
        文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
        /文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤

        eg:
        a.txt:项目中所有a.txt文件和文件夹都会被过滤
        /a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
        /b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
        *x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
        空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)
        """

五、Git管理luffy项目

# 在项目根路径下输入git init
# 创建 .gitignore
# git add .   
# git commit -m '初始化项目'
# git status 

# 误删文件时,利用回滚操作可以快速恢复
# git log
# git reset --hard 版本号

六、Git分支开发

"""
1.创建分支
>: git branch 分支名

2.查看分支
>: git branch

3.切换分支
>: git checkout 分支名

4.创建并切换到分支
>: git checkout -b 分支名

5.删除分支
>: git branch -d 分支名

6.查看远程分支
>: git branch -a

7.合并分支
>: git merge 分支名
把dev分支合并到master分支:切换到master分支,执行合并dev分支的命令
"""

"""
1)多个开发者都是在一个分支上进行开发,不出意外,该分支一定叫dev(协同开发)
2)如果出现一个特殊任务(敏感任务),与正常业务关系不紧密,甚至可能大的影响正常的dev分支开发,可以依赖dev开一个子分支,进行开发,开发完毕后合并到dev分支,再删除该分支即可
3)所有的开发任务都可以在dev分支上进行(除非公司硬性要求不能直接在dev分支开发,只能在dev子分支开发,测试通过后才能合并给dev)
"""

七、Git远程仓库

我们要协同开发,代码要提交到远程仓库,可以使用gitee,github,gitlab,本文以gitee为例

7.1 创建远程仓库

# 首先注册gitee账号,登陆后,创建仓库

地址:https://gitee.com/dashboard

7.2 Git全局设置

git config --global user.name "dy12138"
git config --global user.email "1652814964@qq.com"

7.3 创建Git仓库

mkdir test
cd test
git init 
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/Fly12138/test.git
git push -u origin "master"

7.4 已有仓库

cd existing_git_repo
git remote add origin https://gitee.com/Fly12138/test.git
git push -u origin "master"   # 把本地的主分支推到origin对应的远程分支

# 首次推送,需要输入gitee的账号和密码
        以后不需要输入用户名密码了
    		在windows的控制面板中找到-------->凭证管理   可以查看删除,也可以修改

7.5 luffy项目上传到远程仓库

# 1 创建远程仓库luffy_api】
# 2 git clone https://gitee.com/liuqingzheng/luffy_api.git  # 把远程仓库内容克隆到本地
# 3 把我们项目的代码,copy到 luffy_api这个文件夹下(.git文件夹不要copy)
# 4 git add .
# 5 git commit -m ‘初始化仓库’
# 6 git push origin master

八、SSH连接远程仓库

8.1 生成公钥私钥

# 打开cmd命令行或者Git Bash命令行,输入以下命令生成公钥私钥
	 ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com"  
   
# 查看生成的公钥

	 cat ~/.ssh/id_ed25519.pub

8.2 添加SSH公钥

8.4 使用SSH连接远程仓库

1 删除origin   
		git remote remove origin
2 查看
		git remote
3 配置成ssh的地址
  	    git remote add origin git@gitee.com:liuqingzheng/luffy_api.git
4 以后直接拉去,提交代码即可
        git pull origin master
        git push origin master

posted @   dy12138  阅读(65)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示