V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
northisland
V2EX  ›  程序员

github 的高级用户们,来做几道解释命令的题,我搬着小板凳洗耳恭听

  •  
  •   northisland · 2015-08-20 16:36:50 +08:00 · 4142 次点击
    这是一个创建于 3420 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自己一直没系统的学过 git 命令相关的知识,更别说 hub 命令了。
    学到用时方恨少,最近想弄一个叫 caffe_future 的开源项目,安装的门槛都过不去 ToT 。请各位不吝赐教,帮我解释下面几个命令是在干嘛:

    1. git checkout master
    2. git branch -D future
    3. git checkout -b future
    4. hub merge https://github.com/BVLC/caffe/pull/1976

    多谢了,附带原始文档~
    https://github.com/longjon/caffe/blob/future/future.sh

    顺便问问, github 使用的入门经典有什么

    10 条回复    2015-08-20 20:50:14 +08:00
    Bensendbs
        1
    Bensendbs  
       2015-08-20 16:39:19 +08:00   ❤️ 1
    582033
        2
    582033  
       2015-08-20 16:39:31 +08:00   ❤️ 1
    1 切换分支
    2 删除分支
    3 创建分支
    4 未知
    sparkrat
        3
    sparkrat  
       2015-08-20 16:43:59 +08:00   ❤️ 1
    @582033 第三个是创建并切换分支, 创建分支的命令是 "git branch feature " 233333 第四个命令是什么鬼?
    ehs2013
        4
    ehs2013  
       2015-08-20 16:44:00 +08:00   ❤️ 2
    hub 是 GitHub 出的对 git 命令的扩展,这个命令就代表 merge GitHub pull request
    coolwdp
        5
    coolwdp  
       2015-08-20 16:46:45 +08:00   ❤️ 1
    https://git-scm.com/book/en/v2 推荐 pro git 。
    英文好看原版,不行就看中文版。由浅入深,非常不错的文档。
    看到一半基本就可以上手项目了。
    Alexisused
        6
    Alexisused  
       2015-08-20 16:55:32 +08:00   ❤️ 1
    zerh925
        7
    zerh925  
       2015-08-20 17:02:39 +08:00   ❤️ 1
    入门:廖雪峰
    进阶: ProGIt 2
    minfzhon
        8
    minfzhon  
       2015-08-20 18:20:46 +08:00 via iPhone   ❤️ 1
    切换分支,删除分支,新建分支。 github 上有个交互式教程, 18 个步骤把 git 的基础讲得特别清楚,可以去看看
    adrianzhang
        9
    adrianzhang  
       2015-08-20 20:24:49 +08:00   ❤️ 3
    Git 是版本管理,所以把一系列版本的文件(随时间变化,源代码文件夹里总是在变化的,每个 commit 叫做一个版本,意思是把当前的代码情况当成一个版本)做快照放仓库里。 Git 的仓库设计为分布式。好吓人的名词,对吗?其实说起来特别简单。所谓仓库,就是.git 文件夹。所谓分布式,就是在参与项目的每个人那里都有个一样的.git 文件夹。在一个源(也就是所谓“ git 服务器”)上,执行以下命令:
    $ mkdir source
    $ cd source
    $ git init
    运行完毕后,在 source 文件夹下就有了.git 文件夹( Git 仓库)。接着执行:
    $ touch test.txt
    $ git add test.txt
    $ git commit test.txt
    执行这些命令后,.git 文件夹里就存储了 source/test.txt 这个情况的一个快照,作为一个版本。如果此时我们在源这个服务器上建立了 web 服务,然后允许别人从这个仓库里下载代码去做开发,那么这个源就成了 GitHub 功能的服务器。假设这个服务器是我的,命名为 adrian , Git 库的网址是 https://adrian.com/source
    现在,你来了,要跟我一起开发,于是你执行了 git clone 。假设你用 mysource 作为存储代码的文件夹,那么现在你的机器上 mysource/.git 跟我机器上的 source/.git 完全一样。这就是分布式仓库。

    好了,解释你的问题:
    git checkout master
    git branch -D future
    git checkout -b future
    hub merge https://github.com/BVLC/caffe/pull/1976

    继续拿刚才那例子说明。你做了 git clone 以后, git 软件自动把你本地的.git 文件夹里当成初始分支(branch ) 命名为: master 。
    git checkout master #就是切换到 master 分支

    git checkout -b future #你想开发点功能,但是你改一点,别人改一点,会乱,怎么办?建立一个分支,等功能开发好了,合并到主代码去。这个命令就是新建一个分支 future 并将当前的工作切到这个分支里去,从此,你在 mysource/文件夹下做的更改通过 commit ,影响的都是 future 这个分支。假设你接着在 mysource 文件夹下增加了一个文件 test2.txt ,那么 git add, git commit 后, future 这个分支有了版本 2 。

    git branch -D future #删除刚才建立的 future 分支。这样你便回到了 master 分支,此刻 mysource 文件夹里刚才建立的 test2.txt 已经不见了,这是因为 master 分支里只有最初始的版本,而没有版本 2.

    hub merge https://github.com/BVLC/caffe/pull/1976 #这句是干什么?是说 git merge 吗? git merge 就是将你的改动合并到进来。比如刚才如果没删 future 分支,先执行 git checkout master ,回到 master 分支去,然后执行 git merge future ,那么 future 的版本 2 就被合并到 master 里去了。

    通常,是建立一个分支,合并到主分支,然后删除新建的分支这样的流程。

    至于其他的概念,你看 Git 官方手册吧。 http://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5
    joshz
        10
    joshz  
       2015-08-20 20:50:14 +08:00   ❤️ 1
    廖雪峰的教程写得很好,基本点总结得到位,一天内就可以快速掌握。当然要深入还是要看书,推荐《 pro git 》
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1022 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 21:34 · PVG 05:34 · LAX 13:34 · JFK 16:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.