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

2015-08-20 16:36:50 +08:00
 northisland

自己一直没系统的学过 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 使用的入门经典有什么

4137 次点击
所在节点    程序员
10 条回复
Bensendbs
2015-08-20 16:39:19 +08:00
582033
2015-08-20 16:39:31 +08:00
1 切换分支
2 删除分支
3 创建分支
4 未知
sparkrat
2015-08-20 16:43:59 +08:00
@582033 第三个是创建并切换分支, 创建分支的命令是 "git branch feature " 233333 第四个命令是什么鬼?
ehs2013
2015-08-20 16:44:00 +08:00
hub 是 GitHub 出的对 git 命令的扩展,这个命令就代表 merge GitHub pull request
coolwdp
2015-08-20 16:46:45 +08:00
https://git-scm.com/book/en/v2 推荐 pro git 。
英文好看原版,不行就看中文版。由浅入深,非常不错的文档。
看到一半基本就可以上手项目了。
Alexisused
2015-08-20 16:55:32 +08:00
zerh925
2015-08-20 17:02:39 +08:00
入门:廖雪峰
进阶: ProGIt 2
minfzhon
2015-08-20 18:20:46 +08:00
切换分支,删除分支,新建分支。 github 上有个交互式教程, 18 个步骤把 git 的基础讲得特别清楚,可以去看看
adrianzhang
2015-08-20 20:24:49 +08:00
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
2015-08-20 20:50:14 +08:00
廖雪峰的教程写得很好,基本点总结得到位,一天内就可以快速掌握。当然要深入还是要看书,推荐《 pro git 》

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/214595

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX