git入门

 

检出仓库
执行如下命令以创建一个本地仓库的克隆版本:
git clone / path / to / repository 
如果是远端服务器上的仓库,你的命令会是这个样子:
git clone username @ host:/ path / to / repository
工作流
你的本地仓库由git维护的三棵“树”组成。第一个是你的工作目录,它持有实际文件;第二个是暂存区(Index),它像个缓存区域,临时保存你的改动;最后是HEAD,它指向你最后一次提交的结果。

添加和提交
你可以提出更改(把它们添加到暂存区),使用如下命令:
git add <filename>
git add *
这是git基本工作流程的第一步;使用如下命令以实际提交改动:
git commit -m“代码提交信息”
现在,你的改动已经提交到了HEAD,但是还没到了你的远端仓库。

推送改动
你的改动现在已经在本地仓库的HEAD中了。执行如下命令以将这些改动提交到远端仓库:
git push origin master
可以把master换成你想要推送的任何分支。 

如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:
git remote add origin <server>
如此你就能够将你的改动推送到所添加的服务器上去了。
分支
分支是用来将特性开发绝缘开来的。在你创建仓库的时候,主是“默认的”分支。在其他分支上进行开发,完成后再将它们合

并到主分支上。


创建一个叫做“feature_x”的分支,并切换过去:
混帐的结帐-b feature_x
切换回主分支:
混帐的结帐主
再把新建的分支删掉:
GIT中分支-d feature_x
除非你将分支推送到远端仓库,不然该分支就是不为他人所见的:
git push origin <branch>

更新与合并
要更新你的本地仓库至最新改动,执行:
git pull
以在你的工作目录中获取(fetch)并合并(merge)远端的改动。
要合并其他分支到你的当前分支(例如master) ),执行:
git merge <branch>
在这两种情况下,git都会尝试去自动合并改动。遗憾的是,这可能并非每次都成功,并可能出现冲突(conflicts)。这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。改完之后,你需要执行如下命令以及它们标记为合并成功:
git add <filename>
在合并改动之前,你可以使用如下命令预览
差异:git diff <source_branch > <target_branch>

为什么概念早已存在,在SVN中也有。你可以执行如下命令创建一个叫做1.0.0的标签:
git tag 1.0.0 1b2e1d63ff
1b2e1d63ff是你想要标记的提交ID的前10位字符。可以使用下列命令获取提交ID:
git log
你也可以使用少一点的提交ID前几位,只要它的指向具有唯一性。

替换本地改动假如
你操作失误(当然,这最好永远不要发生),你可以使用如下命令替换掉本地改动:
git checkout - <filename>
此命令会使用HEAD中的最新内容替换掉你的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。

假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:
git fetch origin
git reset --hard origin / master

实用小贴士
内建的图形化git:
gitk
彩色的git输出:
git config color.ui true
显示历史记录时,每个提交的信息只显示一行:
git config format.pretty oneline
交互式添加文件到暂存区:
git add -i

链接与资源
图形化客户端
GitX(L)(OSX,开源软件)
Tower(OSX)
Source Tree(OSX,免费)
GitHub for Mac(OSX,免费)
GitBox(OSX,App Store)
指南和手册
Git社区参考书
专业Git
像git那样思考
GitHub
帮助图解Git
摘自:http://www.runoob.com/manual/git-guide/

 

 

以下是您在本教程中完成的内容:

创建了一个开源存储库
开始并管理一个新的分支
更改了文件并将这些更改提交给GitHub
打开并合并了一个拉请求
看看你的GitHub个人资料,你会看到你的新贡献正方形!


GitHub的是用于版本控制和协作的代码托管平台。它可以让您和其他人在任何地方协同工作。
存储库可以是存储想法,资源甚至与他人共享和讨论事物的地方。
在GitHub上上,保存的更改称为提交。每个提交都有一个关联的提交消息,这是一个解释为什么进行特定更改的描述。提交消息可捕获更改的历史记录,因此其他贡献者可以了解您已完成的操作以及原因。
详细步骤:HTTPS://guides.github.com/activities/hello-world/

PS:根据本人学习进度不断更新总结,力求完善自己的Git的知识系统。

下面是一些git的基本指令,需要时帮助理解确认使用:(只需要在Git Bash中输入git回车即可)

用法:git [--version] [ - help] [-C <path>] [-c <name> = <value>]
           [--exec-path [= <path>]] [ - html-path ] [--man-path] [--info-path]
           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir = <path>] [ - work-tree = <path>] [--namespace = <name> ]
           <command> [<args>]

这些是在各种情况下使用的常见Git命令:

启动一个工作区(另请参阅:git help tutorial)
   clone将存储库克隆到新目录
   init创建一个空的Git存储库或重新初始化现有存储库

处理当前更改(另请参阅:git help daily)
   添加文件内容添加到索引
   mv移动或重命名文件,目录或符号链接
   重置将当前HEAD重置为指定状态
   rm从工作树中删除文件并从指数

检查历史和状态(另请参阅:git help revisions)
   bisect使用二进制搜索查找引入错误的提交
   grep打印与模式
   日志匹配的行显示提交日志
   显示显示各种类型的对象
   状态显示工作树状态

增长,标记和调整您的公共历史
   分支列表,创建或删除分支机构
   检查切换分支或恢复工作树文件
   提交对存储库
   差异的记录更改显示提交,提交和工作树之间的更改等
   合并将两个或多个开发历史记录连接在一起
   rebase在另一个基本
   标记标记之上重新应用提交创建,列出,删除或验证使用GPG签名的标记对象

协作(另请参阅:git help workflows)
   fetch从另一个存储库中下载对象和引用
   pull从另一个存储库或本地分支
   push中获取和集成更新远程refs以及相关对象

'git help -a'和'git help -g'列出了可用的子命令和一些
概念指南。请参阅'git help <command>'或'git help <concept>'
以了解特定的子命令或概念。

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫stage,或index。一般存放在“.git目录下”下的索引文件(.git / index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录。git的,这个不算工作区,而是混帐的版本库

 

Git 工作流程

一般工作流程如下:

  • 克隆 Git 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

git diff

执行git diff来查看执行git status的结果的详细信息。

git diff命令显示已写入缓存与已修改但尚未写入缓存的改动的区别.git diff有两个主要的应用场景。

  • 尚未缓存的改动:git diff
  • 查看已缓存的改动:git diff --cached
  • 查看已缓存的与未缓存的所有改动:git diff HEAD
  • 显示摘要而非整个diff:git diff --stat

 

推荐廖雪峰git教程,和菜鸟教程中的git教程,可以结合着参考来学习。

如果你新手,想快速入门,掌握git这门工具,那么我推荐还是用Git GUI可视化的操作界面会更好,或者是在你精通git之前最好先用Git GUI,自己摸索两边就可以添加项目了。往git里推送了。

因为想用命令行的方法操作来用git,个人感觉还是用GUI更方便一些,与命令行相比之下,效率会更高一些。如果在做项目时,个人推荐还是用GUI更好一些,如果真的感兴趣的可以抽出时间多实践实践,把一些常见的易忽略的操作中的问题搞懂就差不多了,毕竟它是一门工具,我们最主要的是高效使用它达到我们目的。

如果对界面操作用一些疑问的地方可以参考菜鸟教程里面的git教程,里面有GUI的教程。