git结合项目基本使用

 学习博客:1,史上最浅显易懂的Git教程!

                   2,结合项目具体使用

                   3, 常用命令快速查看

                   4,git stash 用法总结和注意点

 一、git的工作原理和工作流程

      

  1. Workspace:工作区
  2. Index / Stage:暂存区
  3. Repository:仓库区(或本地仓库)
  4. Remote:远程仓库

 二、SVN和Git的主要区别?

 (1)SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。

 (2)Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

 三、windos10怎么安装git? 自行百度

 四、如何操作?

    1、创建版本库?

     什么是版本库?版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。

     具体操作命令:

Git基本命令:
(1)git配置全局用户身份
    git config --global user.name "wexiaowei"
    git config --global user.email "11111@qq.com"
 (2) pwd                                        用来显示当前目录
(3)git init                                    把这个目录变成git可以管理的仓库
(4)git add readme.txt                          添加文件到暂存区
(5)git commit -m 'readme.txt first commit!'    首次提交暂存区文件到仓库
 (6) git diff readme.txt                        查看文件修改提交前后的区别

 2、版本回退?

  如上,我们已经学会了修改文件,我们继续对readme.txt文本进行修改,再增加一行

      (1)除了版本回退,如果版本回退后又想查看最新版本的代码该怎么做呢?

(7)git log 从最近到最远显示日志
(8)git log –-pretty=oneline                    将日志用一行显示
(9)git reset --hard HEAD^                      版本回退到上一个版本
(10)git reset --hard HEAD^^                    版本回退到上上个版本
(11)git reset --hard 版本号                     切换到指定的版本号的版本
(12)git reflog                                 查看各个版本文件的版本号

、理解工作区和暂存区 的区别?

 (1)工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。
                     版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西 。=======  也就是.git目录

 (2) stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

我们前面说过使用Git提交文件到版本库有两步:

第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。

第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。也就是本地仓库

四、Git撤销修改和删除文件操作

  (1)撤销修改  ---git checkout --readme.txt

     问题1:在我未提交之前,我发现添加5555555555555内容有误,所以我得马上恢复以前的版本,现在我可以有如下几种方法可以做修改?

    第一:如果我知道要删掉那些内容的话,直接手动更改去掉那些需要的文件,然后add添加到暂存区,最后commit掉。

    第二:我可以按以前的方法直接恢复到上一个版本。使用 git reset --hard HEAD^

 解析:命令 git checkout --readme.txt 意思就是,把readme.txt文件在工作区做的修改全部撤销,这里有2种情况,如下:

1.readme.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态。
2.另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态。
对于第二种情况,我想我们继续做demo来看下,假如现在我对readme.txt添加一行 内容为6666666666666,我git add 增加到暂存区后,接着添加内容7777777,我想通过撤销命令让其回到暂存区后的状态。如下所示:

 注意:命令git checkout -- readme.txt 中的 -- 很重要,如果没有 -- 的话,那么命令变成创建分支了

(2)删除文件

  假如我现在版本库testgit目录添加一个文件b.txt,然后提交。如下

  

 如上:一般情况下,可以直接在文件目录中把文件删了,或者使用如上rm命令:rm b.txt ,如果我想彻底从版本库中删掉了此文件的话,可以再执行commit命令 提交掉

   

问题2:只要没有commit之前,如果我想在版本库中恢复此文件如何操作呢?

可以使用如下命令 git checkout -- b.txt,如下所示

文件修改/删除
(13)git checkout --readme.txt          把readme.txt文件在工作区做的修改全部撤销
(14)git chechout  分支名                切换分支

五、远程仓库

 参见博客:远程仓库部分

 

 由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在github页面中看到远程库的内容已经和本地一模一样了,上面的要输入github的用户名和密码;

从现在起,只要本地作了提交,就可以通过如下命令:

   git push origin master

把本地master分支的最新修改推送到github上了,现在你就拥有了真正的分布式版本库了。

远程仓库
(15)git remote add origin https://github.com/tugenhua0707/testgit.git   本地内容到远程仓库
(16)git push -u origin master      把本地仓库分支master内容推送到远程
(17)git push origin master         把本地master分支的最新修改推送到github上
(18)git clone https://github.com/tugenhua0707/testgit.git    从远程克隆项目到本地

六、创建和合并分支

  在 版本回填退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。

 (1)创建分支切换分支

    

 (2) 合并分支

 

 (3)删除分支

 

总结创建与合并分支命令如下:

查看分支:git branch

创建分支:git branch name

切换分支:git checkout name

创建+切换分支:git checkout –b name

合并某分支到当前分支:git merge name

删除分支:git branch –d name

问题:如何解决冲突?

 3.分支管理策略。

    通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”Fast forward”模式。首先我们来做demo演示下:

Java半颗糖
原文地址:https://www.cnblogs.com/2019wxw/p/12005126.html