Git

    xiaoxiao2022-07-13  146

    一、什么是Git?

     

        git是当前世界上最流行的分布式版本控制器,没有之一

     

    二、什么是分布式?什么是集中式?

     

        集中式:最大的问题就是太依赖中央服务器的存在,如果没有中央服务器,所有人都没办法进行版本控制等工作。

            

     

        分布式:最大的特点就是每个人的电脑本身就是一个完整的版本库,如果没有网络也可以进行版本的控制。

                

     

            注意:分布式的版本控制在实际开发过程中,为了方便代码的交换,通常还是会有一个台中央服务器。和svn的区别在于,git如果没有这个中央服务器也是能够工作的,就是交换代码不太方便。但是svn脱离的中央服务器就完全没办法工作。

     

    三、Git的起源

     

        Git发明者就是Linux之父 - Linus

        Linus在1991年开创了Linux。

        那个时候,世界各地的大神自发开始对Linux进行相关的代码维护。对于这种情况来说,版本控制就是一个很大的问题。

        在2002年之前,Linus都是手动整合。这个情况持续到2002年之后,随着Linux的源码越来越大,社区的人数也越来越多,手动整合就变得越来越困难了。

        这个时候,有一家商用版本控制器的公司BitMove,处于人道主义精神,免费授权Linux社区免费使用他们的版本控制器。

        这种情况就几年的时间,Linux社区的一个大牛就破解了这个版本控制系统,BitMove就收回了Linux社区免费试用权。

        Linus就花了2周的时候用c语言写了一个Git,仅仅只有1个月时间,Linux的所有源码全部托管了Git上。

        git的名声变得越来越大,并且2008年的时候,GitHub上线,无数的开源项目迁移到GitHub上进行托管。

     

     

    四、Git的安装

     

    五、Git的基本结构

     

        

     

    六、Git的基本命令 - 本地库的操作

        

        新建git管理库:

            git init - 新建当前路径为Git版本库

            git init [path] - 新建指定的路径为Git版本库

     

        配置签名(因为Git本身没有账号系统,当前的签名就是你的身份认证):

            用户签名 - 跟当前的Git管理库绑定,其他的Git管理库无效:

            git config user.name "ken"

            git config user.email "ken@qq.com"//可以是假的邮箱

     

            系统签名 - 当前电脑上的所有Git管理库都有效:

            git config --global user.name "ken"

            git config --global user.email "ken@qq.com"   

     

        查看状态

            git status - 查看当前Git管理库的状态

     

        操作暂存区

            git add [文件名称]   -将工作区的指定文件提交到暂存区中

            git add .     -将当前路径下的所有文件提交到暂存区

            git rm --cache [文件名称]      -将暂存区中的文件移除

            git commit [文件1] [文件2]    -将暂存区的文件提交到本地库中(这个过程需要手写一个备注)

            git commit -m "备注" [文件]      -将暂存区的文件提交到本地库中(直接在命令上指定备注)

            git commit       -将暂存区的所有文件提交到本地库

     

        历史记录的操作

            git log     -查看历史版本(比较全)

            git log --oneline    -按照一行的方式,显示当前的历史版本(只会显示当前版本以及之前的版本)

            git reflog     -按照一行的方式,显示当前的历史版本(会显示所有的历史记录版本)

     

            git reset --hard [版本号]    -定位到指定的历史版本

     

        找回删除的文件

            删除的文件没有提交到本地库:git checkout -- [被删除的文件]

            删除的文件提交到本地库:git reset --hard [文件未被删除的版本号]

     

        文件的差异比较(建议使用图形界面)

            git diff [文件名]      -将工作区的文件和暂存区的文件进行差异比较

            git diff     -将工作区的所有文件和暂存区进行差异比较

            git diff [版本号]     -将工作区的所有文件和指定版本进行差异比较

     

        分支的操作

            什么是分支?

            在实际开发过程中,版本的更新提交可能不能直接操作主线(主分支),这个时候就可以考虑从主分支上开辟一个新的分支,新的分支和主分支一模一样,但是对新分支的操作不会影响主分支,等新分支完成任务之后,再合并回主分支就好了。

     

            分支的特点:

            · 分支不一定要从主分支分出来,子分支也可以随意创建分支

            · 分支的合并也不一定是合并到主分支上,也有可能是从主分支合并到子分支上

     

            分支的相关命令:

            git branch -v        -查看当前管理库的所有分支

            git branch [分支名称]       -从当前所在的分支开创一个新的分支    

            git checkout [分支名称]    -切换到指定的分支上(注意:切换分支的时候,如果当前分支有未提交的内容,则会随着分支的切换一起带过去)

            git merge [分支名称]      -合并分支(注意:当前必须定位到被合并的分支上,然后执行该命令;合并分支有很大的可能发生冲突,冲突的解决办法和SVN相同)

            git branch -d [分支的名称]      -删除分支(注意:如果一个分支没有发生过任何的合并,git不让删除这个分支,如果需要强制删除,则执行-D)        

     

     

    七、Git的基本命令 - 远程库的操作

     

        git remote -v      -查看当前本地管理的远程仓库

        git remote add [别名] [仓库的地址]      -添加远程仓库的管理,设置一个别名

        git push [别名] [分支名]    -将本地仓库的文件或者修改推送到指定的远程库中

        git clone [仓库的url]    -将远程库的文件克隆到本地(本地还没有和远程库建立联系,用clone)

        git pull [别名]  [分支名]      -将远程库的修改拉取到本地(本地已经和远程库建立联系,用pull)

     

    八、GitHub

     

        什么是GitHub?

        是一个全球最大同性交友网站 - GayHub

     

        网址:

        https://github.com

     

    九、Idea如何操作Git

     

        相关配置:

        

     

     

     

     

     

        

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    最新回复(0)