• git


    Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

    可视化软件

    官网在这里:https://www.git-scm.com/,在git 官网上这种GUI工具多达十几款,在Mac平台我推荐一两款好用的软件GUI,官网GUI客户端列表:https://www.git-scm.com/downloads/guis

    1. DiffMerge 是一款可视化的文件比较(也可进行目录比较)与合并工具。
    该软件主要具有文件差异比较、自动化的文件合并、以及文件夹差异比较这三大功能。这里下载:[http://sourcegear.com/diffmerge/](http://sourcegear.com/diffmerge/)
    
    1. SourceTree (Windows/Mac)免费
    官网在这里:[https://www.sourcetreeapp.com/](https://www.sourcetreeapp.com/)
    
    1. Gitup(Mac)免费开源
    好玩的Gitup是 Mac OS X 的全功能开源 Git 客户端,提供快速,安全的操作,直接在硬盘上与 Git 数据库交互,操作库的图而不是操作 commits,官网在这里:[http://gitup.co/](http://gitup.co/)
    

     git 安装

     Windows

    安装git for window
    安装TortoiseGit-1.8.16.0-64bit.msi
    配置path C:Program FilesGitin
    详见enter link description here

    Mac

    1. 最为简单的方式是安装 .dmg 格式的安装包。其中带有一个正在解包图标的文件(扩展名为 .pkg )是 Git 的安装程序
    2. 点击扩展名为 .pkg 的安装程序,开始 Git 的安装
    3. 安装完毕,git 会被安装到 /usr/local/git/bin/ 目录下。重启终端程序,才能让 /etc/paths.d/git 文件为 PATH 环境变量中添加的新路径注册生效。然后就可以在终端中直接运行 git 命令了。
    4. 下载地址:enter link description here

    git 配置

     git config --global user.name "xxx"             //配置用户名   
    
     git config --global user.email "xxx@xxx.com"    //配置邮件  
    
     git config --list                               //检查已有的配置信息
    

      

    git 使用

    基础操作

    git init                        //初始化git仓库  
    
    git add .                       //添加所有文件到暂存区  
    
    git status                      //查看Git仓库状态,要随时掌握工作区的状态  
    
    git commit -m 'xxx'             //提交已添加的文件到git仓库  
    
    git commit -am 'xxx'            //将add和commit合为一步  
    
    git log /git reflog             //显示最近到最远的提交日志(历史)/(未来)  
    
    git reset --hard  <commitId>    //HEAD^--返回上个版本,  
                                    //HEAD~100--返回上100个版本  
                                    //commit_id--对应版本的commitId  

    远程仓库

    创建SSH Key

    • 打开终端,输入 ssh-keygen -t rsa -C "418120186@qq.com" 邮箱更新为自己的
      回车保存默认位置
      输入密码,用来加密私钥(以后就要用这个密码)
     
    image
    • 密钥存放在主文件夹的.ssh文件夹内
    • 打开文件备份 id_rsa(私钥) ; id_rsa.pub(公钥)两个文件,打开公钥,复制所有内容

    与远程仓库绑定

    • 在远程服务器,如coding/github页面内找到添加公钥选项,粘贴刚刚复制的内容,添加即可.

    远程命令

    • git remote命令就用于管理主机名。

       git remote add <主机名> <网址>           //用于添加远程主机  
        git remote rm <主机名>                  //用于删除远程主机
        git remote rename <原主机名> <新主机名>   //用于远程主机的改名
        git remote (-v)                        //要查看远程库的信息(显示更详细的信息)  
    • git fetch命令用于取回远程更新至本地

        git fetch <远程主机名>             //将某个远程更新,全部取回本地
        git fetch <远程主机名> <分支名>     //取回特定分支的更新
        //所取回的更新,在本地主机上要用"远程主机名/分支名"的形式读取。比如origin主机的master,就要用origin/master读取。
    • git pull取回远程主机某个分支的更新,再与本地的指定分支合并。

       git pull origin next(:maste)    //取回origin主机的next分支,与当前(本地的master)分支合并
    • git push命令用于将本地分支的更新,推送到远程主机

        git push origin <本地分支名>:<远程分支名> //提交本地的某分支,与origin主机的某分支合并
        git push -u origin master             //将本地master分支推送到origin主机,同时指定origin为默认主机,之后就可以不加任何参数使用git push   
        git push --all origin                 //将本地所有分支推送到origin主机
        git push origin master                //将master分支推送到origin远程主机
        git push origin --tags                //推送包含标签(tag)   
        git push -f                           //强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容
        git clone  <url>                      //克隆远程仓库到本地
        git clone <版本库的网址> <本地目录名>    //克隆远程仓库到本地指定文件名
    • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

    分支

    git branch                         //查看所有分支  
    
    git branch <name>                  //创建分支  
    
    git checkout <name>                //切换分支  
    
    git checkout -b <name>             //创建并切换分支
    
    git checkout -b newBrach origin/master //在origin/master的基础上,创建一个新分支
    
    git merge <name>                   //合并某分支到当前分支  
    
    git branch -d <name>               //删除分支
    
    git branch -a                      //显示所有分支
    
    git branch -r                      //显示所有远程分支
    
    git branch --merged                //显示所有已合并到当前分支的分支
    
    git branch --no-merged             //显示所有未合并到当前分支的分支
    
    git branch -m master master_copy   //本地分支改名
    • master分支是主分支,因此要时刻与远程同步;
    • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
    • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
    • feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

    标签

    git tag <name>                        //用于新建一个标签,默认为HEAD,也可以指定一个commit id;  
    
    git tag -a <tagname> -m "blablabla..."//可以指定标签信息;  
    
    git tag -s <tagname> -m "blablabla..."//可以用PGP签名标签;  
    
    git tag                               //查看所有标签  
    
    git push origin <tagname>             //推送一个本地标签;  
    
    git push origin --tags                //推送全部未推送过的本地标签;  
    
    git tag -d <tagname>                  //删除一个本地标签;  
    
    git push origin :refs/tags/<tagname>  //删除一个远程标签。  
    

      

    其他使用场景

    • 保存进度

    修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

    • 合并分支

    git merge --no-ff -m "merge with no-ff" dev

    合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

    • 撤销修改

    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

    场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,则需要版本回退,不过前提是没有推送到远程库。

    git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

    git相关学习资源

    1. git的详细介绍:Git详解之一:Git起步
    2. git安装和配置:Git安装与配置
    3. git与TortoiseGit(小乌龟)的基本操作:Git与TortoiseGit基本操作
    4. git的基础教程:廖雪峰的gitgit教程
    5. git的使用流程:Git使用教程
    6. git远程操作详解:阮一峰的Git远程操作详解
    7. git常用命令总结:git常用命令总结
    8. 搭建基于SSH的Git服务器:Windows下搭建基于SSH的Git服务器;自己动手搭建Git服务器-Gitblit
    9. git整体介绍:30 分钟 git 命令入门到放弃 - 掘金
  • 相关阅读:
    java基础英语---第十九天
    java基础英语---第十六天
    java基础英语---第十七天
    java基础英语---第十四天
    java基础英语---第十五天
    java基础英语---第十三天
    设计模式
    设计模式
    设计模式
    设计模式
  • 原文地址:https://www.cnblogs.com/ampl/p/9227708.html
Copyright © 2020-2023  润新知