git

Infi-chu:

http://www.cnblogs.com/Infi-chu/

代码管理工具:
1.代码管理工具作用:
    *防止代码丢失,做备份
    *代码版本的管理,可以进行多个节点的备份,在多个版本之间跳跃
    *可以方便的将代码在多人之间进行共享传输
    *多人开发时有各种模式可以方便代码管理

2.什么是git:
    git是一个开源的分布式版本控制系统,可用于高效的管理大小项目

3.分布式与集中式:
    分布式:
        每个节点都保存完整的代码,没有明确的中央服务器,节点之间项目推送下载代码,完成代码共享
    集中式:
        代码集中管理,每次完成的代码上传到中央管理器,然后再统一从中央管理器下载代码使用

4.git特点:
    *git可以管理各种文件,特别是代码项目,多数情况下在Linux/Unix系统中使用
    *分布式管理,不同于集中式,这是git和svn的核心区别
    *git可以更好的支持分布式,方便多人协同工作
    *git分布式代码更加安全,方便多人协同工作,有全球唯一的commit版本号
    *git是开源的系统
    *使用git可以脱网工作,并且数据传输速度较快

5.安装git:
    Linux/MacOS(Ubuntu系列):
        sudo apt-get install git
    Windows:
        找适当的版本
        msysgit.github.io(Windows下操作GitHub的工具)

6.git配置:
    配置级别:
        1.系统中所有用户都可以使用该配置
            命令:
                git config --system
            配置文件:
                /etc/gitconfig
        2.当前用户可以使用该配置
            命令:
                git config --global
            配置文件:
                ~/.gitconfig
        3.当前项目可以使用该配置
            命令:
                git config
    配置文件:
        项目文件/.git/config
        【注】再有冲突重复的情况下,优先使用范围小的配置

7.git配置内容:
    1.配置用户名:
        sudo git config --system user.name 用户名
        创建密码
    2.配置邮箱:
        sudo git config --global user.email 邮箱
        【注】优先使用范围小的配置

8.git操作:
    1.初始化仓库:
        git init
        在某个目录下初始化仓库后会自动产生.git目录。该目录下工作的所有文档都可以使用git进行管理。
    2.配置编译器:
        cd 项目目录
        git config core.editor sublime
    3.查看当前项目的配置信息:
        git config --list
    4.查看分支状态:
        git status
        默认工作分支是主分支master,可通过创建新的分支切换
        eg.
            echo "This is a git test file" > Readme.txt
    4.提交文件(工作区-->暂存区):
        git add 文件名1 文件名2
        git add *
        git add 目录名
        git rm --cached 文件名1    #取消暂存
    5.同步文件(暂存区-->本地仓库):
        git commit -m "说明性、描述性文字"
    6.修改文件:
        eg.
            echo "Add a test line!" >> Readme.txt
            git add Readme.txt
            git commit -m "update Readme.txt file"
    7.查看commit日志:
        git log    # 查看所有日志
        前七位是刚刚提交的码(ID),整体是全球唯一ID
        git log --pretty=oneline    #查看单行日志
    8.工作区文件与本地仓库的差异:
        git diff Readme.txt
    9.误删工作区文件,恢复该文件:
        eg.
            rm -rf Readme.txt
            git chechout Readme.txt
        【注】此时恢复的是在本地仓库备份的那个文件,之前在工作区改动的文件无法恢复。
    10.本地文件的移动和删除:
        与mv、rm命令的用法相同,区别就在于在开头处写一个git
        【注】无需add,直接提交
    11.丢弃工作区修改:
        git chechout -- Readme.txt
    12.版本控制:
        回到之前版本:
            git reset --hard HEAD^    #有几个上箭头(^)就回到上几个版本
            git reset --hard 七位ID    #回到这个7位ID的版本(指定版本)
        用最新的版本:
            查看所有历史版本号:
                git reflog
            git reset --hard 七位ID    #commit操作中大括号数值最小的({})就为最新版本
            【注】HEAD可以理解为指针

9.标签管理:
    定义:
        在当前位置添加快照,保存工作状态,一般用于项目版本的迭代。默认是在最新的commit-id处打标签。
    创建新的标签:
        git tag v1.0    #打标签
        git tag -d v1.0    #删除标签
        git tag v1.0 -m "version 1.0"    #打标签并附加信息
        git tag v0.9 七位ID    #在指定版本添加标签
        git show v1.0    #查看标签的基本信息(内容、基本操作等)
        git reset --hard v1.0    #恢复到某一指定标签的版本下

10.临时工作区:
    定义:
        再有突发任务时,且当前工作不想提交时,可以创建临时工作区。或者在同一个项目中,有好几种想法,不知道哪一个更合适,可以创建临时工作区。
    操作:
        git stash    #保存工作目录
        git stash list # 查看保存工作目录列表
        git stash apply stash@{1}    #恢复到指定工作区(应用某一个工作区)
        git stash pop    #在最新的临时工作区,恢复到上一个临时工作区并删除
        git stash drop stash@{3}    #删除某一个工作区
        git stash clear    #删除所有的临时工作区
        【注】{0}为最新的临时工作区,数值越大越旧

11.分支操作:
    什么是分支:
        分支是每个人获取原有代码,在此基础上创建自己的工作环境,单独开发,不会影响其他分支的操作,开发完成后在统一合并到主线分支中。
    分支的好处:
        *安全
        *不影响他人工作
        *自己控制进度
    查看当前分支:
        git branch    #前面有*的表示当前正在工作的区域
    创建分支:
        git branch miaomiao    #创建了喵喵分支
    切换分支:
        git chechout miamiao    #切换到喵喵分支
    提交分支:
        同之前
    同步分支:
        同之前
    合并至主分支:
        git chechout master    #切换至主要分支
        git merge miaomiao    # 将喵喵分支与主分支合并
        【注】
            1.合并过程中,如果没有冲突,则直接合并,合并之后,当前分支即为干净的分支
            2.如果产生冲突,则需要人为的选择在进行add、commit等操作
            3.在创建分支前,尽量保证当前分支是干净点,以减少冲突的发生
    删除分支:
        git branch -d miaomiao    #删除喵喵分支(合并后可用-d删除)
        git branch -D miaomiao    #没有合并的分支需要用-D删除(-D强制删除没有合并的分支)

12.远程仓库:
    什么是远程仓库:
        远程主机上的仓库。实际上git是分布式的,每一台主机的git结构都是相似的,只是把其他主机的git仓库叫远程仓库
    创建共享仓库:
        1.创建目录
            mkdir gitrepo
        2.设置目录属主
            chown tarena:tarena gitrepo
        3.将该目录设置为共享的git仓库
            cd gitrepo
            git init --bare [项目名称].git
        4.设置本地仓库属主
            chown -R Infi_chu:Infi_chu [项目名称].git
    上传至共享仓库:
        git remote add origin 用户名@目标IP地址:/路径/xxx.git    #连接添加远程仓库
        git push -u origin master    #将主分支推至远程仓库(第一次推送需要-u)
        git remote rm [origin]    #删除远程主机名
        【注】
            1.origin是远程仓库默认的名称
            2.默认的协议是ssh协议
    获取远程仓库的项目:
        git clone 用户名@目标IP地址:/路径/xxx.git
    从远程仓库拉取分支或代码:
        直接拉取远程分支和当前工作区分支合并:
            git pull origin 分支名称
        拉取远程分支到本地,不合并:
            git pull origin 远程分支名:本地分支名
    代码退出和拉取:
        将本地代码推送至远程仓库:
            git push
            git push --force origin    #当本地版本比远程仓库版本旧时,用本地旧版本覆盖远程仓库的新版本
        从远程仓库更新代码:
            git pull
            git fetch    #如果有新的分支拉取到本地,不会和本地的分支合并

你可能感兴趣的:(git)