Git的简单使用

来源:互联网 发布:淘宝详情页的图片大小 编辑:程序博客网 时间:2024/06/03 13:32


文章来源地址:http://blog.jobbole.com/53573/

15 分钟学会使用 Git 和远程代码库

  • AC2015前端技术大会
  • 手机UI设计基础-尺寸
  • R语言之数据可视化
  • Qnext前端交互沙龙
Git是个了不起但却复杂的源代码管理系统。它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作。让我们诚实一记吧:Git是复杂的,我们不要装作它不是。但我仍然会试图教会你用(我的)基本的Git和远程代码库干活的工作步骤,在15分钟内。

 

工作步骤

我会展示以下的步骤,通常能帮我独自在一台或多台机器上做项目。
  1. 创建一个远程的空代码库(在BitBucket上)
  2. 在本地代码库添加一个项目
  3. 在分支上开发新功能
  4. a) 保留新功能 或者 b) 丢弃它们
  5. 也许,回到某个早先的时间点
  6. 将本地代码库推送到远程代码库
  7. 在另一台机器上取得远程代码库

 

安装Git    

在大多数*nix系统(Linux、OS X)上,Git已经被安装了。你通过发送下面的命令,可以通过Git自身,把它更新到最新的的开发版本(不推荐)。
在Windows上,你可以在这里下载Git的安装程序。如果你真的需要其他系统的安装程序,Mac OS X安装文件在这里,Linux的操作指导在这里。

 

创建一个远程代码库

很多人喜欢用Github。我个人更喜欢BitBucket,因为它提供了不限制的私有代码库,那是我最需要的。你可以将下列指令转换到Github上,这些过程是相同的。
那么,去到www.bitbucket.org并注册一个账号。一旦完成,登录后点击最上方的“create(创建)”按钮。照着填写表格,勾选私有代码库。你可不想让其他人来偷窥你的Facebook的杀手级应用的源代码,对吧。
 你现在可以离开BitBucket了,我们在已经有了所有那里需要的东西了。

 

设置Git

在我们能用Git工作之前,我们需要做个一次性的配置。为了Git能跟踪到谁做了修改,我们需要设置你的用户名。我强烈建议你使用与注册BitBucket账号相同的用户名和电子邮箱地址。发送这些命令,相应地替换掉其中的“your_username”和“your_email@domain.com”(注意引号):
我们也会设定推送(push)的默认值为‘simple’。要了解这是什么意思,快速阅读我之前发布的关于推送的默认值(非必须)。发送这条命令:
我们都设好了。你无需在你的机器上再重复这些配置,但如果你在另一台机器上工作的话,不要忘记这些配置。如果你忘记做初始的配置,Git不会允许你提交任何东西,这会让你困扰。

 

创建一个本地代码库

作为例子,我们会假装我们有一个网站(无所谓技术)存在于我们机器上的‘workspace’文件夹下的’my_site’文件夹内。在命令行中,去到你的站点的根文件夹。在OS X和Linux上:
在Windows上:
我们首先需要告诉Git这个文件夹是我们需要跟踪的项目。所以我们发送这个命令来初始化一个新的本地Git代码库
Git会在my_site文件夹内创建一个名为.git的隐藏文件夹,那就是你的本地代码库。

 

加载(Stage)文件

我们现在需要命令Git我们需要加载(stage)所有项目文件。发送:
最后的“.”符号的意思是“所有文件、文件夹和子文件夹”。假如我们只想要把特定文件添加到源代码控制中去,我们可以指定它们:

 

提交文件

现在,我们想要提交已加载(staged)的文件。阅读“添加一个时间点,在这里你的文件处在一个可还原的状态”。我们提交我们的文件时,总是附带着有意义的注释,描述了它们现在的状态。我一直用“initial commit”来作为第一个提交的注释。
就这样。现在你随时都可以回滚到这个提交状态。如果你有需要检查你现在的已加载(staged)和未加载(unstaged)文件的状态、提交等,你可以询问git的状态:

 

创建分支

建立分支是你创建代码的独立版本的动作,独立于你的主干分支。默认地,每次你提交到Git的文件都会被储存到“master(主干)”分支。
现在我们来说说,你想要向项目里添加一个功能,但你想要能够回滚到现在版本,以防出现差错,或者你决定要放弃这个功能。这就是你创建分支的时候了。创建并同时切换到你新建的分支,发送:
或者,你可以先创建一个分支然后手动切换,就像这样:
要看你现在项目下所有的分支,发送这个:
现在你可以在你的项目上无所顾忌地做任何你想做的:任何时候,你都可以回到你创建分支前的状态。注意,你同时可以有多个分支,甚至可以从一个分支上再创建一个分支。

 

合并分支

当你对你的新功能满意了的时候,你想要把它加到主干分支上。当你在你的新功能分支上时,你首先需要加载(stage)并且提交你的文件:
然后你移到你的主干分支:
像这样合并:
此时,你的主干分支和你的新功能分支会变成一样的了。

 

丢弃分支

相反,如果你打算丢弃你在分支里做的修改,你首先需要加载(stage)你的文件并且在分支里提交:
然后,你移到主干分支:
现在,你的代码处于你创建分支之前的状态了。

 

删除一个分支

如果你要把你的分支合并到主干分支,从主干(master)分支上发送:
假如修改已经合并了,它只会删除分支。假如分支没有合并,你会得到一个错误信息。删除一个未合并的分支(通常你不想保留的修改),你需要发送一样的命令附带一个大写D。意思是“强制删除分支,无论如何我不想要它了。”:

 

回滚到之前的提交状态

在某些时候,你可能想要回到之前的代码版本。首先,你需要找到你想回到哪个版本。要看所有的完成了的提交,发送:
这会输出你的提交的历史记录,像这样:
如果你想回到“adds my new feature”这个提交,简单地用提交的ID做签出(checkout)(我通常只用到ID开头的9个字符)
你也可以签出到一个新的分支,像这样:
只是别太疯狂了!你的分支越复杂,就越难确定你真正在做什么。

 

推送到远程代码库

在第一次你想推送一个本地代码库到远程代码库时,你需要把它添加到你的项目配置里。像这样做:
注意这里的“origin”只是一个习惯。它是你的远程代码库的别名,但是你可以用其他任何你喜欢的词。你甚至可以有多个远程代码库,你只需要给它们起不同的别名。
之后,你想要推送你的本地代码库的主干分支到你的远程代码库:
如果你使用Bitbucket,在这时,你会被请求输入你的密码。照做,你的本地代码库会被推送到你的远程代码库上。

 

取得远程代码库的一份本地拷贝

如果你还没有一份远程代码库的本地版本(例如,如果你在另一台机器上开始工作,这台机器上还没有用过这个项目),你首先需要拷贝(clone)它。去到你的代码库想要拷贝到的文件夹下,并发送:
另一方面,如果你已经在本地的项目上工作了,只是想从远程代码库上取得它最新的版本,移动到项目的根目录下,并发送:

 

别名

Git允许你为你常用的命令创建快捷方式(别名)。例如,如果你不想每次都输入git commit -m “some comment”,而是输入git c “some comment”,你可以向你的git全局配置里添加一个别名来实现,像这样:
这是我使用的别名列表:

 

进一步

当然,还有比这些更多的Git内容。如果你想要更了解Git,我推荐官方文档和教程,你可以在http://git-scm.com/documentation找到。
有任何建议、技巧和问题?在下面留言!
 1   11 收藏  9 评论

关于作者:cjpan

海上钢琴摄影攻城师,好吧,←每个位面都只是刚起步而已。(新浪微博:@潘成杰V) 个人主页 ·  我的文章 ·  2

相关文章

  • 30 分钟 git 命令入门到放弃 ·  3
  • Git 与 Repo 入门
  • 系统管理员资源大全 ·  6
  • 探索 .git 目录,让你真正了理解git ·  2
  • 如何 DIY 自己的 Git 托管项目?别怕,我有 Pagure!

可能感兴趣的话题

  • 前端菜鸟想寻求别的出路 ·  3
  • 2017今日头条秋招笔试编程题 ·  3
  • intellij IDE 到底在哪几方面比Eclipse好呢? ·  2
  • 对于用matplotlib库写的程序,用pyinstaller或cxfreeze生成exe执行文件需要...
  • IBM的兩道面試題 ·  5
  • HTML图片左文字右设置好在一个段落里,重新设置一个段落后文字没办法在... ·  2
  

直接登录 
最新评论
  • 人微言轻 2013/12/19

    你也可以签出到一个新的分支,像这样:
    git checkout -b my_previous_version 085bb3bcb

    这里的“签”应该是“迁”啊?

  • dohkoos 2013/12/20

    @人微言轻 当然是“签”了。

    Stage怎么会翻译成“加载”的?

    • cjpan 2013/12/21

      之前搜索了一下,似乎没有特别主流的中文译法,看到叫过叫加载,或者索引,似乎觉得加载更形象一点,所以括号里也留着stage英文。

      现在直接去找“暂存”,还是能找到不少的。看来"暂存"似乎更合理一些。

  • jarvis 2013/12/20

    不错!

  • zhipeng 2013/12/21

    branch分支那段讲得挺好的!

  • 黄武 2013/12/23

    感谢LZ,亲自试用了,非常好,最后
    取得远程代码库的一份本地拷贝 那里的命令有点小错
    git clone https://your_username@bitbucket/your_username/name_of_remote_repository.git
    应该是
    git clone https://your_username@bitbucket.org/your_username/name_of_remote_repository.git

    • 黄利民站长2013/12/24

      谢谢提醒,已修改。:)

  • blowyourheart 2014/01/09

    nice,很不错呀。

  • M_Zheng_ 2015/10/22

    请问上传了本地代码库到SAE的远程代码库,为什么打开应用网址,却是空白呢?

关于伯乐在线博客

在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线内容团队正试图以我们微薄的力量,把优秀的原创文章和译文分享给读者,为“快餐”添加一些“营养”元素。

快速链接
网站使用指南 » 
问题反馈与求助 » 
加入我们 » 
网站积分规则 » 
网站声望规则 »

关注我们

新浪微博:@伯乐在线官方微博
RSS:订阅地址
推荐微信号 

合作联系
Email:bd@Jobbole.com
QQ: 2302462408 (加好友请注明来意)

更多频道

小组 – 好的话题、有启发的回复、值得信赖的圈子
头条 – 分享和发现有价值的内容与观点
相亲 – 为IT单身男女服务的征婚传播平台
资源 – 优秀的工具资源导航
翻译 – 翻译传播优秀的外文文章
文章 – 国内外的精选文章
设计 – UI,网页,交互和用户体验
iOS – 专注iOS技术分享
安卓 – 专注Android技术分享
前端 – JavaScript, HTML5, CSS
Java – 专注Java技术分享
Python – 专注Python技术分享

© 2016 伯乐在线 文章   小组   相亲   加入我们    反馈

跳到底部
返回顶部


0 0
原创粉丝点击