zoukankan      html  css  js  c++  java
  • Git使用指南(下)

    9 初识分支

    把每一次的提交,都用线连起来,你会发现,很连贯。

     

    C/C++    指针的概念

    git reset --hard commitid

    HEAD    如果说内容已经add到暂存区,此时要想撤销的话,需要先回到最新的一个commitid上     HEAD   HEAD^  HEAD^^

    HEAD就表示当前最新的版本的commitid,也就是最新的指针指向

    Master分支是主分支,也是git为你默认创建的分支

    一定就有其他分支

    Master分支指向的是最新的提交commitid,头指向指向的是我们的master分支。

    但是git的强大之处远不止如此,而是有一个多人协作开发的概念。

    不仅是一个单人开发进行版本控制,同时可以多人协作开发进行一个版本控制。  就是通过git的分支进行的。

    10 详解分支

    在主分支master上切出一个开发分支,比如叫”dev_wang” 

    git checkout -b dev_wang;     创建一个分支

    现在你所有的操作都是在一个新的分支上进行

    刚才一系列的操作都是在dev_wang分支上进行了,现在再次切换到主分支

    Git branch可以查看当前所有的分支情况,并且可以看到目前所处的分支(*)

    在不同的分支上进行的版本管理,只有在自己的分支上才会生效。

    HEAD的一个补充:HEAD头指针指向的是当前分支最新的commitid

    假设我们觉得一个分支没啥用了,想要删除该分支怎么办呢?

    现在所处的分支是dev_wang,想要删除它的话,你必须在其他分支上。

    这时候你只能强制性的删除该分支

    git branch -D dev_wang

    11 分支合并和冲突解决

    主分支master我们不会去动,只会用于版本的发布。

    各自在自己的分支上开发完成之后,需要将开发的内容合并到主分支上去。这个时候成为merge

    需求:一个新的开发人员dev_zhang

    (1)git checkout -b dev_zhang;

    (2)进行文件的修改并且addcommit

    (3)此时在小张的分支上多了一个commitid,这时候需要把这个小张修改的内容进行版本的发布,就需要把小张的修改内容合并到master分支上。

    切换到master分支,合并dev_zhang的开发内容

    合并的操作:快速合并   master分支上,git merge dev_zhang;

    (1)git branch -d dev_zhang;  //上一个小节我们这样去做的时候,它有一个不能删除的提示,这个提示是告诉你需要进行分支的合并。

     

    当你的项目开发人员很多,2个,小张,小李,合作开发一个项目

    需求:小张,小李合作开发一个项目,这个项目两个人负责不同的模块

    小张:商品管理的模块

    小李:订单管理的模块

    master分支作为一个版本发布的分支,不应该进行直接在上面开发

    (1)git checkout -b dev_zhang

    (2)git checkout -b dev_li

    (3)分别在小张和小李的分支上进行开发之后

    发现master分支上并没有小张小李的开发内容

    (4)小张和小李的开发内容发布到master分支

    分支的合并

    合并的冲突的问题

    需要手动解决冲突,并且再去进行add,commit的操作。

    git checkout -b test

    12 Git config和配置别名

    在你刚装完git的时候,老师让你去配置了一个email  name,只有这样你才能使用git

    git config配置git的命令

    git config -l   查看所有的配置信息

     

    这里所有的信息实际上都是整合出来的,整合哪边的呢?

    仓库级别,全局级别,系统级别

    优先级是什么     

    所谓的仓库级别的配置:当前仓库级别下的.git>config文件

    全局级别的:当前用户之下表示的是全局级别的

    系统级别:在我们的git安装目录下etc

    Git config --global --add user.name itcrazy2016

    Git config --global --unset user.name

    这个命令其实比较实用

    Git status   git add    git commit

    Git log --pretty=oneline

    这些命令太长了,能不能简化?

    Git st   表示查看用户状态

    Git cm   提交commit

    Git log one   查看一行信息?

    配置别名?

    git config --global alias.st status    表示用st代表status

     

    13 打标签和忽略文件

     

    打标签:

     

    Commitid不容易记住,能不能用一种比较独特的方式去记住每个版本

     

    118.222.113.253    这样访问网站方便?

     

    www.baidu.com   域名访问网站方便?

     

    Commitid   as2731aa    <------>    标签

     

    想要给最新版本的id打上一个标签    -----git tag v1     将最新版本的commitid对应上v1

     

    查看一下当前仓库的标签列表    git tag

     

    给之前已经错过的commitid去打上一个标签,怎么操作?

     

    git tag v1pre d619d86

     

    这个标签你看起来还是不够过瘾,你也可以给这个标签加上一个说明

     

    Git tag v2.0 -m “这里打上了一个标签”

     

    就得能够删除标签   git tag -d v1

     

     

     

    忽略文件

     

    创建了一个Person.class的类文件,发现git标注为Untracked file   未被追踪的文件

     

    Git add Person.class   肯定是可以的

     

    我希望这个文件不能被git管理起来

     

    能不能让git将这个文件(这类文件)给忽略呢?

     

    .class   git你不要帮我去管理.class的类文件

     

    仓库的根目录下创建一个.gitignore 文件

     

    这个规则你要让git能够看懂

     

    告诉git让他不要帮你去管理这个文件了

     

     

    14 本地仓库和远程仓库

     

    假设主分支master已经存在,这时候多了一个开发人员,你怎样给他一个分支?

     

    每个人要至少在自己的电脑上进行开发?

     

    而这个master分支仅仅用于版本的发布的。

     

    用一台公共的电脑作为一个远程仓库,供每个开发者使用,每个开发者可以去创建各自独立的分支进行开发,开发完成之后,把各自的代码推到远程仓库上。

     

    局域网:一台远程仓库    私有的公共仓库

     

    项目:很小,想要让所有开发者都参与进来,那么就应该有这样一台公共的让所有人都能访问的远程仓库。同时这样做的好处是:可以更加方便的管理开源代码。     大家都一起使用的仓库。

     

    很显然是存在,GitHub 国外的远程仓库  世界各地的开发者都可以在上面进行自己代码的管理

     

    码云  国内的远程仓库   

     

    问题是,你把代码放到他们上面,除非你交一些会员费,代码才不能让别人看见,不然你提交到你账号上的代码都公开的。

     

    搭建自己的私有仓库的话,让别人不可见,怎么做呢?Gitlab

     

    15 GitHub和码云

    Github  远程仓库

    Gupaogit    本地仓库

     

    把本地仓库gupaogit   上传到github上去进行。

    (1)在远程仓库github创建一个对应的项目比如gupaogit    repository仓库   

     

     

    16 操作远程和本地仓库

    pushpullclone

    代码的内容推送 ,将本地的内容推送到具体的远程仓库上

    本地的gupaogit   ----->  github/码云   gupaogit

    (1)要让两者有关联

    在本地仓库中配置一下它和远程仓库的关系,它俩是一家人。

    当前本地仓库是否有远程仓库,如果有,那么它的远程仓库是什么? git remote

    本地仓库中:git remote add origin远程仓库的地址?git@github.com:itcrazy2016/gupaogit.git

    origin 本地仓库和远程仓库的地址进行一个关联   

    git push -u origin master    是推送代码,那么就不是指定远程仓库。

    这样关联之后,接下来就是把代码推送到远程仓库上

     如果在上传本地代码到github仓库时,出现下面这个问题:

    $ git remote add origin https://github.com/...*.github.miniSpring.git
    fatal: remote origin already exists.

    解决办法:

    先移除
    git remote rm origin
    再次添加
    git remote add origin https://github.com/.*.github.io.git

    如果要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行 git remote add [shortname] [url]:

      $ git remote

      origin

      $ git remote add pb git://github.com/paulboone/ticgit.git

      $ git remote -v

      origin git://github.com/schacon/ticgit.git

      pb git://github.com/paulboone/ticgit.git现在可以用字串 pb 指代对应的仓库地址了.比如说,要抓取所有 Paul 有的,但本地仓库没有的信息,可以运行 git fetch pb:

      $ git fetch pb

    (2)本地仓库和远程仓库进行关联之后,就可以进行的推送了

    git push -u origin master   将本地仓库的内容推送到远程仓库   

    无论是推送还是拉代码,需要有这样一个权限,也就是说你目前使用的这台电脑是否安全,如果不安全,人家不会让你去推送

    【没有权限的情况下】

    需要添加权限

    1. 需要在本地中生成一个ssh key

    ssh-keygen -t rsa -C "itcrazy2016@163.com"   在自己的计算中中增加一个安全ssh key

    盖上了一个章,就表示你这个电脑认证后的ssh_key

    B.需要把这个key告诉github/码云

    把公钥放到ssh key

    保证数据传输的一个安全性

    如果说是在其他分支进行的修改,需要进行一个分支的合并

    要推送其他分支的,指定一下要推送的分支即可git push -u origin dev_zhang;

    注意:

    git操作是出现Username for 'https://github.com':的验证问题

    Username for 'https://github.com': 输入的是github上的邮箱账号, 而不是github中设置的username, 这是个巨坑!!!
    Password for 'https://你的github邮箱@github.com': 输入github的登录密码,点击enter键即可.

     Git删除文件,再提交到远程github上

    $ git rm -r --cached 目录名或文件名 

    $ git rm -r --cached test.txt 删除 test.txt文件


    $ git commit -m '描述'    如果 git commit进行操作 会弹出框 输入 :qa确定,然后重新$ git commit -m '描述'  操作
    $ git push -u origin master

    新来了一个哥们,小王,需要进行一个开发

    需要把远程仓库的代码拉倒本地进行开发

    (1)clone  克隆操作

    前提是:sshkey也要添加完成

    Git clone git@github.com:itcrazy2016/gupaogit.git

    当远程仓库的版本内容如果和本地仓库的内容不一致,需要先git pull,把远程仓库的内容拉下来到最新版本才行,然后进行手动解决冲突

    Gitlab   视频   咕泡学院官网

    http://bbs.gupaoedu.com/forum.php?mod=viewthread&tid=258&extra=page%3D1&_dsign=495dcb55

    如果大家后期反馈有需要老师帮忙录制一个视频操作的话,后面再给大家补上这个视频

    From Gupao 

     

     

     

     

     

  • 相关阅读:
    com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: INSTALL_FAILED_UPDATE_INCOMPATIBLE:
    vue 使用video.js循环
    微信小程序使用iconfont
    小程序使用可滑动的tab
    vue cli2引入iconfont
    Couldn't find preset "es2015" relative to directory
    Electron桌面应用框架的使用,结合react项目
    如何用Linux重现《黑客帝国》中的经典界面?
    iOS----------证书的制作
    iOS----------charles如何设置本地映射、和取消本地映射
  • 原文地址:https://www.cnblogs.com/flgb/p/12452357.html
Copyright © 2011-2022 走看看