zoukankan      html  css  js  c++  java
  • Git学习

    一、什么是GitHub?

    GitHub是一家公司,由 Chris Wanstrath, PJ Hyett 与 Tom Preston Werner 三位开发者在2008年4月创办;

    2008年4月10日,GitHub正式成立,地址:How people build software · GitHub ,主要提供基于git的版本托管服务。截止目前,GitHub 已经发展成全球最大的开源社区。

    二、GitHub与Git的关系

    Git 是一款免费、开源的分布式版本控制系统,由Linux 发明者 Linus Torvalds 开发;

    GitHub 是提供基于 Git 的版本托管服务,就是说GitHub 上托管的所有项目代码都是基于 Git 来进行版本控制的,So,Git 只是 GitHub 上用来管理项目的一个工具,而GitHub 的功能远不止此。

    三、加入Github

    1、去 GitHub 官网「How people build software · GitHub」注册「Sign Up」个账号;

    2、创建自己的项目(点击顶部导航栏的 + 可以快速创建一个项目);

    四、GIT的基础操作

    安装:

      Mac:https://sourceforge.net/projects/git-osx-installer/(一般Mac会自带Git)

      Windows:https://git-for-windows.github.io/

      Linux:apt-get install git

    基本命令:

    注:本文所有的命令都是在Linux上操作的

    命令行输入git,出现以下提示,Git安装成功:

    我们现在在root目录下新建一个test,然后进入到test目录下:

    mkdir test    # 创建test文件夹
    cd test       # 切换到test目录
    touch a.txt   # 新建a.txt文件

    如图

     当前目录还不是一个 Git 仓库,

    git init   # 初始化git仓库

    Untracked files ,就是说 a.txt 这个文件还没有被跟踪,还没有提交在 git 仓库,提示你可以使用 git add 去操作你想要提交的文件

    git status  # 查看状态
    git add     # 添加到仓库缓存中
    git commit -m 'first commit'     # 正式进行了第一次提交
    git log    # 查看所有产生的 commit 记录
    git add & git commit    # 提交的合并操作
    git branch  a   #创建a分支
    git checkout a    # 切换到a分支上
    git checkout -b a    #合并 与 切换 同时操作 
    git merge a     # 合并a分支
    git branch -d  a     # 删除分支
    git branch -D  a     # 强制删除a分支
    git tag v1.0          # 创建标签
    git checkout v1.0 #
    切换标签

    向GitHub提交代码

    1、SSH

    SSH是一种网络协议,用于计算机之间的加密登录。大多数 Git 服务器都会选择使用 SSH 公钥来进行授权,想要在 GitHub 提交代码的第一步就是要先添加 SSH key 配置;

    2、生成SSH key

    Linux和Mac都默认安装了SSH,命令行输入ssh查看

     ssh-keygen -t rsa   #指定 rsa 算法生成密钥

    输入 ssh-keygen -t rsa,指定 rsa 算法生成密钥,接着连续三个回车键(不需要输入密码),然后就会生成两个文件 id_rsa 和 id_rsa.pub , id_rsa 是密钥,id_rsa.pub 就是公钥

    Linux/Mac 系统 在 ~/.ssh 下,win系统在 C/Documents and Settings/username/.ssh 下,都是隐藏文件

    git push origin master     # 把本地代码推到远程master分支
    git pull origin master       # 把远程最新代码更新到本地
    
    # 一般在 push 之前先 pull ,这样不容易冲突。
    git clone git@github.com:/Clint-cc/test.git    #将test项目clone到本地

    五、GIT的进阶操作

    设置用户名和邮箱

    我们每一次commit都会产生一条log,这条log标记了提交人的姓名与邮箱,以便其他人方便的查看与联系提交人,所以在进行提交代码的第一步就是要设置自己的用户名与邮箱

    git config —global user.name "clint-cc"
    git config —global user.email "clint1801@163.com"

    以上进行了全局配置,有时候我们的某一个项目想要用特定的邮箱,这个时候只需切换到你的项目, --global 参数去除,重新执行一遍

    alias

     有些频繁的操作,我们可以给命令起个简短的别名,下次用别名执行

    git config global alias.co checkout # 给命令起别名

    PS: 比较清晰,分支走向明显的命令

    git log --graph --pretty=format:'%Cred%h%Creset -
    %C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

    但是每次如果要输如这么一大串那就不方便了,这时我们就可以用alias命令简化

    git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"

    以后直接输入git lg就行了

    其他配置 

    git config --global core.editor "vim"     # 设置Editor使用vim
    git config --global color.ui true         # 开启给 Git 着色
    git config --global core.quotepath false  # 设置显示中文文件名

    diff

    git diff                         # 比较当前文件和暂存区文件差异,
    git diff <$id1> <$id2>           # 比较两次提交之间的差异
    git diff <branch1>..<branch2>    # 在两个分支之间比较
    git diff staged                  # 比较暂存区和版本库差异

    checkout

    切换

    git checkout develop     #切换到 develop 分支
    git checkout v1.0          #切换v1.0标签

    撤销

    git checkout a.txt    #把原文件还原(之前的操作撤销)

    PS:checkout 命令只能撤销还没有 add 进暂存区的文件

    stash

    git stash         # 把当前分支所有没有 commit 的代码先暂存起来
    git stash apply # 代码还原
    git stash drop # 把最近一条的 stash 记录删除
    git stash pop #
    来代替apply 命令,pop 跟 apply 的唯一区别就是 pop 不但把代码还原,还自动把这条 stash 记录删除,省去drop一次

     merge & rebase

    # 将a分支合并到master上
    # 使用merger
    git checkout master
    git merge a
    
    # 使用rebase
    git checkout master
    git rebase a
    
    
    # rebase 跟 merge 的区别你们可以理解成有两个书架,你需要把两个书架的书整理到一起去,第一种做法是 merge ,比较粗鲁暴力,就直接腾出一块地方把另一个书架的书全部放进去,虽然暴力,但是这种做法你可以知道哪些书是来自另一个书架的;第二种做法就是rebase ,他会把两个书架的书先进行比较,按照购书的时间来给他重新排序,然后重新放置好,这样做的好处就是合并之后的书架看起来很有逻辑,但是你很难清晰的知道哪些书来自哪个书架的。

    团队合作利器:Git 分支管理

    Git Flow 是一种比较成熟的分支管理流程

  • 相关阅读:
    凝聚层次聚类
    Kmeans
    贝叶斯数据集
    将项目上传至码云(命令)
    协同过滤算法
    在阿里云Centos7.6上部署Supervisor来监控和操作各类服务
    Django笔记
    高并发
    FastDFS
    关于数据结构
  • 原文地址:https://www.cnblogs.com/Utopia-Clint/p/10896006.html
Copyright © 2011-2022 走看看