zoukankan      html  css  js  c++  java
  • Git基础

    Git

    • Workspace:开发者工作区

    • Index / Stage:暂存区/缓存区

    • Repository:仓库区(或本地仓库)

    • Remote:远程仓库

    git --version 查看安装git的版本

    Git使用前配置

    在使用git前,需要告诉git你是谁,在向git仓库中提交时需要用到。

    1.配置提交人姓名: git config --globa1 user.name 提交人姓名

    2.配置提交人姓名: git config --global user.email 提交人邮箱

    3.查看git配置信息: git config --list

    注意
    1.如果要对配置信息进行修改,重复上述命令即可。

    2.配置只需要执行一次。

    提交步骤

    1. git init 初始化git仓库
    2. git status 查看文件状态
    3. git add 文件列表追踪文件
    4. git commit -m 提交信息向仓库中提交代码
    5. git 1og 查看提交记录

    撤销

    • 用暂存区中的文件覆盖工作目录中的文件: git checkout 文件
    • 将文件从暂存区中删除:git rm --cached 文件
    • 将git仓库中指定的更新记录恢复出来,并且覆盖暂存区和工作目录: git rest --hard commitID

    分支

    为了便于理解,大家暂时可以认为分支就是当前工作目录中代码的一份副本。

    使用分支,可以让我们从开发主线上分离出来,以免影响开发主线。

    分支细分

    1.分支(master) :第-次向git仓库中提交更新记录时自动产生的一个分支。

    2.开发分支(develop) : 作为开发的分支,基于master分支创建

    3.功能分支(feature) :作为开发具体功能的分支,基于开发分支创建

    功能分支的作用是开发一个独立的功能,当功能开发完成以后,再将功能分支中的代码合并到开发分支,这时功能分支就可以删除了。当开发分支中的功能累计到一定程度以后,再将开发分支中的代码合并到主分支。

    功能分支->开发分支->主分支

    分支命令

    • git branch 查看分支

    • git branch 分支名称 创建分支

    • git checkout 分支名称 切换分支

    • git merge 来源分支 合并分支

    • git branch -d 分支名称 删除分支(分支被合并后才允许删除) (-D 强制删除)


    这里需要注意,在切换分支之前,当前分支上的工作一定要提交到git仓库中,要保持当前分支上的工作区是完全干净的状态,否则会出错

    合并分支时,要先切换到主分支

    删除分支

    注意:如果要删除的分支,没有被合并,默认情况下,这个分支时不允许删除的,这是git程序对分支的保护机制,防止开发人员误删文件。如果一定要删除,可以使用git branch -D 分支名称 来删除分支

    暂时保存更改

    在git中,可以暂时提取分支上所有的改动并存储,让开发人员得到一个干净的工作副本,临时转向其他工作。

    使用场景:分支临时切换

    ●存储临时改动: git stash

    ●恢复改动: git stash pop

    多人协作开发流程

    ●A在自己的计算机中创建本地仓库

    ●A在github中创建远程仓库(start a project)

    ●A将本地仓库推送到远程仓库

    ●B克隆远程仓库到本地进行开发

    ●B将本地仓库中开发的内容推送到远程仓库

    ●A将远程仓库中的最新内容拉去到本地


    本地仓库推送到Github远程仓库

    git push 远程仓库地址 分支名称

    在输入完推送远程仓库的命令后,会弹出验证权限的弹框

    GitHub远程仓库地址别名

    git remote add 仓库别名 别名所对应的仓库地址

    用别名推送

    git push 别名 分支名称

    git push -u 别名 分支名称

    加上-u之后git会记住仓库地址和分支名称,下次推送可直接用git push


    总结:

    1. git push远程仓库地址分支名称
    2. git push远程仓库地址别名分支名称
    3. git push -u远程仓库地址别名分支名称
      -u记住推送地址及分支,下次推送只需要输入git push即可
    4. git remote add远程仓库地址别名远程仓库地址

    以上为A的操作

    GitHub远程仓库克隆到本地仓库

    克隆远端数据仓库到本地: git clone 仓库地址

    现在B还并不能向远程仓库推送代码,因为没有权限,需要A邀请B称为当前项目的开发者

    需要复制邀请链接,然后将其发给B。B在登录github的情况下,访问链接,并接受邀请。

    现在B可以向远程仓库推送

    B在克隆的时候会将A添加的远程仓库地址的别名也克隆下来 ,所以可直接使用别名

    拉取远程仓库中最新的版本

    拉取远程仓库中最新的版本:git pull 远程仓库地址 分支名称

    解决冲突

    在多人同时开发一个项目时,如果两个人修改了同一个文件的同一个地方,就会发生冲突。冲突需要人为解决。

    这个时候只有先向远程仓库推送的人,才能推送成功,后推送的人是推送不上去的,因为第一个人已经向远程仓库提交了版本,第二个人的本地仓库中并没有这个版本,导致远程仓库版本高于本地仓库版本,所以推送不上去。

    解决冲突:第二个人需要先将第一个提交的版本拉取到本地仓库中,先把冲突解决掉,然后再向远程仓库中提交

    跨团队协作

    1.程序员C fork仓库

    2.程序员C将仓库克隆在本地进行修改

    3.程序员C将仓库推送到远程

    4.程序员C发起pull request

    5.原仓库作者审核

    6.原仓库作者合并代码

    ssh免登陆

    到目前为止,我们对远程仓库的操作,一直都是采用的https协议的仓库地址。这种协议要实现身份验证,用户必须要提供用户名和密码,在正常的情况下,每一次向远程仓库推送内容都是需要进行身份验证的,都需要提供用户名和密码,只不过现在使用的是win10操作系统。在我们第一次输入完用户名和密码后,操作系统就帮我们记住,下一次再推送的时候,使用的就是操作系统记住的用户名和密码。如果使用的操作系统不具有这有的功能,那么每次推送的时候,就都需要输入用户名和密码。频繁的输入,是一件头疼的事情,github提供了另外一种仓库通讯协议,就是ssh协议

    这种协议在实现身份验证时,是不需要使用用户名和密码的,它可以实现免登陆操作。在ssh中身份验证通过秘钥实现,秘钥是成对出现的,分为公钥和私钥。ssh通过验证公钥和私钥的配对情况,来决定验证是否通过。举个栗子:公钥相当于门锁,私钥相当于钥匙,如果钥匙能打开门锁,就说明是配对的,验证通过。公钥和私钥是开发者使用命令生成,实际上就是两个文件,公钥要将它放到github的账户中,私钥要保留在开发者的电脑中当开发者通过ssh协议,向远程仓库推送内容时,公钥和私钥会进行配对,如果配对成功,内容就会推送成功,如果配对失败,内容就会推送失败。

    生成秘钥:、ssh-keygen
    秘钥存储目录: C:Users用户.ssh
    公钥名称: id. rsa.pub
    私钥名称: id_ rsa

    打开 id. rsa.pub文件,复制内容,打开github-->Settings-->SSH and GPG keys-->New SSH key 粘贴

    在这个过程中,是没有输入用户名和密码的。是因为在github中存储了我的公钥,在我自己的电脑中,由保留了公钥对应的私钥,在推送的时候,会自动进行配对。配对成功,推送成功。

    Git忽略清单

    将不需要被git管理的文件名字添加到此文件中,在执行git命令的时候,git就会忽略这些文件。

    git忽略清单文件名称: .git

    将工作目录中的文件全部添加到暂存区:git add .



    为仓库添加详细的说明

    在项目的根目录下创建一个readme.md文件,将它推送到远程仓库。这个文件的内容会自动显示在仓库文件列表的下方。

  • 相关阅读:
    【九天教您南方cass 9.1】 12 道路断面土方计算
    【九天教您南方cass 9.1】 11 方格网土方计算
    【九天教您南方cass 9.1】 10 DTM土方计算的四种方法
    【九天教您南方cass 9.1】 08 绘制等高线及对其处理
    【九天教您南方cass 9.1】 07 绘制与标注圆曲线和细部点的方法
    【九天教您南方cass 9.1】 06 绘制方格网
    【九天教您南方cass 9.1】 05 打印出图
    [转]特征选择与特征选择权重之区别
    [转]Linux 命令行快捷键
    常用期刊评价指标
  • 原文地址:https://www.cnblogs.com/wahaha-/p/14088328.html
Copyright © 2011-2022 走看看