美文网首页
Mac通过Terminal来使用Github

Mac通过Terminal来使用Github

作者: ynchai | 来源:发表于2018-07-13 15:44 被阅读0次

    本文中使用的一些图片和说明引用参考了一些其它文章的内容,这些文章链接详见本文末尾的参考网址说明.

    1. GitHub的注册

    这一步具体就不再详细描述了,建议根据GitHub的新手引导一步一步的做一遍,初步了解相关流程.


    2. 安装或更新Git

    使用Github的前提之一就是必须已经在Mac上安装了Git.
    通常,Mac已经安装了Git . 打开Terminal,在提示符后面输入git命令,如下图,如果git命令可以被识别,说明已经安装了Git .


    通过 git --version 可以查看当前安装的版本,如果没有安装,到 Git网站 下载并安装最新版本,如下图:


    注意上图中红框的部分,即使你已经安装了Git,建议使用红框中的命令更新到最新版本.
    安装更新完毕之后,进行git config配置:
    //显示当前的Git的配置
    git config --list
    //第一次提交需要添加邮箱账号与用户名
    git config [--global] user.name "你的名字"
    git config [--global] user.email "你的邮箱"
    

    3. SSH配置

    Terminal与GitHub之间使用SSH通信协议进行数据传输,想要将数据传输到github的时候,需要对方信任电脑. 配置流程如下:

    1. 检查本机的ssh是否存在,在Terminal中输入命令 cd ~/.ssh,如果存在会检索出有哪些,可以将这些ssh备份,或者将新建的ssh生成到另外的目录下.
    2. 通过默认参数生成ssh ssh-keygen -t rsa -C xxxx@gmail.com(注册GitHub时的email)
    1. 在GitHub中选择Settings->SSH and GPG Keys 输入Title和Key,Key中存放生成的id_rsa.pub文件中的内容.

    4.打开Terminal,输入命令 ssh -T git@github.com ,测试账号跟GitHub的连接

    Hi ynchai! You've successfully authenticated, but GitHub does not provide shell access

    4. Git的初步使用

    • 1.在GitHub中创建新的Repositor,这一步不具体描述了
    • 2.创建本地仓库,并和远程仓库进行连接,主要步骤如下:
          cd ...  //到仓库文件夹下
          git init  //初始化本地仓库
          git add <File>  //添加某一个文件
          git add *  //添加文件夹下面的所有文件
          git status  //检查状态 如果都是绿的 证明成功
          git commit -m "commit的相关描述"  //提交到本地仓库,并写一些注释
          git remote add origin SSH Key  //连接远程仓库(SSH Key在GitHub中创建的respositor中clone with SSH中复制),origin远程的别名
          git pull origin master --allow-unrelated-histories //合并一些远程仓库的内容
          git push -u origin master  //将本地仓库的东西提交到origin的master分支下面
    
    • 3. .gitignore的创建和使用
      • .gitignore文件比较重要,一般在进行项目第一次push之前进行创建和使用
      • 在本地仓库的文件夹下面 touch .gitignore 创建.gitignore文件,然后open .gitignore,写入忽略目录.
      • 具体忽略目录配置请参考 github/gitignore ,也可以在 gitignore.io 输入你需要配置的语言,生成配置.
      • 如果设置 .gitignore之前已经进行了push,可以通过以下命令,在提交:
        git rm -r --cached .
        git add .
        git commit -m 'update .gitignore'
      
      • ignore相关语法
        # 此为注释 – 将被 Git 忽略
        *.a       # 忽略所有 .a 结尾的文件
        !lib.a    # 但 lib.a 除外
        /TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
        build/    # 忽略 build/ 目录下的所有文件
        doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
      

    5. Git branch 相关操作

    # 本地分支的相关操作
    # 建立一个本地自己的分支
    git branch mybranch  //mybranch自己分支的名字
    # 查看本地有多少分支
    git branch
    # 切换到新建的分支
    git checkout mybranch  //此时进行修改只是在mybranch上,不会影响master,此时可以进行修改、add、commit操作
    # 切换回原来的分支
    git checkout master
    # 将之前在mybranch上的修改合并到master
    git merge mybranch
    # 删除无用的mybranch分支
    git branch -d mybranch
    # 将本地master的修改push到远程
    git push 
    ## 新建和切换branch一次完成
    git checkout -b branchname
    
    # 远程分支的相关操作
    # 查看远程分支
    git branch -r
    # 现在本地创建一个远程没有的分支
    git checkout -b branchname
    # 将本地分支链接到远程分支
    git push origin branchname//将本地分支链接到远程,同时在远程上也创建同一分支,origin远程仓库名字, branchname本地创建的分支名字
    # 将修改后的branchname push到远程分支branchname
    git push --set-upstream origin branchname
    # branchname代码没有问题,合并到主分支
    git checkout master
    git merge branchname
    git push
    # 删除远程分支
    git push origin :branchname
    ## 1.7版本之后,也可以使用以下语句
    git push origin --delete branchname
    # 删除本地分支
    git branch -d branchname
    

    6. Git撤销git add 文件 、撤销 commit 文件

    • 撤销 git add 文件
    # 将修改提交至stage区
    git add xx.file
    # 重置HEAD指针,xx.file 变为 unstaged,git diff和git status又可以查看
    git reset HEAD xx.file
    # 修改错误后撤销修改
    git checkout --xx.file
    
    • 撤销 git commit 文件
    # 将修改或者添加从stage提交到本地仓库
    git commit -m "xxxxx"
    # 把commit文件的状态更改为staging
    git reset --soft HEAD^ //之后再用git status,提示有修改的内容可以commit
    # 重新修改commit
    git commit --amend -m "new message" //git log可以看到这条commit记录,之前的那条没有了,如果只是想修改commit的message,不用中间更改状态的直接用这一句就可以,但是如果有别的修改,就需要有中间那一句
    # 撤销上一次的commit和all changes
    git reset --hard HEAD^
    # 撤销上二次的commit和all changes
    git reset --hard HEAD^^
    

    7. Git tag标签相关操作

    tag是对历史一个提交id的引用,如果理解这句话就明白了. 使用git checkout tag即可切换到指定tag,例如:git checkout v0.1.0切换到tag历史记录会处在分离头指针状态,这个是的修改是很危险的,在切换回主线时如果没有合并,之前的修改提交基本都会丢失,如果需要修改可以尝试git checkout -b branch tag创建一个基于指定tag的分支,例如:git checkout -b tset v0.1.0 这个时候就会在分支上进行开发,之后可以切换到主线合并

    # 打标签
    git tag -a v1.0.1 -m "Release version 1.0.1"  //git tag 是打标签命令, -a是添加标签,其后跟上新标签号, -m后面是相关描述
    # 提交标签到远程仓库, git push不会将标签传送到远端服务器上
    ## 提交单个标签
    git push origin [tagname]
    ## 提交所有标签
    git push [origin] --tags
    ### 如果以上命令不起作用,请在Git控制台上确认你的账号是否有权限推送Tag
    # 删除标签
    git tag -d v1.0.1 //-d表示删除,后面跟上要删除标签的名字
    # 删除远程标签
    git push origin  :refs/tags/v1.0.1
    # 查看标签
    git tag / git tag -l
    # 获取tag对应的代码,先clone整个仓库,然后
    git checkout tagname
    # 获取tag对应的代码,并在这个基础上进行修改
    git checkout -b branch_name tag_name  //从tag创建一个分支,后续操作和普通的git操作一样
    
    

    8. Git常用命令

          git init  //git 初始化(进入本地目录以后)
          git remote add origin url  //连接远程仓库origin(url)
          git diff  //看看有什么修改的,检测unstaged文件的差异
          git diff --staged  //查看staged文件的差异
          git status  //检查状态
          git add .  //本目录下所有修改和新的文件添加至Stage(暂存区)
          git add *  //同上面的注释
          git commit -m "message"  //将更新和修改从Stage提交到本地仓库
          git pull origin master  //远程仓库相对本地的更新
          git push origin master  //将本地仓库的修改提交至远程仓库
          git rm "文件"  //删除文件
          git clone url  //下载工程 url 是远程的url
          git log  //获取版本记录状态
    

    附上一张 w3c 的git常用命令速查表:


    参考网址

    1. 在Mac(OS X)中使用GitHub的超详细攻略(20170706)
    2. Mac下使用GitHub
    3. Mac下使用github
    4. MAC下GitHub命令操作
    5. 关于使用终端terminal对GitHub项目进行管理
    6. mac下使用git向GitHub提交项目代码
    7. Git的一些常用命令,及.gitignore的配置
    8. Git分支与多人协作-Git使用总结!
    9. Git查看、删除、重命名远程分支和tag
    10. git reset soft,hard,mixed之区别深解
    11. Git中tag的用法
    12. Git教程-分支和tag管理
    13. git学习--GitHub上如何进行PR(Pull Request)操作
    14. Pull Request的正确打开方式(如何在GitHub上贡献开源项目)
    15. Which remote URL should I use?
    16. 真正理解 git fetch, git pull 以及 FETCH_HEAD

    相关文章

      网友评论

          本文标题:Mac通过Terminal来使用Github

          本文链接:https://www.haomeiwen.com/subject/gqijpftx.html