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

    前言

    目前主流的项目代码管理工具分为2大类,一个是SVN,一个是Git。本文主要讲解Git的原理和使用。

    SVN优缺点

    优点及适用场景:

    ◆管理方便,逻辑明确,符合一般人思维习惯。
    ◆易于管理,集中式服务器更能保证安全性。
    ◆代码一致性非常高。◆适合开发人数不多的项目开发。

    缺点:

    ◆服务器压力太大,数据库容量暴增。
    ◆如果不能连接到服务器上,基本上不可以工作
    ◆不适合开源项目或者大型团队协作开发的项目

    Git优缺点

    优点及适用场景:

    ◆适合分布式团队多人协作,敏捷开发。
    ◆公共服务器压力和数据量都不会太大。
    ◆速度快、灵活、可离线工作。
    ◆任意两个开发者之间可以很容易的解决冲突。

    缺点:

    ◆学习周期相对而言比较长。
    ◆代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

    原理

    4个区

    •Workspace:工作区,为电脑中实际的目录
    •Index / Stage:暂存区,类似于缓存区域,临时保存你的改动。
    •Local Repository:仓库区(或本地仓库),在.git目录下。
    •Remote Repository:远程仓库。

    3个步骤

    ✓git add .把所有文件放入暂存区;
    ✓git commit把所有文件从暂存区提交进本地仓库;
    ✓git push把所有文件从本地仓库推送进远程仓库。

    5种状态

    •未修改(Origin)
    •已修改(Modified)&未追踪(Untracked)
    •已暂存(Staged)
    •已提交(Committed)
    •已推送(Pushed)

    安装

    在Windows上使用Git,可以从Git官网直接下载安装程序,然后按默认选项安装即可。
    安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

    检查

    在系统命令提示符中输入:git --version,如果打印了Git的版本号,则安装成功。

    配置

    配置Git用户和邮箱

    $ git config --global user.name "Your Name"
    $ git config --global user.email "email@example.com"
    

    与Github的连接

    第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

    ssh-keygen -t rsa -C "youremail@example.com"
    

    你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
    如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
    第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
    然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:

    当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

    推送远程仓库

    关联远程仓库

    在Github上创建一个新的仓库需要和本地的目录一致,仓库名后面关联需要用到
    然后再本地的Git终端输入

    git remote add origin git@github.com:hy546880109/study.git   
    

    推送到远程库上:

    $ git push -u origin main     #因master带有歧视的含义,官方已经改成main了
    Enumerating objects: 23, done.
    Counting objects: 100% (23/23), done.
    Delta compression using up to 8 threads
    Compressing objects: 100% (23/23), done.
    Writing objects: 100% (23/23), 17.40 KiB | 1.34 MiB/s, done.
    Total 23 (delta 2), reused 0 (delta 0)
    remote: Resolving deltas: 100% (2/2), done.
    To github.com:hy546880109/mycs.git
     * [new branch]      main -> main
    Branch 'main' set up to track remote branch 'main' from 'origin'.
    

    推送成功可以直接在Github创建的新仓库下看到推送上去的本地文件了。

    官网教程

    或者直接参考官网的教程进行操作

    错误处理

    1,输入:git remote add origin git@github.com:yourName/yourRepo.git时

     报错:fatal: Not a git repository (or any of the parent directories): .git
    

    解决办法:输入 git init ,初始化一个本地仓库

    2,输入:git remote add origin git@github.com:yourName/yourRepo.git时

      报错:fatal: remote origin already exists.
    

    解决办法:
    1 删除Git仓库中的origin信息:git remote rm origin

    2 重新添加Git仓库中的origin信息

    3,输入:git push origin master 时

     报错:fatal: 'origin' does not appear to be a git repository
    
               fatal: Could not read from remote repository.
    
              Please make sure you have the correct access rights and the repository exists.
    

    解决办法:重新输入一次:git remote add origin git@github.com:yourusername/test.git

    4,输入:git push origin master 时

      报错:fatal: remote error:
    
          XXXXXX@qq.com/myarea is not a valid repository name Email support@github.com for help
    

    解决办法:使用git remote rm origin 然后再使用上传命令

    5,输入:git push origin master 时

      报错:To git@git.oschina.net:yangzhi/hello.git
    
                ! [rejected]        master -> master (fetch first)
    
               error: failed to push some refs to 'git@git.oschina.net:yangzhi/hello.git'
    
               hint: Updates were rejected because the remote contains work that you do
    
               hint: not have locally. This is usually caused by another repository pushin
    
               hint: to the same ref. You may want to first merge the remote changes (e.g.
    
               hint: 'git pull') before pushing again.
    
               hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    

    解决办法:出现这个问题是因为github中的README.md文件不在本地代码目录中。先进行代码合并 git pull --rebase origin master 再执行 git push origin master
    6,输入git add ./时

    报错:fatal: Not a git repository (or any of the parent directories): .git
    

    解决办法:先输入git init,再add

  • 相关阅读:
    虚拟化VMware之虚拟机备份(1)
    虚拟化VMware之虚拟机备份(1)
    柯塔娜大合唱,互联网安全观
    柯塔娜大合唱,互联网安全观
    如何在虚拟机上Centos系统安装Nginx服务
    给已验证登录的用户添加访问限制
    Python爬虫入门教程 23-100 石家庄链家租房数据抓取
    login_required装饰器(1)
    Oracle 18c 新特性:动态 Container Map 增强 Application Container 灵活性
    如果登录不成功,跳转到登录页面
  • 原文地址:https://www.cnblogs.com/huny/p/13806239.html
Copyright © 2011-2022 走看看