zoukankan      html  css  js  c++  java
  • git学习小结 (笔记)

      Modesty helps one to go forward, whereas conceit makes one lag behind.

      "虚心使人进步,骄傲使人落后"

    :本文参考 廖雪峰的Git教程 ,非常感谢廖大神的无私奉献,本文仅作为笔者的学习笔记,如果需要完整的学习git,请猛戳前面的链接^_^

    一、git是什么?
       1、git是什么?
            "git是世界上最先进的分布式版本控制系统(没有之一)"  --廖雪峰
       2、为什么要学习git?
            git是一种高效且方便的版本控制工具,在实际开发中可以大大提高工作效率哦 ^_^ ~~

    二、安装git

    1 sudo apt-get install git

    三、创建版本库

    1 [mkdir <库名>]
    2 [cd <库名>]
    3 git init     #将当前目录初始化为一个git仓库

    四、版本控制
       1、将文件添加到版本库

    1 git add <filename>          #把文件添加到暂存区,注意该文件必须放在仓库目录(或子目录)下
    2 git commit -m "提交说明"     #把暂存区的内容提交到当前分支

       2、查看工作区的状态

    1 git status                   #查看工作区的修改记录
    2 git diff <filename>          #如果git status提示有修改记录,那么这条命令可以查看修改内容

       3、版本切换

    1 #HEAD指向当前版本
    2 git reset --hard commit_id   #回退到commit_id指定的版本
    3 git log [--pretty=oneline]   #查看从最近到最远的提交日志,加上"[]"内的参数可以以"版本号 提交日志"的格式查看
    4 git reflog   #查看命令历史

       4、撤消修改

    1 git checkout -- <file>       #撤消工作区的修改
    2 git reset HEAD <file>        #撤消暂存区的修改,返回工作区修改的状态

       5、删除文件

    1 git checkout -- <file>       #用版本库里的版本替换工作区的版本
    2 git rm <file>                #删除暂存区里的文件

    五、远程仓库
       1、创建SSH Key:

    1 #进入用户主目录下的.ssh目录(没有则自己创建):
    2 ssh-keygen -t rsa -C "email@example.com"     #创建SSH Key,注意填写正确的邮箱地址
    3 #登陆GitHub,打开"Account settings""SSH Keys"页面,然后"Add SSH Key",填写"Title",将id_rsa.pub的内容拷贝到Key文本框,"Add Key"

       2、添加远程库

    1 #登陆GitHub,"Create a new repo"创建一个新仓库
    2 git remote add origin git@server-name:path/repo-name.git        #将本地仓库关联到远程库
    3 git push [-u] origin master     #推送最新修改,第一次推送时要加上-u参数

       3、从远程库克隆

    1 git clone git@server-name.com:path/name.git     #克隆一个远程库到当前目录

    六、分支管理
       1、创建与合并分支
             分支的作用是什么:当开发项目中的某一个任务的时候,可以使用新的分支完成,之后合并到master分支再删除新分支,这样做可以比较安全的管理项目,因为在某分支上的操作只会修改该分支包含的内容,比较安全

    1 git branch <name>       #创建分支
    2 git checkout <name>     #切换分支
    3 git checkout -b <name>  #创建并切换
    4 git merge <name>        #合并分支到当前分支
    5 git branch -d <name>    #删除分支
    6 git log --graph         #查看分支合并图

       2、分支管理策略
            Fast forward模式:该模式是分支合并时的默认模式,在这种模式下,删除分支后,会丢失分支信息,在实际开发中不推荐使用该模式。

    1 git merge --no-ff -m "XXX" b-name       # "--no-ff" 参数表示禁用Fast forward模式

            分支管理的基本原则:
                    ①master分支仅仅用来发布新的版本;
                    ②团队成员都在dev分支上工作,每个人都在dev分支的一个子分支上工作;

       3、bug分支

    1 git stash       #保存当前的"工作现场"
    2 git stash apply #恢复现场但不删除stash的内容
    3 git stash drop  #删除stash的内容
    4 git stash pop   #恢复现场并删除stash的内容
    5 git stash list  #查看stash的内容

            bug修复策略:创建一个新分支修复bug,然后合并,删除
            步骤:保存当前"工作现场"-->创建并切换到bug分支-->修复bug-->切换到bug分支的上层分支-->合并并删除bug分支-->切换回原来的工作分支-->恢复"工作现场"。
       4、feature分支
            新增功能的策略:创建新分支,然后合并删除

    1 git branch -D <name>    #强行删除一个没有被合并的分支

       5、多人协作

    1 git remote -v   #查看远程库信息
    2 git pull        #抓取最新的提交到本地仓库
    3 git push origin branch-name                     #将本地分支推送到远程仓库
    4 git checkout -b branch-name origin/branch-name  #在本地创建和远程分支对应的分支
    5 git branch --set-upstream branch-name origin/branch-name        #建立本地分支和远程分支的关联

            多人协作的工作模式:
                    ①试图用  git push origin branch-name  推送自己的修改;
                    ②如果推送失败,则因为远程分支比本地分支更新,需要先用 git pull 抓取到本地然后试图合并
                    ③如果合并有冲突,则先解决冲突,并在本地提交;
                    ④没有冲突或者解决掉冲突后,用  git push origin branch-name  推送

    七、标签管理
       1、创建标签

    1 git tag                 #查看所有标签
    2 git show <tagname>      #查看标签的详细信息
    3 git tag <tagname> [commit id]   #新建一个标签,默认为HEAD,也可以指定一个commit id
    4 git tag -a <tagname> -m "xxx"   #指定标签信息为 "xxx"
    5 git tag -s <tagname> -m "xxx"   #用PGP签名标签

       2、操作标签

    1 git tag -d <tagname>    #删除一个本地标签
    2 git push origin --tags  #推送全部未推送过的本地标签
    3 git push origin <tagname>       #推送一个本地标签
    4 git push origin :refs/tags/<tagname>    #删除一个远程标签

    八、使用GitHub
       在GitHub上,可以任意Fork开源仓库,并且自己拥有Fork后的仓库的读写权限,可以推送 pull request 给官方仓库来贡献代码

    九、自定义Git
       1、忽略特殊文件
            ①忽略某些文件时,需要编写 .gitignore ,并在文件中加上要忽略的文件名;
            ② .gitignore 文件本身要放到版本库里,并且可以对 .gitignore 做版本管理;
       2、配置别名
            ① git config [--global] alias.new-name old-name #将 new-name 作为 old-name 的别名,加上--global表示对当前用户修改,不加则仅仅对当前仓库修改; 
            ②除了使用  config 参数外,还可以通过修改配置文件来配置别名:每个仓库的配置文件放在 .git/config 中,当前用户的配置文件则放在Home目录下的 .gitconfig 中;
       3、搭建Git服务器
            ①安装git:  sudo apt-get install git 
            ②创建git用户: sudo adduser git 
            ③创建证书登录:收集所有需要登陆的用户公钥,即 id_rsa.pub ,把所有公钥导入到 /home/git/.ssh/authorized_keys 文件中,一行一个;
            ④初始化Git仓库:先选定一个目录作为Git仓库,假设是 /srv/sample.git ,在 /srv 目录下输入: sudo git init --bare sample.git ,并修改仓库的所有者为git: sudo chown -R git:git sample.git 
            ⑤禁用shell登录:将文件 /etc/passwd 中类似这样的一行: git:x:1001:1001:...:/home/git:/bin/bash 修改为 git:x:1001:1001:.../home/git:/usr/bin/git-shell
            ⑥克隆远程仓库: git clone git@server:/srv/sample.git 

    总结:git包含了很多的参数和用法,但是经常用到的不多,以后多加练习应该就可以熟练使用了

    本站所有文章,若无说明皆为原创,转载烦请注明转自: ———— http://www.cnblogs.com/autyinjing/ ———— 若发现叙述不清或者有误的,还烦请提出建议和意见!
  • 相关阅读:
    android openGL ES2 一切从绘制纹理開始
    HTML5 界面元素 Canvas 參考手冊
    python进阶十_正則表達式(一)
    HDU 3016 Man Down(线段树)
    android 自己定义dialog并实现失去焦点(背景透明)的功能
    上海传智程序员携手设计狮美女雨中烧烤!!
    vim visual操作备忘
    MySQl Study学习之--MySQl二进制日志管理
    Android View measure (三) 经常用法
    Analyze提示:Value stored to &quot;***&quot;is never read
  • 原文地址:https://www.cnblogs.com/autyinjing/p/4528464.html
Copyright © 2011-2022 走看看