git简明使用教程

一、GIT
    1.git是一个开源的分布式版本控制系统,用于高效的管理大小项目和文件。

    2.什么是代码管理工具
        *防止代码丢失,做备份
        *代码的版本管控,通过设置节点在多个版本间切换
        *建立分支,各自开发,互不影响,方便合并

    3.git特点
        *git开源的,多在linux或unix下使用,可以管理各种文件。
        *git是分布式的管理工具(svn是集中式)
        *git每台柱及都有完整代码,数据安全,分享速度快
        *got拥有更好的分支支持,方便多人协同工作
    
    4.git使用
        1.概念:
            【1】工作区:项目所在的操作目录,项目操作的区域
            【2】暂存区:用于记录工作取得工作(修改)内容
            【3】仓库区:用于将记录的工作内容备份
            【4】远程仓库:远程主机上的GIT仓库
        
        2.git的初始化配置
            命令:git config
                【1】配置系统所有用户
                        git config --system [选项]
                        配置文件位置:/etc/gitconfig

                【2】配置当前用户:git config --global [选项]
                        配置文件:~/.gitconfig

                【3】配置当前项目:git config [选项]
                        配置文件:项目目录/.git/config
                        *要求必须在项目目录下执行
            配置用户名
                e.g. 配置用户名为Elias
                sudo git config --system user.name Elias
                查看相关配置文件
                cat /etc/gitconfig

            
            配置邮箱
                git config --global user.email [email protected]
                查看相关配置文件
                cat ~/.gitconfig

            初始化空的Git仓库
                git init

            配置编译器
                为当前项目配置编译器
                git config core.editor vscode
                查看相关配置文件
                cat .git/config 

            查看项目配置信息
                git config --list
                
        3.git基本操作
            【1】初始化仓库:git init
                    将某个项目目录变为git操作目录,生成git本地仓库,该墓即可使用git进行管理

            【2】查看分支状态:git status
                    说明:初始默认工作分支为master,当工作区和仓库不一致时,会有相应的提示信息。
            
            【3】将工作区内容记录到暂存区:git add [files]
                    e.g.  将file1 file2 提交
                            git add file1 file2
                    
                    e.g.提交当前目录下所有文件
                        git add *
        
            【4】取消文件暂存记录
                    git rm --cached [file]

            【5】将文件同步到本地仓库区L
                    git commit -m [message]

                    说明:每次同步都需要添加一定的同步信息,commit操作只能同步暂存区已经记录的内容。
            
            【6】查看commit日志
                    git log
                    git log --pretty = oneline

            【7】文件比较:git diff [file]
                    说明:用于比较工作区文件和仓库文件差异
            
            【8】放弃工作区修改 
                    git checkout -- [file]

            【9】从仓库恢复文件:
                    git checkout [file]

            【10】移动或删除文件并提交暂存  
                    git mv [file] [path] 移动文件
                    git rm [file] 删除文件

    5.版本控制命令
        【1】退回到上一个commit节点:
                git reset --hard HEAD^
                说明:HEAD是commit指针,一个^表示后退一个commit。

        【2】去往指定的conit操作节点:
                git reset --hard [commit_id]

        【3】查看全部历史操作:git relog
                说明:利用改操作可以使用reset去往任意历史位置

        【4】标签创建:
                git tag [标签名称] -m [message]
                标签:在工作的重要位置添加的快照,保存当时的工作状态,一般用于版本迭代。
                注意:标签的message信息可以不写,但是最好添加
                git tag 查看历史标签

                将标签添加到指定的commit_id:
                        git tag [名称] [commit_id] -m [message]

        【5】查看标签
                git tag 查看标签列表
                git show [tag_name] 查看标签具体信息

        【6】去往某个标签节点:
                git reset --hard [tag]

        【7】删除标签:
                git tag -d [tag] 

    6.临时工作区
        【1】创建临时保存工作区:git stash 
                将工作区未提交的修改封存,让工作区回到修改前状态

        【2】查看临时工作区列表:git stash list 
                说明:最新的工作区记录为stash{0}依次排列

        【3】应用某个临时工作区:
                git stash apply [stash]

        【4】git stash drop stash@{0}
                git stash clear

    7.分支管理
        1.分支即每个人在原有的代码基础上建立自己的工作环境,单独开发,不会干扰其他分支操作,完成开发后再统一合并到主线中。
        2.多人开发建立分支优点:安全,不影响其分支,独立控制进度。
        3.分支操作命令
            【1】查看分支情况:git branch
                    说明:前面带*的表是当前正在工作分支   

            【2】创建新的分支:git branch [branch_name]
                    说明:基于某个分支创建新分支的时候原分支最好是干净的。

            【3】切换工作分支:git checkout [branch_name]

            【4】创建并切换到新创建的分支: git checkout -b [branch_name]

            【5】合并分支:git merge [branch]
                    表示将某个基于当前分支建立的分支合并过来
                    注意:
                            1.表示将某个基于当前分支建立的分支合并过来
                            2.在合并分支过程中可能产生冲突,五要手动解决
                            3.在分支操作中尽量添加新的模块,不要修改原代码内容

            【6】删除分支:git branch -d [branch]
                    注意:没有被合并的分支不能使用该命令删除
                
二、远程仓库
        1.什么是远程仓库:远程主机上的git仓库。实际上git是分布式结构,每台主机上git仓库结构相似,只是其他主机上的git仓库成为远程仓库
        2.共享仓库:git分布式结构衍生了很多工作模式,共享仓库是其中比较常用的模式之一。普通隐藏.git仓库不能被其他主机获取代码,共享仓库即可以将git项目共享的仓库。
        3.创建自己的共享库
            【1】选择共享库目录,设置目录属主。
                    mkdir gitrepo
                    chown elias:elias gitrepo

            【2】初始化该目录为git仓库,设置bare属性
                    cd gitrepo/
                    git init --bare elias.git
                    注:tedu为共享项目名称,.git为习惯后缀

            【3】将配置git目录设置为和共享仓库目录相同的属主。
                    chown -R elias:elias elias.git/

        4.添加项目到共享仓库
            【1】创建共享仓库连接:
                    git remote add origin [email protected]:/home/elias/git_repo/elias.git/
                    git remote add 对远程主机称呼 远程主机用户名@远程主机IP:远程仓库目录
                    git remote rm origin  删除名称为origin的远程主机连接
                    *该操作要在本地的一个git项目中执行
                    *与远程主机连接默认使用SSH方法
                    *origin是给远程主机起的名字

            【2】删除远程主机:git remote rm [origin]
                    注意:连接多个远程主机时,远程主机名不能重复

            【3】将本地分支推送到远程共享仓库
                    git push -u origin master
                    git push -u 远程主及名称 本地分支名称
                    *-u 表示建立对应分支自动关联,一般首次向远程推送某个分支时使用
                    *git branch -a 可以查看链接的远程分支
                    *git push 推送已经连接的分支更改
                    *git push origin:[branch] 可以删除远程分支 
                    
            【4】获取远程仓库项目
                    git clone 远程主机用户名@远程ip:远程仓库目录
                    注意:通过clone获取的远程项目到本地直接就是一个git本地仓库

                    git pull 远程主机名 分支名称 
                    拉取远程仓库分支并和本地分支合并

            【5】从远程仓库获取最新代码:git pull 拉取最新的代码
                    注意:clone后本地项目与远程已经建立关联,pull可以直接拉取代码到对应分支。

            【6】从远程获取最新内容到本地:git fetch
                    注意:pull是直接将远程分支内容拉取到本地,并和当前工作分支进行合并;fetch是将远程分支内容拉取到本地显示的对应远程分支中,如果项和当前分支合并需要再进行merge操作。
                        
                        *git fetch origin master:tmp   将远程master分支拉取到本地的新建分支tmp中

            【7】推送其它内容:
                    推送标签:git push origin [tag]
                    推送版本落后于远程版本时:git push --force origin

你可能感兴趣的:(git)