zoukankan      html  css  js  c++  java
  • 关于git的用法

    一,安装git

      下载地址 https://git-scm.com/download/win

    二,如何使用git

      (1)首先你要点进去https://github.com/这个网站,注册一个github账号。注册好之后,要记住邮箱和密码

      (2)打开之前的那个图标就是这样一个窗口,首先Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识,分别输入这两个命令,用户名和邮箱需要换成自己的。

      $ git config --global user.name "ycbou"

      $ git config --global user.email "qiyincui77@163.com"

      (3)  打开之前的那个图标就是这样一个窗口。现在比如我在我的C:/wamp/www/aaa有一个项目,我要对它进行管理怎么办呢。直接在控制台里面输入  cd   c:/wamp/www/aaa  之后你就会在aaa这个目录里面了。那如何对它进行管理呢。直接在控制台输入git  init

    之后去查看aaa目里会多了个.git 的文件夹,如果看不见也没事,因为隐藏文件不可见

       下面去新增一些文件,随便输入些内容,然后再git里面输入 git status。会发现添加的文件名是红色的

    红色说明文件做了修改但是还没保存到本地仓库,我们紧接着执行 git add . 再敲git status 发现刚才的红色文件名变成绿色的了,

    我们继续敲 git commit -m "做修改"

    敲完之后,使用git status 发现上面说工作区很干净。没有文件要被提交

    三,git原理

    git 分为工作区、暂存区、本地仓库

    工作区:你现在编辑器所处的那个工程里面,

    git status 是状态查看,查看你工作区和暂存区有没有文件被提交到本地仓库,如果有工作区未向暂存区保存就显示红色

    如果有暂存区没有提交到本地仓库就绿色

    什么是本地仓库呢,就是一开始说的那个不可见的文件,你一执行git init就会有一个本地仓库出来

    如果从工作区把文件提交到暂存区呢?就是使用 git add . .代表所有,也可以写成 git add index.html 【index.html】

    就是你做了变动的文件名  git add .  就是把文件从暂存区提交到本地仓库

    使用 git commit -m ‘做修改’ 引号里面的内容是自己添加的一个备注, 

    在文件里继续添加一段话,再git status 查看当前状态。发现有未向暂存区提交的保存  接着 

    git commit -m ‘第二次修改’ 将暂存区文件提交到本地仓库,之后 再用git status 查看,

    发现已经没有文件提交;了

    四,版本回退

    到目前为止,我们向工作区提交了两次修改,git 给我们提供了一个git log可以查看最近的提交历史

    如果觉得很乱可以使用 git log --pretty=oneline

    可以看出我们的两次提交,前面那串黄色的就是我们的版本号,现在要回到我原先的版本怎么办

    可以使用git reset --hard HEAD^ 这个命令回退到上一个版本

    回到上上个版本,可以使用命令 git reset --hard HEAD^^ 

    我们也可以同给某个版本号回退到相应版本

    git reset --hard 【版本号】

    如果我现在又发现原来新版本的解决方法了,我又想回到新版本上去怎么办呢?

    现在用git log 已经不能看到新版本的版本号了,只能采用新命令了  叫git reflog 来查看命令历史

    使用git reset --hard 【版本号】回到最新版本

    现在接着往下进行,在index.html 接着添加一行

    后来发现这句话不慎和是,这个时候可以直接删除,然后git add . 就好了。

    但是也可以通过git checkout -- index.html .此时前面那句话没有了,这种情况适用于我们没有git add到暂存区之气an

    如果我们已经git add到暂存区了,怎么撤销修改呢 我们可以使用git reset HEAD index.html 先撤销暂存区的修改

    然后我们可以通过命令git diff查看暂存区和工作区有什么不同,之后我们可以通过git checkout --index.html

    发现已经修改好了,但是万一我们已经提交到仓库里,那就是上面说的版本回退了

    五、删除文件

    新建一个test.txt  git add tsxt.txt 已经 git commit -m "xxx"

    现在如果要删了,通过git status 发现工作区和本地库已经不一样了,

    如果确实要删除 就 git rm test.txt 之后再git commit -m 'remove'

    如果删除错了,还原回来的话 用 git checkout -- test.txt

     六、远程仓库

    首先你要点进去https://github.com/这个网站,登录你刚才注册的github账号。

    ssh-keygen -t rsa -C youremail@example.com

    把这个邮箱替换成自己的

    之后一路回车,如果一切顺利的话你去你的C盘下去找你的user文件夹,有的叫用户,你在里面搜索一下有没有一个.ssh的文件夹,把它打开之后,里面有这几个文件

    之后接着打开那个https://github.com/网站,登录进去。

     点击右边这个绿色的图表,点开下拉框之后里面有个setting。

    打开之后随便写入一个title,然后打开你刚才找到的再C盘里的那个id_rsa.pub.把里面的内容复制到那个key里面去,之后点击添加即可。

    之后回到一开始的这个页面,

    点击中间的那个加号

       选择第一个,这就相当于你自己在远程建了一个仓库。

    点击之后,会出来这样一个页面。现在我们在那个名字哪里写上aaa,直接点击创建就好。

    目前,在GitHub上的这个learngit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

         现在,我们根据GitHub的提示,在本地的aaa仓库下运行命令:

    $ git remote add origin git@github.com:BrouceLee/aaa.git

    请千万注意,把上面的BrouceLee替换成你自己的GitHub账户名,否则,你在本地关联的就是我的远程库。

    添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

    接着执行命令git push -u origin master

    执行完之后,我们发现我们的远程库和本地仓库已经同步了。

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

    $ git push origin master

    把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!

    七、从远程库克隆

    上次我们讲了先有本地库,后有远程库的时候,如何关联远程库。

    现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。

    首先,登陆GitHub,创建一个新的仓库,名字叫gitskills:

    我们勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。创建完毕后,可以看到README.md文件:

    现在,远程库已经准备好了,下一步是用命令git clone克隆一个本地库:

    我们在想要创建项目的地方执行下面的命令

    git clone git@github.com:BrouceLee/gitskills.git

         现在去你你想要建工程的地方开始,就可以发现大体上已经建好了。

    (8)分支管理

          分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

         现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

    首先我来创建一个分支

    执行命令git checkout -b dev 这样就创建好了一个dev分支。

    我们来介绍一下,最开始的时候我们的所有操作都是默认在一个叫做master的分支上操作的,包括提交到远程库,等等。关联远程库的时候也是从远程关联master分支。当我们用dev这个分支写完一个项目之后,我们要把这个分支所做的工作向master分支进行靠拢.

    我们现在可以通过命令git branch来查看一下所有的分支。

    git branch命令会列出所有分支,当前分支前面会标一个*号。

    然后,我们就可以在dev分支上正常提交,比如对index.html做个修改,加上一行

     然后我们执行git add index.html以及 git commit –m “use the dev first”

    现在我dev的分支工作已经做完,现在我可以切换回master分支。利用命令

    git  checkout master

           切换回master分支之后,我们发现index.html里面我们新加的那句话不在了。因为我们刚才是在dev分支上做的提交。现在我们要把分支合到master上,就利用命令 git merge dev就可以了,此时再去查看index.html发现我们在dev里面做的操作已经在master里面了。现在我们可以使用命令git branch –d dev来删除dev这个分支,之后再使用git branch来查看分支发现只有master一个分支了。因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

    三、解决冲突

    现在我们考虑这样一种情况,我们新建了一个分支feature1,利用feature1来进行把index.html里面再加一行,首先切换到feature1这个分支,然后修改index.html,之后提交。

     

         然后我们切换回master分支,现在我们在master里的index.html里面加一句话,之后进行提交。之后我们按照刚才的那种方式合并两个分支。git merge feature1会发现有冲突出现

     

    此时应该怎么解决呢,此时必须手动解决冲突。

    四.分支策略

    在实际开发中,我们应该按照几个基本原则进行分支管理:

    首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

    那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

    你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

    所以,团队合作的分支看起来就像这样:

     

    最后推荐一个详细的分工合作的网站,一定要看。https://segmentfault.com/a/1190000002413519#articleHeader2

     https://www.cnblogs.com/my-freedom/p/5701427.html

  • 相关阅读:
    Django ListView实现分页
    redis-pipeline
    MRO
    进程状态
    ORM基本操作回顾
    协程回顾
    线程的回顾
    multiprocessing- 基于进程的并行性
    Fix Curl client hung issue
    Curl request 'Expect: 100-Continue' Issues and Risks
  • 原文地址:https://www.cnblogs.com/qingcui277/p/9725031.html
Copyright © 2011-2022 走看看