欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

学习git,看这一篇文章,稳妥学会!

程序员文章站 2024-03-23 08:39:58
...

git

一、安装和配置

(1):Git操作原因:

    1:版本控制:就是记录若各干文件的变化,以便于查阅特定版本的修改
    2:为什么要使用git:假如你修改了项目,然后发现思路不对,只能回归到之前的时间段,于是git可以帮你轻松恢复原先的样子
        还可以查询,那个地方修改了,导致了bug的产生。
    3;版本控制
      
      01:集中式版本控制 svn 
       svn因为每一次存的都是差异,需要的硬盘空间相对来说较小,可是回滚的速度很慢     
            优点:代码存放在服务器上,便于项目管理
            缺点:
              服务器宕机:员工写的代码得不到保障
              服务器炸了:丢失整个项目的历史记录

      02:分布式版本控制系统 -git
         git每一次存的是项目的完全快照,需要的硬盘空间相对来说较大
      (只不过git团队对项目做了极致的压缩,最终使用的空间仅仅比svn多不了太多,但是git的回滚速度快)

(2):Git安装:

1:网址 — https://git-scm.com/download/win
2:双击exe安装包 一直next即可
3:检测是否安装了git – 在桌面右击 -出现git Bash here 等两个证明安装完成
注意点:直接右击点击 git Bash here --出现的终端是Linux操作系统
4:检测版本 — git --version —出现版本号,证明git装好了

(3):Git初始化和配置用户名:

1:git初始化配置: 配置直接的工作环境,配置只需要配置一次即可
01:初始化仓库:git init —对文件的备份
* 指令 : ls -a 查看是否存在 .git 文件夹
02:配置用户信息:
git config --global user.name=“用户名”
git config --global user.email=“邮箱”
配置后,输入检验直接的配置信息 git config --list 检测直接用户配置信息(user.email= user.name=)

(4)git生成的.git文件的介绍

初始化配置:git init (在工作区右键,点击git Bash here 终端 来初始化) —出现.git文件(也就是版本库)
在.git文件的目录是
01:hooks: 目录包含客户端或服务端的钩子脚本
02:info:包含一个全局性排除文件
03:logs:保存日志信息
04:objects:目录存储所有数据内容
05:refs:目录存储指向数据(分支)的提交对象的指针
06:config:文件包含项目特有的配置选项
07:description:显示对仓库的描述信息
08:HEAD:文件指示目前被检出的分支
09:index:文件保存暂存区信息

二、git的操作流程

学习git,看这一篇文章,稳妥学会!

本地仓库的操作

  • 1:初始化仓库:
    • git init
    • 作用:就是在当前文件中,生成一个隐藏文件.git,里面用于存放备份的文件等
  • 2:把代码存储在git仓库中:
    • 01:先把文件放在git隐藏目录仓库的大门 (暂存区)
      —git add ./readme.md(readme.md —这是自己的功能代码 ./对应的文件路径)
      —git add ./ => 提交所有代码到暂存区!

    • 02:再把文件从git目标的门口拉入仓库房间 (版本库)
      — git commit -m “备注消息” (commit—提交 -m—提交代码需要备注 “备注自己这一次 提交的说明的那些功能”)

      • 注意点:看到以下结果,代表我们提交到仓库已经成功了。
        [master (root-commit) 3b67a01] 第一个功能
        1 file changed, 1 insertion(+)
        create mode 100644 readme.md
      
      • 注意点2:假如你输入的时候,忘记加了-m的时候,会进入到编辑器的界面
        按下i —就可以书写代码了
        退出:先按下esc —然后输入英文的符号 :q —若是出现红色警告的话就需要强制退出 — esc - :q! -回车
    • 03:假如我们的第二个功能已经完成了,需要在一次提交代码;
      1:git add ./文件 2:git commit -m “备注” 3:显示以下代码证明提交成功

      [master 0fbf56c] 这个时我们加的第二个功能
      1 file changed, 2 insertions(+), 1 deletion(-)      
      

操作本地服务器之拓展点

  • 1:git status —查看当前文件的状态

    • 00:On branch master —出现这两行代码,证明文件是干净的(已经提交到版本库了)
      nothing to commit, working tree clean
    • 01:modified: readme.md modified-修改了这个文件,但是还没有提交,需要提交到版本库(git commit -m “”)
    • 02:Untracked files: 无路径的文件(证明还没有添加到暂存区)
      (use “git add …” to include in what will be committed)
  • 2:git add ./ —把当前目录的文件,都添加到暂存区(.git文件)==

  • 3:git commit --all -m “这是直接从工作区提交到版本库” (不需要在添加到暂存区)==

  • 4:git log 查看日志==
    git log --oneline 查看日志 (以一段内容的形式显示每一次提交的备注)
    git reflog — 查看提交的版本

    对于版本的处理,版本回退等(注意点:最好不要使用版本回退,不然若是其他人书写了代码,你版本回退,会造成彼此的代码都回退)

  • 5:git reset --hard Head~0 (回退版本 - 0为最新的一个版本,1为距离最新版本的上一个版本)==
    假如你之前提交了以下版本
    c78ab6f 这是一次性操作
    c6f8467 这是2
    5057ce1 这个是文件2
    0fbf56c 这个时我们加的第二个功能
    3b67a01 第一个功能

      注意点1:输入 git reset --hard Head~1 
              回退到版本为:HEAD is now at c78ab6f 这是2  (证明你当前回退到了那个版本)
      注意点2:输入 git reset --hard c6f8467  也是可以根据版本号,回退到该版本(怕版本太多,数不过来)
                      回退到版本为:HEAD is now at c78ab6f 这是2  (证明你当前回退到了那个版本)
                      但是回退到该版本后,在此之前的版本号则被隐藏了。
    
  • 6:git reflog —回退的版本查询 (从下到上是最新到最旧的版本)

线上服务器的相关操作

首先先创建一个项目

链接:

然后根据你的需求,是使用http还有ssh的方式提交

这边选择的是http方式演示:

  • 01:选择你需要提交的项目起源(也就是提交到哪里,而我这边是这个)
    git remote add origin https://gitee.com/xzlwhy/git_test.git
    • 001:需要测试你提交的服务器源地址:
      git remote get-url origin 如果返回正确的地址则表示路径没有问题;
    • 002:当你路径设置错误的时候,可以重新设置回来:
      git remote set-url origin 新路径
  • 02:把本地仓库的代码push到远程的服务器
    git push -u origin master => master为默认的主分支!
    ** 强制推送 : git push -f origin master —会覆盖别人的版本,最后不要使用!**
  • 03:拉取服务器的代码
    git pull origin master

线上服务器代码更改和你提交代码后,发生冲突,解决冲突的方式

  • 假如你在线上更改了代码,还有你自己的代码添加了多一系列代码,那么你add commit push之后,会发生报错
    • 原因:就是你本地仓库的版本不是最新的,因此你需要先拉去服务器的代码下来,然后在进行解决冲突合并
To https://gitee.com/xzlwhy/git_test.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://gitee.com/xzlwhy/git_test.git'
  • 发现报错后,才知道本地服务器代码不是最新的版本,于是先拉取服务器的代码下来
    01: git pull origin master
    02: 拉取下来后,在你的文件之中,发生冲突的文件会以下面这种形式存在
    附图:
    解决方式:
    • 1:若是正确的代码,那么就保留彼此双方的代码 => 保留双方更改
    • 2:若是恶意代码,那么仅仅保留自己的代码即可! => 采取当前更改(就是保留自己代码)
    • 3:若是传入的代码是正确的,而你的代码是错误的,那么就选择采用传入的更改!

三:分支管理

默认有着主分支 — master

(1):创建分支

git branch dev (dev为分支的名称) 

(2):切换分支

切换到自己创建的分支 (就是后面会显示分支的名称,比如dev,然后从分支回到主分支:把dev修改为 master)
假如你是以master主分支来创建新的分支,那么你拷贝的代码是以master的版本
假如你是以dev作为版本来创建新的分支,那么这个新的分支会以dev版本拷贝

git checkout dev  

(3):查看有多少分支

git branch

(4):合并分支

 git merge dev (merge---为合并的意思,把指定的分支合并到当前分支---就是有着*)
注意点:Updating 5995f00..e4543e0 显示这一行,代表已经更新完了。
+ 作用:在当前分支合并分支(假如你是master主分支需要合并dev分支,那么需要切换到master主分支 然后git merge dev)即可

(5):删除分支

git branch -d dev(要删除的分支名称)

注意点:就是你在分支dev做功能五的一半,然后在主分支中也完成了功能五的一半,各自提交了,然后才发现功能五没有合并在一起,
CONFLICT (content): Merge conflict in readme.md
Automatic merge failed; fix conflicts and then commit the result.
这时候合并的,会发生冲突的,造成合并失败,因此需要手动合并(需要把那些重复代码散去,并且再一次提交)。
<<<<<<< HEAD

我的功能四的代码,再加上分支就是完整的代码
=======

这是分支dev的代码1
>>>>>>> dev
所以啊:只要把其他的=== >>> dev注释等无用东西删除,再提交即可。

分支命名规范

  • 项目项目-index (login)

分支的提交

注意点:在分支操作之后,我们也是需要提交所操作的文件
git add ./
git commit -m "注释"
git push -u origin 分支名

多人开发的时候,灵活使用git

  • 第一步: 下来仓库的代码
    git clone https://gitee.com/GZ-2003/project-2003.git
  • 第二步:进入文件夹 重启gitbash工具
  • 第三步:更新本地代码后,还需要以下三个操作!
- git add -A 添加所有内容到暂存区 
- git commit -m "1的代码" 提交代码到本地仓库
- git push -u origin master 把本地仓库的代码提交到线上仓库 

四:上传服务器之(github)

(1):上传服务器的命令(GitHub)

就是代码的共享,把自己的功能代码模块上传到服务器上,然后也可以下载别人的代码到本地,运行整个项目

 git push 链接 master
      示例:git push https://github.com/xzlwhy/test.git master (push--推入 后面是服务器中https的链接 master-分支 服务器也是由分支的)

上传成功后,会在github上面显示你自己的备注和上传的代码。

git push origin master 推送

git pull origin master 拉取

(2):使用SSH的方式上传代码

公钥 和 私钥 两者是有关联的!
1:生成公钥,和私钥
ssh-****** -t rsa -C “邮箱”
C:\Users\Administrator.ssh
自己的用户名:就是cmd输入后,发觉是盘的Administrator .ssh里面有着三个文件
2:.ssh里面有着三个文件
公钥:id_rsa.pub文件
私钥:id_rsa文件
3:设置
01:把公钥的代码复制了
02:在github的右侧,点击+旁边的那个+(带着图片) —选择里面的Setting
03:然后进入里面后,点击SSH and GPG keys
04:在点击New SSH key
05:然后把公钥复制在key框框下,给自己起一个标题 my_window 然后点击Add SSH key
4:push代码带仓库里面
git push ssh地址(就是在选择克隆或下载那个绿色框框) master

(3):模拟两个开发的注意项

就是推送和拉取相关的操作

      用户1:
        用户1自己书写了代码后,提交到本地版本库后,并且上传到服务器。

      用户2:
        用户2:从服务器上面pull,用户1的版本下来保存在本地。
        假如:用户1和用户2,各自修改了代码后,都提交到服务器,那么会造成代码的冲突啊!
        也就是(error: Your local changes to the following files would be overwritten by merge:
        index.html)
        发送冲突后,需要自己手动在冲突的文件进行修改,删除掉那些提示的信息即可!

      注意点:
        两个用户在操作的服务器的时候,(再本地添加了)需要先pull拿到服务器的最新版本,然后在push上去,因为这样的话,你pull拿到服务器最新版本后,若是与本地的文件发送冲突后,会提示你做修改,解决冲突。然后解决冲突后,再把自己修改的代码推送上去。
      在pull完后,若是进入编辑模式
      做了一些备注后,按下esc :wq  (w为保存 q为退出)

这是push和pull的简写方式
1:在本地项目中设置自己的服务器提交的起源(类似把地址设置为一个变量)
git remote add origin aaa@qq.com:xzlwhy/text1.git
设置后,我们在当前的项目中,拉去和推送都可以这样
git pull origin master
git push origin master

2:把分支设置为关联:
git push origin -u master (关联之后,-u就是把当前分支和指定的分支进行关联。
后面直接操作— git push —直接推送到设置的origin服务器地址)