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

      Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

      分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

      Git的工作原理框图如下所示:

      

      首先,介绍一下在Git Bash中使用的Git相关命令。

    1、Git配置

    git config --global user.name "Your name"
    
    git config --global user.email "Your email"
    
    git config --global color.ui true
    
    git config format.pretty oneline #显示历史记录时,只显示一行注释信息

    2、本地仓库管理

      建立并初始化本地Git仓库(cd到需建立仓库的目录下):

    git init

      添加工作区中文件到暂存区(index或stage):

    git add <file name>    #可添加多个文件

      删除暂存区中的文件:

    git rm <file name>

      提交暂存区中的文件到本地仓库,并添加提交信息:

    git commit -m " comment "

      版本回退或撤销修改命令:

    #在Git中,HEAD表示当前版本,上一个版本为HEAD^,上上个版本为HEAD^^,往上100个版本为HEAD~100
    
    git reset --hard <commit id>   #回退到指定的版本(commit id为十六进制,七八位即可)
    
    git reset --hard HEAD^         #回退到上一个版本
    
    git reset HEAD <file name>     #撤销暂存区的修改
    
    git checkout --<file name>     #撤销工作区的修改    

      分支操作相关命令(master为主分支,HEAD指向当前分支):

    git branch    #查看分支,带 * 的为当前分支
    
    git branch <branch name>      #创建分支
    
    git checkout <branch name>     #切换到指定分支
    
    git checkout -b <branch name>  #创建并切换到指定分支

    git checkout -b <branch name> origin/<branch name> #创建远程分支到本地 git branch
    -d <branch name> #删除分支 git branch -D <branch name> #强制删除分支 git merge <branch name>     #合并指定分支到当前分支(Fast-Forward方式) #当Git无法自动合并分支时,须先解决冲突,再提交,合并完成

      (分支管理原则:master分支稳定,仅用来发布新版本,平时在在其他分支上操作,而不在master上操作)

      bug分支操作:

      修复bug时,要创建临时bug分支来修复,然后合并,最后删除。但当手头工作未完成时,需先把工作现场”储藏“起来,创建bug分支修复bug,再删除bug分支,最后恢复工作现场并删除stash内容。

    git stash     #把当前工作现场”储藏“起来
    
    git stash list  #查看”储藏“的工作现场
    
    git stash apply  #恢复工作现场
    
    git stash drop  #删除stash内容
    
    git stash pop   #恢复工作现场,并删除stash内容

      标签(版本)操作:

    git tag #查看所有标签
    
    git show <tag name>             #查看指定标签信息
    
    git tag <tag name>              #(创建)打标签
    
    git tag <tag name> <commit id>       #给指定的commit打标签
    
    git tag -d <tag name>            #删除标签
    
    git tag -a <tag name> -m "tag info"    #给指定标签添加信息
    
    
    git push origin <tag name>         #推送一个本地标签
    
    git push origin --tags           #推送全部未推送的本地标签
    
    git push origin :refs/tags/<tag name>   #删除远程标签

      信息查看命令:

    git status #查看本地仓库的状态
    
    git diff #查看修改的详细信息(Unix通用的diff格式)
    
    git diff HEAD --<file name> #查看指定文件修改的详细信息
    
    git log #查看提交日志(--pretty=oneline单行显示;--graph显示分支图)
    
    git reflog  #查看命令历史

      内建的图形化Git:

    gitk

    3、远程仓库操作

      Git支持连接远程仓库的协议有:SSH、https等,我们一般使用SSH协议。

      GitHub上的仓库使用SSH协议的地址格式如下(以我的仓库GaoHongchen/CSharp.git为例):

    git@github.com:GaoHongchen/CSharp.git
    或
    git://github.com/GaoHongchen/CSharp.git

      本机关联远程仓库:

    1、在Shell中,创建SSH Key:  ssh-keygen -t rsa -C "Your email"
    
        其中生成的位于.ssh目录下的id_rsa和id_rsa.pub文件须位于用户主目录
    
    2、将id_rsa.pub中的内容添加到GitHub中的SSH Key中

      查看远程仓库信息(远程仓库默认名称为origin):

    git remote  #  -v 查看详细信息(远程仓库的地址)

      将本地仓库与远程仓库关联(origin为远程仓库名):

    git remote add origin <远程仓库地址>
    
    git remote rm origin <远程仓库地址>  #解除关联

      克隆远程仓库:

    git clone <远程仓库地址>

      抓取远程仓库分支的最新版本到本地:

    git fetch origin <branch name>

      抓取远程仓库分支的最新版本到本地,并与本地分支合并:

    git pull origin <branch name>

      推送本地仓库的<branch name>分支(如master)到远程仓库:

    git push -u origin <branch name>  #第一次推送使用-u参数

      我的GitHub地址为:https://github.com/GaoHongchen/

    4、团队合作

    1. 推送自己的修改:git push origin <branch name>
    2. 若(1)失败,则因为远程分支比本地更新,须先用git pull抓取合并分支的最新版本;若git pull提示”no tracking information“,则说明本地分支和远程分支未建立连接关系,须用git branch --set-upstream <branch name> origin/<branch name>建立连接
    3. 若合并有冲突,则解决冲突,再在本地提交
    4. 执行(1)

      团队协作模式图:

      

    参考连接:

      廖雪峰的Git教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

    Git相关链接:

      GitHub:https://github.com/

      Git - Fast Version Control System:http://git.or.cz/index.html

      Git:http://git-scm.com/

      Git Reference:http://gitref.org/index.html

      Git for Windows:https://git-for-windows.github.io/index.html

      Getting Started with Git and GitHub on Windows - Kyle Cordes:http://kylecordes.com/2008/git-windows-go

      git 使用简易指南:http://www.bootcss.com/p/git-guide/

      Git 版本管理工具(一) - CSDN.NET:http://blog.csdn.net/sunboy_2050/article/details/7527877

      Github - 博客 - 伯乐在线:http://blog.jobbole.com/tag/github/page/3/

      Git工作方式:http://www.ibm.com/developerworks/cn/devops/d-learn-workings-git/

    配置管理工具:

      Git、CVS&SVN、IBM Rational ClearCase、MS VSS、Borland StarTeam

    相关术语:

    • SCM --> 软件配置管理
    • UCM --> 同一变更管理
    • PDM --> 产品数据管理
  • 相关阅读:
    转:基于科大讯飞语音API语音识别开发详解
    转:Netty系列之Netty高性能之道
    转:hadoop知识整理
    转:nginx防DDOS攻击的简单配置
    转:Google论文之一----Bigtable学习翻译
    POJ 2112 Optimal Milking(最大流+二分)
    HDU 4647 Another Graph Game(贪心)
    HDU 4671 Partition(定理题)
    HDU 4648 Magic Pen 6
    HDU 4649 Professor Tian(DP)
  • 原文地址:https://www.cnblogs.com/gaohongchen01/p/4794231.html
Copyright © 2011-2022 走看看