Github学习(1)——Git的安装与配置

来源:互联网 发布:js onload 编辑:程序博客网 时间:2024/06/05 23:01

虽然已经用了一段时间GitHub,但是一直没有系统的了解其功能,正好今天发现了桌面版的GitHub for Mac,于是借此机会系统的学习一下。

Git

从一般开发者的角度来看,git有以下功能:

  • 从服务器上克隆数据库(包括代码和版本信息)到单机上。
  • 在自己的机器上创建分支,修改代码。
  • 在单机上自己创建的分支上提交代码。
  • 在单机上合并分支。
  • 新建一个分支,把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
  • 生成补丁(patch),把补丁发送给主开发者。
  • 看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
  • 一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:

  • 查看邮件或者通过其它方式查看一般开发者的提交状态。
  • 打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。
  • 向公共服务器提交结果,然后通知所有开发人员。

Git配置

Git安装

下载Git有两种方法

  • 直接下载安装包,Git下载地址
  • 用homebrew指令下载,不过首先需要安装homebrew
    • 在终端执行后面指令安装
      homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    • 完成后,使用以后指令安装Git
      -brew install git

安装好Git后,配置用户名和用户邮箱,以后每次与Git的交互都会使用该信息。

git config --global user.name "your_name"  git config --global user.email "your_email@gmail.com"

配置信息可以更改,以后想要更改使用上面指令就可以。同时可以使用git config –list指令查看Git的配置信息。

Git默认是大小写不敏感的,也就是说,将一个文件名某个字母做了大小写转换的修改Git是忽略这个改动的,导致在同步代码时候会出现错误,所以建议大小把Git设置成大小写敏感。
git config core.ignorecase false

生成密钥

  1. 打开终端,执行下面操作,检查计算机ssh密钥
    $ cd ~/.ssh
    如果提示No such file or directory,说明现在还没有ssh密钥
    Git关联远端仓库时候需要提供公钥,本地保存私钥,每次与远端仓库交互时候,远端仓库会用公钥来验证交互者身份。使用以下指令生成密钥。
    ssh-keygen -t rsa -C "your_email@youremail.com"
    代码参数含义:
    -t 指定密钥类型,默认是 rsa ,可以省略。
    -C 设置注释文字,比如邮箱。
    生成密钥后,在本地的/Users/当前电脑用户/.ssh目录下会生成两个文件id_rsa、id_rsa.pub,id_rsa文件保存的是私钥,保存于本地,id_rsa.pub文件保存的是公钥,需要将里面内容上传到远端仓库。
  2. 输入passphrase(本步骤可以跳过)
    设置passphrase后,进行版本控制时,每次与GitHub通信都会要求输入passphrase,以避免某些“失误”
    当然,你也可以不输入密码,直接按回车。那么push的时候就不需要输入密码,直接提交到github上了,如:
    这里写图片描述
    接下来,就会显示如下代码提示,如:
    这里写图片描述
    当你看到上面这段代码的时候,那就说明,你的 SSH key 已经创建成功,你只需要添加到github的SSH key上就可以了。
  3. 添加你的 SSH key 到 github上面去
    a. 首先你需要拷贝 id_rsa.pub 文件的内容,你可以用编辑器打开文件复制,也可以用git命令复制该文件的内容,如:
    $ clip < ~/.ssh/id_rsa.pub
    b. 登录你的github账号,从又上角的设置( Settings )进入,然后点击菜单栏的 SSH and GPG keys 进入页面添加 SSH key。
    c. 点击 Add SSH key 按钮添加一个 SSH key 。把你复制的 SSH key 代码粘贴到 key 所对应的输入框中,记得 SSH key 代码的前后不要留有空格或者回车。当然,上面的 Title 所对应的输入框你也可以输入一个该 SSH key 显示在 github 上的一个别名。默认的会使用你的邮件名称。
    这里写图片描述
  4. 测试一下该SSH key
    在git Bash 中输入以下代码
    $ ssh -T git@github.com
    当你输入以上代码时,会有一段警告代码,如:
    The authenticity of host 'github.com (207.97.227.239)' can't be established.
    RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
    Are you sure you want to continue connecting (yes/no)?
    这是正常的,输入 yes 回车既可。如果你创建 SSH key 的时候设置了密码,接下来就会提示你输入密码,如:
    Enter passphrase for key '/c/Users/Administrator/.ssh/id_rsa':
    密码正确后你会看到下面这段话,如:
    Hi username! You've successfully authenticated, but GitHub does not provide shell access.
    如果用户名是正确的,你已经成功设置SSH密钥。如果你看到 “access denied” ,者表示拒绝访问,那么你就需要使用 https 去访问,而不是 SSH 。
    然后就收到了邮件2333
    这里写图片描述

常用Git指令

  • 初始化配置
git config —global user.name “XXX"git config --global user.email “XXXX"
  • 设置大小写敏感
git config core.ignorecase false
  • 生成密钥
ssh-keygen -t rsa -C “your_email”
  • 将远端代码clone到本地目录
git clone <远端git> <本地目录>
  • 提交修改
git add <文件> // 将有修改的文件添加到本地缓存中 git add . 是添加所有修改git commit -m "本次修改信息" // 提交本次修改,一般是在git add之后操作git reset . // 撤销addgit rm --cached . // 撤销add
  • 切换分支
git checkout <branch_name>
  • 以当前分支为蓝本新建分支并切换到新分支
git checkout -b <branch_name>
  • 当前分支合并其他分支
git merge <branch_name>
  • 远端新建分支,其实就是将本地分支推送至远端
git push origin <local_branch_name>:<remote_branch_name>
  • 删除远端分支
    其实就是推送了一个空的分支到远端覆盖了原来的远端分支
git push origin :<remote_branch_name>
  • 从远端拉取分支,并建立对应关系
git checkout -b <local_branch_name> origin/<remote_branch_name>// 或者git branch —track <local_branch_name> origin/<remote_branch_name>
  • 本地已经存在的分支和远端分支建立对应关系
git branch —set-upstream <local_branch_name> origin/<remote_branch_name>
  • 添加远端库
git remote add <远端库代称> <远端库地址>git clone <远端库地址> <目录>   //不需要git init
  • 回滚到某一个提交版本
git reset --hard/soft <commit_id> // 回滚到某一个版本git reset --hard/soft HEAD~<num> // 回滚num个提交git revert <merge_commit_id> -m number // 撤销某一次merge
  • 强制远端覆盖本地
git fetch --allgit reset --hard origin/<remote_branch_name>
  • 提交日志查看方式
git log -p 每一次提交具体差异git logstat 显示文件修改差异,没显示具体修改git log —graph 树形状提交记录,可查看分支合并信息
  • git pull —rebase有冲突后,解决冲突,使用git add .然后使用git rebase --continue

  • 切换到某个分支,将其他分支的某次提交应用到该分支

git checkout <branch_name>git cherry-pick <commit id>
  • 前者表示把到之间(左开右闭,不包含start-commit-id)的提交cherry-pick到当前分支;后者表示把到之间(闭区间,包含start-commit-id)的提交cherry-pick到当前分支。
git cherry-pick <start-commit-id>..<end-commit-id>git cherry-pick <start-commit-id>^..<end-commit-id>
  • tag

    • 新建tag

      git tag //轻量标签
      git tag -a -m “tag_msg” // 附注标签
      git tag -a // 给某次提交添加标签

    • 删除tag
      git tag -d <tag_name>

    • 查看tag

      git tag // 查看所有tag
      git show // 查看某条tag

    • 提交到远端

      git push origin // 将某个tag提交到远端
      git push origin –tags // 将所有tag提交到远端

  • branch相关指令

git branch -d <branch_name> // 删除某个分支git branch -D <branch_name> // 强制删除某个分支git branch -avv // 查看本地分支与远端分支关系,并且显示分支最新一次提交信息git remote show origin // 查看远端分支间关系

参考资料:
https://www.cnblogs.com/ayseeing/p/3572582.html
http://blog.csdn.net/xiaohanluo/article/details/53214933
http://github.phodal.com/#git

原创粉丝点击