Git与Gitee

2023-01-10 13:56:27

1.1Git 的优势 分支操作

  1. 大部分操作在本地完成,不需要联网
  2. 完整性保证
  3. 尽可能添加数据而不是删除或修改数据
  4. 分支操作非常快捷流畅
  5. 与 Linux 命令全面兼容

1.2Git流程

在这里插入图片描述

1.3命令行操作

1.3.1本地库(版本库或仓库)初始化

命令:

git init (git add  //使用git管理这个文件  放入暂存区)

效果 $ls -lA (查看以.开始的隐藏文件)

注意:.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡
乱修改。

1.3.2设置签名

用户名:tom Email

地址:goodMorning@qq.com

作用:区分不同开发人员的身份

辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关 系。

命令 :

**项目级别/仓库级别:**仅在当前本地库范围内有效

git config user.name    用户名 
git config user.email   邮箱
  • 信息保存位置:./.git/config 文件

**系统用户级别:**登录当前操作系统的用户范围

git config  *--global*             user.name       tom_glb 

git config  *--global*              user.email        goodMorning_pro@atguigu.com 

  • 信息保存位置:~/.gitconfig 文件

级别优先级

  • 就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别 的签名

  • 如果只有系统用户级别的签名,就以系统用户级别的签名为准

  • 二者都没有不允

$ ls  -lA |less    //less 查看文件后按:q返回

1.3.2Git基本操作

1.3.2.1 状态查看 status

git status  # 查看工作区、暂存区状态

1.3.2.2 添加 add

git add [file name]  # 将工作区的“新建/修改”添加到暂存区 
git add .  # 提交所未定位的文件。
git rm --cached [file name]  # 将文件从暂存区撤回

1.3.2.3 提交 commit

git commit [file1] [file2] ... -m [message]  # 将暂存区的内容提交到本地库  message备注信息
git commit -a -m [message]  # 不经过add 直接添加至本地库

可以直接commit,在不add的情况下

1.3.2.4 查看历史记录 log

git log 

多屏显示控制方式:

空格向下翻页

b 向上翻页

q 退出

git log --pretty=oneline  //一个任务一行显示
git log --oneline		//缩短hash值
git reflog				//显示移动步数

HEAD@{移动到当前版本需要多少步} //head 指针

1.3.2.5 前进后退 reset --hard

  • 基于索引值操作[推荐]

    git reset --hard [局部索引值] 
    git reset --hard a6ace91 
    
  • 使用^符号:只能后退

    git reset --hard HEAD^ 
    

    注:一个^表示后退一步,n 个表示后退 n 步

  • 使用~符号:只能后退

     git reset --hard HEAD~n 
    

    注:表示后退 n 步

    当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。

    当执行 git rm --cached 命令时,会直接从暂存区删除文件,工作区则不做出改变。

    当执行 git checkout . 或者 git checkout – 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。

    当执行 git checkout HEAD . 或者 git checkout HEAD 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

1.3.2.6 reset 命令的三个参数对比

  • –soft 参数

    • 仅仅在本地库(仓库)移动 HEAD 指针

      注:本地库若后退了,会让暂存区与工作区显得往前走了

  • –mixed 参数

    • 本地库移动 HEAD 指针
    • 重置暂存区
  • –hard 参数

    • 本地库移动 HEAD 指针
    • 重置暂存区
    • 重置工作区(云上)

1.3.2.7 删除文件并找回 reset前一个版本

  • 前提:删除前,文件存在时的状态提交到了本地库。
  • 操作:git reset --hard [指针位置] 回退版本
    • 删除操作已经提交到本地库:指针位置指向历史记录
    • 删除操作尚未提交到本地库:指针位置使用 HEAD

1.3.2.8 比较文件差异

  • git diff [文件名] 
    
    • 将工作区中的文件和暂存区进行比较
  • git diff [本地库中历史版本] [文件名] 
    
    • 将工作区中的文件和本地库历史记录比较
  • 不带文件名比较多个文件

名词解释

名词解释:

CRLF: "\r\n", windows系统环境下的换行方式

LF: "\n", Linux系统环境下的换行方式

Linux语法

ctrl+l 清屏 clear

linux语法
$ cat good.txt  # 查看文本内容
$ vim good.txt  # 编辑文件   i插入   ESC wq保存退出

$ pwd(英文全拼:print work directory) # 显示目前的目录
$ mkdir(英文全拼:make directory) # 创建一个新的目录
$ rmdir(英文全拼:remove directory) # 删除一个空的目录
$ cp(英文全拼:copy file) #  复制文件或目录
$ rm(英文全拼:remove) #  删除文件或目录
$ mv(英文全拼:move file) #  移动文件与目录,或修改文件与目录的名称
$ tail -n 100 [/etc/cron 文件路径 ]   # 显示最后100行数据  -f 常用于查阅正在改变的日志文件。

  1. 创建文件或文件夹的方式
    touch    # 用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
    vi     # vi编辑器 编辑文件,没有会自动创建
    mkdir    # 创建目录,没有会自动创建

  2. 使用vim时,如果不小心按了 Ctrl + s后,会发现不能输入任何东西了,像死掉了一般,其实vim并没有死掉,这时vim只是停止向终端输出而已,要想退出这种状态,只需按Ctrl + q 即可恢复正常。

1.4分支管理

1.4.1 分支的好处

  • 同时并行推进多个功能开发,提高开发效率
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任 何影响。失败的分支删除重新开始即可
  • 一般工作至少需要两个分支 master(主分支)、dev(开发分支)

1.4.2分支操作

1.4.2.1创建、删除分支命令:branch

分支创建新分支时,新创建的分支代码与创建者的分支代码保持一至。

git branch (分支名)  # 创建分支
git branch  # 查看分支
git branch -d 需要删除的分支名  # 查看分支

1.4.2.2切换分支命令:checkout

git checkout (分支名)

当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。

1.4.2.3合并分支命令:merge

若A分支合并B分支:需要先切换到A分支,然后在A分支下合并B分支。

git merge  (有新内容分支)

1.4.2.3 解决冲突

  • 冲突的表现

    CONFLICT (content): Merge conflict in good.txt
    Automatic merge failed; fix conflicts and then commit the result.

    提示产生冲突,需要解决。

    **产生冲突的原因:**merge 分支的代码与原分支的代码修改过同一行的文件。(未修改同一行文件一般会自动合并)

  • 冲突的解决

    • 第一步:编辑文件,删除特殊符号
    • 第二步:把文件修改到满意的程度,保存退出
    • 第三步:git add [文件名]
    • 第四步:git commit -m "日志信息"
      • 注意:此时 commit 一定不能带具体文件名,因为此时需要commit多个文件所以不加文件名。

1.5连接GitHub

1.5.1创建远程仓库的别名 remote add

git remote -v 查看当前所有远程地址别名
git remote add [别名] [远程地址]

1.5.2 推送本地库(版本库)到远程仓库 push

git push [别名] [分支名]

1.5.3 克隆 clone

 git clone [远程地址]

1.5.4 拉取 pull

git pull 命令用于从远程获取代码并合并本地的版本。用于冲突不是很多的情况,否则用fetch后merge

git pull 其实就是 git fetchgit merge FETCH_HEAD 的简写。 命令格式如下:

git fetch [远程库地址别名] [远程分支名]    #从远程获取代码库
git merge [远程库地址别名/远程分支名]
git pull <远程主机名> <远程分支名>:<本地分支名>
$git pull origin master --allow-unrelated-histories  # 强制合并 git库里有多个分支目前只想修改一个分支的内容

1.5.5 团队其他人推送

如果不是基于 GitHub 远程库最新版所做的修改,不能直接推送(push),必须先拉取(pull)。拉取下来后进入冲突状态,解决冲突完成之后推送(push)。

1.5.6 跨团队协作

1.fork

在github的项目界面右上角
2.clone 跨团队fork后拥有的远程库

3.改动后pull 跨团队的远程库

4.在GitHub上的项目界面点 Pull request >>> New pull request >>> 写消息Create pull request

5.项目所有人查看跨团队的 Pull request

6.审核代码

7.合并代码 Merge pull request

8.将远程库拉取到本地 pull

1.6ssh连接Git

1.7Eclipse连接Git

1.7.1 查看Git 设置本地库的用户签名

window >> preferences >> Team >> Git >> Configuration(Repository Settings选项卡) >> Add Entry

1.7.2 解释 合并工具zoomit

  • 创建好eclipse的本地库之后 需要git add 添加到缓存区将文件追踪。如果文件未被追踪文件无法上传到仓库。
  • 项目中的所有文件不需要全部都进行追踪,有一些用于项目管理的文件不需要上传。
  • Navigator窗口可查看项目的所有文件
  • 项目右键 >> Team >> Add to index(添加至仓库缓存)
  • commit 需要填写提交信息,一般是介绍操作的用途,或修改的文件名
  • 转换工程类型:项目右键 >> Configure >> Convert to Maven Project
  • 低版本导入git项目需要指定工作区以外的项目,高版本一般指定工作目录。
  • 在做修改之后需要提交到本地库(commit)才能往git上提交,一般需要先pull 后 Push 。
  • 冲突合并的工具:merge tool 左边是自己的,右边是git上的,左边可以修改,右边不可以修改。

1.8Git的工作流

1.8.1 分类

  1. 集中式工作流

    像 SVN 一样,集中式工作流以中央仓库作为项目所有修改的单点实体。所有 修改都提交到 Master 这个分支上。 这种方式与 SVN 的主要区别就是开发人员有本地库。Git 很多特性并没有用到。

  2. Gitflow工作流

    Gitflow 工作流通过为功能开发、发布准备和维护设立了独立的分支,让发布 迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。

  3. Forking 工作流

    Forking 工作流是在 GitFlow 基础上,充分利用了 Git 的 Fork 和 pull request 的 功能以达到代码审核的目的。更适合安全可靠地管理大团队的开发者,而且能接受 不信任贡献者的提交。

1.8.2 GitFlow工作流详解

1.8.2.1分支的种类

  1. 主干分支 master

    主要负责管理正在运行的生产环境代码。永远保持与正在运行的生产环境 完全一致。

  2. 开发分支 develop

    主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。

  3. bug 修理分支 hotfix

    主要负责管理生产环境下出现的紧急修复的代码。 从主干分支分出,修 理完毕并测试上线后,并回主干分支。并回后,视情况可以删除该分支。

  4. 准生产分支(预发布分支) release

    较大的版本上线前,会从开发分支中分出准生产分支,进行最后阶段的集 成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段较稳定后 可以视情况删除。

  5. 功能分支 feature

    为了不影响较短周期的开发工作,一般把中长期开发模块,会从开发分支 中独立出来。 开发完成后会合并到开发分

1.8.2.2GitFlow工作流举例

操作:

切换分支:Team >> switch to >>

合并分支:Merge

  1. 创建分支 new Branch
  2. 切换分支审查代码 ,并从commit代码到Git库
  3. 项目经理 检出远程分支 checkout (项目经理本地创建出新的分支(前面新建的))
  4. 切回master
  5. 合并分支 merge
  6. 合并成功后推向Git

1.9 Gitee实战

见:https://blog.csdn.net/qq_43530326/article/details/123435355

  • 作者:司徒小夜
  • 原文链接:https://blog.csdn.net/qq_43530326/article/details/124013541
    更新时间:2023-01-10 13:56:27