git使用原理
如果需要新建仓库:
- mkdir new_artcle//artcle为文件名 
- cd new_artcle//进入该目录 
- git init //初始化工作空间 
- git add 文件名(article) // - g- it add- 命令将文件添加到索引中。索引是一个包含所有 Git 所要跟踪文件的列表
- git add . //表示该目录下提交所有改动到暂存区 
- git commit -m "first commit" //将改动存入本地仓库,first commit 为提交说明 
- $ git remote add origin https://git.coding.net/ssssdy/new_artcle.git 
- //如果没有添加远程仓库就需要一个,例如添加coding.net 上的一个开源项目 artcle为远程仓库,并取别名为origin,接下来用 git remote 命令来查看当前添加的远程仓库: 
- $ git remote -v 
- origin git@git.coding.net:ssssdy/new_artcle.git (fetch) 
- origin git@git.coding.net:ssssdy/new_artcle.git (push) 
- origin5 https://git.coding.net/ssssdy/new_artcle.git (fetch) 
- origin5 https://git.coding.net/ssssdy/new_artcle.git (push) 
- $ git push -u origin5 master //将本地的master分支推送到origin(git.coding.net/ssssdy/new_artcle.git的别名)远程服务器上 
- Username for 'https://git.coding.net': ssssdy 
- Password for 'https://ssssdy@git.coding.net': //输入账户密码,也可以使用免密模式及SSH服务器提交方式 
注意:
工作目录下所有的文件分为两种状态:已跟踪和未跟踪
- 已跟踪的文件 ———— tracked - 指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未修改,已修改或者已放入暂存区。 
 
- 未跟踪文件 ———— untracked - 它们既没有上次更新时的快照,也不在当前的暂存区域。 
- 初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。 在编辑过某些文件之后,Git 将这些文件标为已修改。我们逐步把这些修改过的文件放到暂存区域,直到最后一次性提交所有这些暂存起来的文件,如此重复。所以使用 Git 时的文件状态变化周期如图所示。 
 
- 用git status命令可以查看文件的状态: 
$git status
位于分支 master
您的分支领先 'origin/master' 共 2 个提交。
(使用 "git push" 来发布您的本地提交)
要提交的变更:
(使用 "git reset HEAD <文件>..." 以取消暂存)
新文件: model/spider_tools.class.php
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)
修改: .gitignore
修改: model/spider_tools.class.php
修改: static/123.php
修改: static/test.php
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
static/get_info.php
分支的概念:
每个分支的代码版本都是独立演进的,分支之间的代码版本完全不会干扰另外一个代码版本的开发.Git 的分支相比 SVN 要轻量很多,这是因为 Git 分支并不是复制一个新仓库,而是为一个分支存储一个指针,这个指针将指向某个提交对象。没错,这就和数据结构中常见的指针链表一样。所以 Git 的分支只是指针,并没有将仓库进行复制,每次提交都会让当前的分支向后移动,指向最后一次提交的对象。当你在切换分支时,Git 也只是改变指向当前所在分支的特殊指针 HEAD,所以可以快速地在各个分支之间进行切换.
分支的功能
分支在实际中可以方便的隔离开发。 假设你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
在命令行创建本地分支
也可以在命令行用git branch新建一个分支,我们在本地运行以下命令:
 $ git branch article-branch
这条命令将会在本地仓库创建一个名为 “article-branch” 的分支,这条分支指向最近一次提交的数据。要注意的是,运行该命令后,当前工作分支仍然是在 “master” 分支上,需要使用git checkout命令来进行分支之间的切换。
切换分支
本地分支切换
之前我们已经在本地创建好了分支,接下来切换到 “article-branch” 分支:
$ git checkout article-branch
Switched to branch 'article-branch'
git checkout 下面这句话告诉我们,我们已经成功地将工作分支切换到了 “article-branch” 分支。
远端分支切换
Coding.net 提供在线的分支切换,在项目代码页,master 标签下拉菜单处可以选择其他分支。
合并分支
git merge [分支名]命令将指定分支合并到当前工作分支中.
合并之后,”master” 分支和 “learn-branch” 分支实际上是指向同一个位置。此时你可以通过
 $git branch -d [分支名]
来删除某个分支。
git使用原理的更多相关文章
- Git详解之九:Git内部原理
		Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各章一直到这,你都将在本章见识 Git 的内部工作原理和实现方式.我个人发现学习这些内容对于理解 Git 的用处和强大是非常重要的, ... 
- android Git命令家底儿及Git数据通信原理详解
		声明:本文为CSDN原创投稿文章,未经许可,禁止任何形式的转载. 现在大部分使用的都是SVN,也有一部分迁移了Git,虽然挺好的,不过还有其它很多版本控制的工具,并没有谁最好用,最重要的是适合自己的公 ... 
- Git的原理简介和常用命令
		Git和SVN是我们最常用的版本控制系(Version Control System, VCS),当然,除了这二者之外还有许多其他的VCS,例如早期的CVS等.顾名思义,版本控制系统主要就是控制.协调 ... 
- git内部原理
		Git 内部原理 无论是从之前的章节直接跳到本章,还是读完了其余章节一直到这——你都将在本章见识到 Git 的内部工作原理 和实现方式. 我们发现学习这部分内容对于理解 Git 的用途和强大至关重要. ... 
- Git详解之九 Git内部原理
		以下内容转载自:http://www.open-open.com/lib/view/open1328070620202.html Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各 ... 
- git内部原理-第一篇
		本人计划写一些关于<git内部原理>的文章 计划每周一篇 
- Git 内部原理 - (7)维护与数据恢复 (8) 环境变量 (9)总结
		维护与数据恢复 有的时候,你需要对仓库进行清理 - 使它的结构变得更紧凑,或是对导入的仓库进行清理,或是恢复丢失的内容. 这个小节将会介绍这些情况中的一部分. 维护 Git 会不定时地自动运行一个叫做 ... 
- Git 内部原理--初探 .git
		说到Git大家应该都非常熟悉,几乎每天都会用到它.在日常使用过程中,我们貌似并不需要关注其内部的原理,只需要记住那几个常用的命令,就可以说自己是会Git的人了.可是,事实真的是这样子的吗?今天我们就来 ... 
- Git内部原理浅析
		Git独特之处 Git是一个分布式版本控制系统,首先分布式意味着Git不仅仅在服务端有远程仓库,同时会在本地也保留一个完整的本地仓库(.git/文件夹),这种分布式让Git拥有下面几个特点: 1.直接 ... 
- Git内部原理(1)
		Git本质上是一套内容寻址文件系统,在此之上提供了VCS的用户界面. Git底层命令(plumbing) vs 高层命令(porcelain) Git的高层命令包括checkout.branch.re ... 
随机推荐
- SiteMesh2-sitemesh.xml的PageDecoratorMapper映射器的用法
			继上一章http://www.cnblogs.com/EasonJim/p/7083165.html中使用的例子中,是通过decorators.xml文件通过URL匹配进行转换的. 而下面这种方法是通 ... 
- doT js模板入门 3
			for 循环前推断循环的list是否为空 <script id="invoiceListDot" type="text/x-dot-template"&g ... 
- Effective C++ Item 44 将与參数无关的代码抽离 templates
			本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:Templates 生成多个 classes 和多个函数,所以不论什么 templat ... 
- MYSQL利用Navicat对含有Bold字段表进行导入导出
			MYSQL中含有Blob字段是一件挺麻烦的事情,导出导入不方便.我介绍我是怎么做的. 1.在MYSQL的my.ini最后中加入一行配置max_allowed_packet = 100M,重新启动MYS ... 
- Java基础:初始化和清理
			转载请注明出处:jiq•钦's technical Blog (1) 初始化: 所以假设继承关系为:A导出B再导出C,在创建C对象的情况下的调用顺序是: * (1) A的静态域,B的静态域,C的静态域 ... 
- 【RefactoringCode】The description of the refactoring book
			Last night the book named [Data Structure with Java Hubbed] was closed. When talked about the advant ... 
- Js跨一级域名同步cookie
			1. 纯Js同步两个域名下的cookie document.cookie = "name=" + "value;" + "expires=" ... 
- 机器学习A
			订阅地址 : http://blog.csdn.net/lizhe_dashuju/rss/list 
- SNMP安全配置的两种方法(也可同一时候兼顾配置两种方法)
			方法一(最简单安装): 安装 Net-SNMP CentOS及其他RedHat系列产品提供了net-snmp的二进制包.我们能够直接从源里安装. shell> yum install net-s ... 
- LeetCode 781. Rabbits in Forest (森林中的兔子)
			题目标签:HashMap 题目给了我们一组数字,每一个数字代表着这只兔子说 有多少只一样颜色的兔子. 我们把每一个数字和它出现的次数都存入map.然后遍历map,来判断到底有多少个一样颜色的group ... 
