Git的使用

  Git是版本控制工具,是一个优秀的开源的分布式版本系统,他有三个区域:工作区、暂存区、版本库。
  在初始化git版本库之后会生成一个隐藏的文件 .git ,可以将该文件理解为git的版本库 repository,而我们自己建立的项目文件夹即工作区 working directory ,在.git 文件夹里面还有很多文件,其中有一个index 文件 就是暂存区也可以叫做 stage ,git还为我们自动生成了一个分支master以及指向该分支的指针head。
在这里插入图片描述
  相当于工作区就是我们开发环境,里面的内容就是我们工作内容。版本库也就是我们的.git文件夹里的内容,版本库里面包含暂存区index和分支。工作区里的代码以及配置文件只有通过add后才可以添加到暂存区,然后commit才会把暂存区的东西提交到分支中。

git init
git status
git add .
git status
git commit -m “增加文件” -m的意思就是提交的描述
git log 每次commig后都会得到一个40位的hash值,也就是一个commit参数来表示提交记录,可以用这个参数进行回滚。

在这里插入图片描述
git checkout – file 可以丢弃工作区的修改,文件复原(用版本库的内容进行复原)。
在这里插入图片描述
  Git reset HEAD 撤销已经add的文件,也就是把暂存区的修改退回到工作区。此时还需要进行一次git checkout – 的操作丢弃工作区的修改,文件才会复原。
在这里插入图片描述
  版本回退,也就是我不仅add到暂存区,还commit了,此时查看git log发现已经有修改记录了,此时想回滚就必须版本回退。首先查看当前版本是哪一个版本。

HEAD 表示当前版本
HEAD^ 表示上一个版本
HEAD~100 上100个版本

  所以我们执行git reset --hard HEAD^命令文件恢复。恢复之后log的最新的状态的hash码就被藏了,没有删除哈。可以通过git reflog来看到,git log看不到的。
  也可以指定回到哪一个版本,通过git reset --hard 版本号(git relog看)来回到哪一个版本。
在这里插入图片描述

删除恢复

  git checkout – 如果不小心手动删除了工作区的文件,但是因为版本库里还有(之前commit了的),可以用这个命令文件恢复。
在这里插入图片描述

删除版本库里的文件

  如果确定要删除该2.txt的管理,就用git rm删掉并且git commit。
在这里插入图片描述
  git rm就是通过git操作工作区进行文件删除,和我们往常的手动windows删除不一样。git rm删除文件后还是一样删除操作放到了暂存区,commit后才到分支中,如果还没commit想撤回,就Git reset HEAD 回退到暂存区。

克隆远程操作并提交本地修改

  git clone http地址 克隆远程仓库到本地仓库,然后对本地仓库进行修改(add commit),然后再git push到远程仓库进行同步。
  git push origin master 其中origin代表远程的master,后面的master表示本地的master。说明就是把本地的master分支提交到远端的master。
  git push <远程主机名> <本地分支名>:<远程分支名>
  如果此时,我们在远端仓库中对代码进行了修改,那么本地库需要进行同步,也就是把远程库同步到本地库。使用命令git pull origin master,也就是取回远程主机某个分支的更新,再与本地的指定分支合并,origin指的是远端的master,第四个master指的是本地的master。
在这里插入图片描述

本地仓库关联远程仓库

  git remote add orgin <ssh地址>
  git push -u origin master 将本地库的内容推送到远程,实际上是把当前分支master推送到远程。加上了-u参数,git会把本地的master分支和育成的master分支关联起来,在以后的推送或者拉取时可以简化命令。

分支管理、冲突解决

  在公司里,肯定不能直接对主分支master进行操作,必须用自己的分支进行操作然后再和主分支进行合并。Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点。
在这里插入图片描述
  每一次提交,master分支都会向前移动一步。
  当用git创建一个分支develop,此刻会增加一个develop指针,同时将HEAD指向develop,而工作区的文件没有任何变化。
在这里插入图片描述
  git branch develop 创建分支
  git checkout develop 切换分支
  git checkout -b develop创建并切换
  git branch 查看分支
  git branch -d develop 删除develop分支
  当把head的指针指向我们新创建的分支develop后,此刻工作区的修改和提交就是针对develop分支了,此时不管怎么修改add、commit代码,都是指针对develop分支的,如果之后你再返回到master分支(或者其他分支),你会发现那些之前再develop分支的操作都没有了。比如新提交一次后,develop指针往前移动一步,同理,master新提交一次后,也往前移动一步。
  这里需要注意的是,你新建一个分支,那意味着从此刻开始,之后两个分支就要走不同的路了。
在这里插入图片描述
  有分支之后,我们最终的目的还是把我们自己的分支和主分支master进行合并,因为master分支和develop分支各自都分别有新的提交,Git试图把各自的修改合并起来,但这种合并会有冲突,就需要解决冲突。
在这里插入图片描述
  在master分支下,用git merge develop将两个分支合并起来,合并成功后将会产生冲突。merge是合并的意思,这里是把develop分支合并到master主分支上(针对的是本地哈)。如果你想把主分支合并到自己的分支,则进入自己的分支,然后git merge master。
在这里插入图片描述
  可以看到冲突的位置在1.txt,我们可以查看1.txt的内容发现冲突的地方都标注了。用<<<<<,======,>>>>>标记出不同分支的内容。冲突的意思就是无法合并。

在这里插入图片描述
  在公司中,因为我们不能直接对远端master分支进行操作,所以我们要新建一个属于自己的分支,然后再在本地创建一个一样的自己分支,然后通过这个自己的分支进行操作。

① 首先在远端创建一个分支,然后在本地执行git fetch origin(将远程仓库的master分支下载到当前branch中)。这里如果git fetch origin出错,是因为没有.git这个文件夹(版本库),此时执行git init就可以了。
② 然后在本地创建一个和远程分支一样的本地分支git branch YOUR_BRANCH_NAME origin/YOUR_BRANCH_NAME。
③ 接着切换到自己的分支进行操作git checkout YOUR_BRANCH_NAME。
④ Git status查看本地分支修改状态,然后add,然后commit,然后push
⑤ 此时我们自己的本地仓库分支的内容就同步到远端的自己的分支里了,然后再Merge Request,请求管理员把我的分支内容更新到远端主分支中。
⑥ 管理员同意后,主分支内容就更新了,之后就可以进行合并了。合并操作如下:
在这里插入图片描述
  当然,也可以直接用git pull origin master,相当于是从远程获取最新版本并merge到本地。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值