Git工具入门

开始

首先记下学习路线,学习资源,熟悉基本概念。访问GitHub主页,找到Hello World guide, 点此git guide

这里翻译guide里面的一些重要句子

  • GitHub是一个代码托管平台,用于版本控制和合作(对于什么是什么的句子能够体现出专业性)
  • 重要概念:仓库,分支,提交,拉请求(后面再详细讨论)

Git使用步骤理解

  • 创建一个仓库之后,有一个默认的master分支,要创建一个新的分支,在GitHub平台上的操作是点击分支列表,输入分支名,点击创建。这个创建分支的时候有一个当前分支,创建的分支是从当前分支里面分出来的,所以创建分支的时候要注意观察当前分支是哪一个。
  • master也可以向其他分支提交合并申请,但是这样做是不符合规范的,这里是要说明Git的内部逻辑,一个仓库(项目)可以创建很多分支,也就是说一个项目可以有很多的开发线,其实每条线都可以向其他线发起合并申请(你来合并我吧)(前提:符合一些逻辑条件,至少我比你新,或是说我有你没有的,如果我有的你都有了,这个请求是不合理的,也就是不允许的)。收到其他分支合并申请的分支可以决定是否要合并申请方的修改。但是实际上,应该都是其他分支向master分支提出合并申请(Pull request),而尽量避免在其他分支间随意发起合并申请和合并执行等操作,容易混乱。

使用Git工具

在Windows平台下,使用git for windows. 首先回顾一下git的特点, git是一个分布式的版本控制工具。有些概念和思考方式跟svn的使用不一样。前面是在GitHub上体验了一下git的功能,GitHub只是提供了一个操作和管理接口,也就是说我们是在远程操作git, 这样由于网络的原因,操作不流畅。那么第一个需求就是,怎么在本地使用git, 然后把代码提交到线上,使用svn的话就是从库上checkout, 在工作备份上修改好之后commit. 那么git从线上到本地的操作叫克隆, 怎样从线上克隆到本地呢?这里选择使用git gui的方式, 先从直观的方式入手。

这里有一篇博客 Git GUI的使用
这里也有一篇Git GUI上传文件

Git的提交跟SVN的提交有一点不同,Git的提交是向某个版本确认更改,加入到更改历史记录里面去,而要把代码提交到线上(或是一个共用的服务器),这个操作叫Push,也就是上面说到的上传文件。

Git GUI界面的几个按钮的用法

  • Rescan: 扫描目录文件, 列出没有加入到项目的文件
  • Stage Changed: 改变状态,准备提交到版本历史。
  • Sign Off: 签名, 登录用户名
  • Commit: 提交到版本记录。
  • Push:同步到克隆源。

使用git命令

设置签名

git config --global user.email "you@example.com"
git config --global user.name "Your name"

在使用git命令之前,先设置好用户名和邮件地址,这个只是系统要求的一个签名标识,否则就提交不了代码。git 的提交是指的把代码提交到当前分支,而当前分支也是属于仓库的一部分,仓库是由分支组成的。

创建仓库

git init

在当前目录下会创建一个.git的目录,这个目录就是创建的仓库,而当前目录代表的是工作区。

加入暂存区(stage, index)

git add .

点号表示把当前目录下的所有文件加入到暂存区。

提交更改

git commit -m "this is comment"

-m选项表示写的注释。

在工作区内编辑文件
编辑工作区内的文件,表示当前的开发工作。

比较差异

git diff

这个差异表示的是工作区和当前分支的最新状态之间的差异。查看当前进行了哪些修改。

哪些修改

git status 

这个命令可以列出工作区和当前分支的最新状态之间有哪些修改。

先加入暂存区,然后才能提交

git add .      # 添加所有的修改到暂存区(包括文件修改和文件新增)
git add <filename>    # 添加某个文件的修改到暂存区

然后是提交修改

git commit -m "comment"  
#或
git commit -a -m "comment"    # 提交之前自动添加到暂存区,但是对新增文件的情况
#(接上)无效,只对文件修改和删除文件的情况有效。

删除文件的情况也可以使用git add <filename> 命令。在实际使用中估计最常用的应该就是先git add .全部添加到暂存区,然后再git commit -m "message" 提交修改。

百度搜索 git命令详解

本地仓库和远程仓库之间的协作

git是一个分布式的版本控制系统,不需要联网,在本地磁盘的任意一个目录下就可以创建一个仓库,并且这个仓库就具有版本控制的功能,提交,版本历史,分支,检出等功能,但是如果没有网络协作能力,那也是失去了关键功能,远程仓库的功能就是在不同位置的两个仓库之间同步和复制的能力。

克隆仓库

git clone <仓库地址>  
#可以是本地路径,也可以是网络地址,可支持多种协议,如https, ssh等。

克隆仓库除了把被复制仓库的内容复制了一份之外,多了一个关键影响就是在克隆仓库和被克隆仓库之间多了一个联系,克隆仓库的remote列表里面多了一个值,把被克隆仓库的地址当成了克隆仓库的远程主机之一。

其实,git仓库都有remote属性,只是通过git init创建的仓库的remote列表还是空的而已,git仓库的remote列表表示跟哪些主机可以建立联系,可以执行同步和拉取得动作。

主机名
默认的主机名是origin, 一个主机名代表某个特定地址的主机。在克隆仓库的时候可以指定主机名。

常用命令

git branch      #列出本地分支
git branch -r   #列出远程分支
git branch -a   #列出所有分支
git branch <new_branch>  #创建分支
git checkout <branch_name>  #切换分支
git push <远程主机名> <本地分支名>:<远程分支名>
git pull <远程主机名> <远程分支名>:<本地分支名>
git checkout -b dev origin/dev   #相当于克隆远程的一个分支
  • 在克隆仓库时,只会克隆仓库的当前分支。

总结

以上基本对git的概貌有了一个认识,可以使用git进行代码管理了,对git的一些基本概念有了一定的认识,可以在GitHub上创建一个仓库了,然后在本地克隆这个仓库,在本地进行修改提交,最后推送更新到GitHub上对应的远程仓库上去。以后在使用的过程中再详细记录git的使用经验。

不错的学习博客

http://www.ruanyifeng.com/blog/2014/06/git_remote.html (易懂)
http://www.cnblogs.com/baby-blue/p/6130569.html (专业)
http://www.cnblogs.com/cspku/articles/Git_cmds.html (命令速查)

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值