代码管理工具有很多

主要的有两个

git  和  svn

svn  衍生出来的软件有   cornerstone   smartSVN

git  的图形界面工具有  Sourcetree

前几年  svn 一般在国内开发比较常用,但是也有越来越多的人用上了 git

git 免费的仓库  是开放的,如果想私有仓库  需要   花钱的。具体的花多少钱请自行去官网看。

今天主要说说  git

==============================================

参考链接  http://www.cnblogs.com/oc-bowen/p/5263229.html

一、简介

什么是git?
git是一款开源的分布式版本控制工具
在世界上所有的分布式版本控制工具中,git是最快、最简单、最流行的
 
git的起源
作者是Linux之父:Linus Benedict Torvalds
当初开发git仅仅是为了辅助Linux内核的开发(管理源代码)
 
git的现状
在国外已经非常普及,国内并未普及(在慢慢普及)
越来越多的开源项目已经转移到git
 
二、SVN 和 Git 对比
速度
在很多情况下,git的速度远远比SVN快
 
结构
SVN是集中式管理,git是分布式管理
 
其他
SVN使用分支比较笨拙,git可以轻松拥有无限个分支
SVN必须联网才能正常工作,git支持本地版本控制工作
旧版本的SVN会在每一个目录置放一个.svn,git只会在根目录拥有一个.git
 
分布式和集中式的最大区别在于:在分布式下,开发者可以本地提交。每个开发者机器上都有一个服务器的数据库
 
 
三、使用 Git
跟SVN一样,你可以通过命令行敲指令或者图形界面客户端使用git

在Mac上,比较好用的git图形界面客户端有

SourceTree
 
GitHub
下载地址:https://mac.github.com
不过它是专门为GitHub网站而设计的
 
Xcode
 
四、git常用指令
git help :git指令帮助手册
查看其他指令的做法:git help 其他指令
 
git config :git的配置信息相关(修改的是.git/config文件)
配置用户名:git config “user.name” 用户名(用于跟踪修改记录)
配置邮箱:git config “user.email” 邮箱(用于多人开发间的沟通)
查看配置信息:git config –l
编辑配置信息:git config –e(用vim编辑,:wq是退出vim编辑器)
设置指令的别名:git config alias.别名 原指令名称
设置带参数指令的别名:git config alias.别名 “原指令名称 参数”
将此设置应用到整个系统中:git config ––gloabal
 
git status :查文件的状态
查看某个文件的状态:git status 文件名
查看当前路径所有文件的状态:git status
git log :查看文件的修改日志
查看某个文件的修改日志:git log 文件名
查看当前路径所有文件的修改日志:git log
用一行的方式查看简单的日志信息:git log ––pretty=oneline
查看最近的N次修改:git log –N(N是一个整数)
 
git diff :查看文件最新改动的地方
查看某个文件的最新改动的地方:git diff 文件名
查看当前路径所有文件最新改动的地方:git diff
 
git init :初始化一个空的本地仓库,生成一个.git目录,用于维护版本信息
在当前路径初始化仓库:git init
在其他路径初始化仓库:git init 仓库路径
 
git add :将工作区的文件保存到暂缓区
保存某个文件到暂缓区:git add 文件名
保存当前路径的所有文件到暂缓区:git add .(注意,最后是一个点 . )
 
git commit :将暂缓区的文件提交到当前分支
提交某个文件到分支:git commit -m ”注释” 文件名
保存当前路径的所有文件到分支:git commit -m ”注释” 
 
git reset :版本回退(建议加上––hard参数,git支持无限次后悔)
回退到上一个版本:git reset ––hard HEAD^
回退到上上一个版本:git reset ––hard HEAD^^
回退到上N个版本:git reset ––hard HEAD~N(N是一个整数)
回退到任意一个版本:git reset ––hard 版本号(版本号用7位即可)
 
git reflog :查看分支引用记录(能够查看所有的版本号)
 
git rm:删除文件(删完之后要进行commit操作,才能同步到版本库)
 
git clone:下载远程仓库到本地
下载远程仓库到当前路径:git clone 仓库的URL
下载远程仓库到特定路径:git clone 仓库的URL 存放仓库的路径
 
git pull:下载远程仓库的最新信息到本地仓库
 
git push:将本地的仓库信息推送到远程仓库
 
五、工作原理
如果想了解git的工作原理,有几个核心概念必须知道
工作区(Working Directory):仓库文件夹里除.git目录以外的内容
 
版本库(Repository):.git目录,用于存储记录版本信息
暂缓区(stage)
分支(master):git自动创建的第一个分支
HEAD指针:用于指向当前分支
 
git add和git commit的原理
git add :把文件修改添加到暂存区
git commit :把暂存区的所有内容提交到当前分支
 
 
六、远程仓库
如果是多人团队开发,最好还是搭建一个远程仓库
 
搭建远程仓库的途径
自己搭建一个git服务器:费时费力
在GitHub上托管项目:公开项目免费、私有项目收费,很多第三方开源项目
在oschina上托管项目:完全免费,在国内访问速度快(推荐使用)
 
七、搭建GitHub远程仓库 
注册一个GitHub帐号:https://github.com
 
打开“Account Settings”
 
1.配置SSH Key 
 
点击“SSH keys”
配置Mac的SSH Key的公钥(用于限制提交)
  
 
在Mac上生成SSH Key(在终端输入下面指令)
cd ~/.ssh
ssh-keygen -t rsa -C "你的邮箱地址”
然后一直敲回车
 
然后就会在~/.ssh目录下生成SSK Key的秘钥对
id_rsa :私钥,不可泄露
id_rsa.pub :公钥,可以公开(将这个文件的内容粘贴到GitHub上)
 
利用cat指令可以查看文件的内容
cat id_rsa.pub
 
2.添加仓库
拷贝仓库地址,用于下载到本地
 
如果想删除仓库,也很简单
 
 
 
笔记
  1 01. GIT简介(PPT)
2 ================================================================================
3
4 02. GIT命令行帮助
5 ================================================================================
6 $ svn help
7 查看svn所有命令的帮助
8 $ svn help 子命令
9
10 # 要退出帮助信息,按"q"
11 # 翻看下页,按"空格"
12 # 翻看上页,按"CTRL+B"
13 # 要搜索相关文字,按"/"然后输入"相关文字"
14
15 03. 创建代码库 & 配置个人信息
16 ================================================================================
17 1> 创建代码仓库
18 $ git init
19
20 2> 配置用户名和邮箱
21 $ git config user.name lnj
22 $ git config user.email lnj@gmail.com
23
24 * 以上两个命令会将用户信息保存在当前代码仓库中
25
26 # 只有配置了用户和邮箱之后,git才能识别出操作的人员信息,通过钩子(hooks)程序可以设置一些动作
27 # 例如单元测试发现问题后,自动给相关人员发送电子邮件
28 * 注意 暂时不建议投入一毛钱精力
29
30 3> 如果要一次性配置完成可以使用一下命令
31 $ git config --global user.name lnj
32 $ git config --global user.email lnj321@gmail.com
33
34 * 以上两个命令会将用户信息保存在用户目录下的 .gitconfig 文件中
35
36 4> 查看当前所有配置
37 $ git config -l
38
39 04. 实际开发
40 ================================================================================
41 1> 创建代码,开始开发
42 $ touch main.c
43 $ open main.c
44
45 2> 将代码添加到代码库
46 # 查看当前代码库状态
47 $ git status
48 # 将文件添加到代码库
49 $ git add main.c
50 # 将修改提交到代码库
51 $ git commit -m "添加了main.c"
52
53 提示:
54 * 在此一定要使用 -m 参数指定修改的备注信息
55 * 否则会进入 vim 编辑器,如果对vim不熟悉,会是很糟糕的事情
56
57 # 将当前文件夹下的所有新建或修改的文件一次性添加到代码库
58 $ git add .
59
60 3> 添加多个文件
61 $ touch Person.h Person.m
62 $ git add .
63 $ git commit -m "添加了Person类"
64 $ open Person.h
65 $ git add .
66 $ git commit -m "增加Person类属性"
67
68 * 注意 使用git时,每一次修改都需要添加再提交,这一点是与svn不一样的
69
70 git 的重要概念及工作原理
71 --------------------------------------------------------------------------------
72 工作区
73 暂存区(staged)
74 分支(HEAD)
75
76 05. 别名 & 日志
77 ================================================================================
78 $ git config alias.st status
79 $ git config alias.ci "commit -m"
80
81 个人建议:除非特殊原因,最好不要设置别名,否则换一台机器就不会用了
82
83 # 查看所有版本库日志
84 $ git log
85 # 查看指定文件的版本库日志
86 $ git log 文件名
87
88 # 配置带颜色的log别名
89 $ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
90
91 提示:在git中,版本号是一个由SHA1生成的哈希值
92
93 06. 版本号,让我们在任意版本之间穿梭
94 ================================================================================
95 # 回到当前版本,放弃所有没有提交的修改
96 $ git reset --hard HEAD
97 # 回到上一个版本
98 $ git reset --hard HEAD^
99 # 回到之前第3个修订版本
100 $ git reset --hard HEAD~(3)
101 # 回到指定版本号的版本
102 $ git reset e695b67
103
104 # 查看分支引用记录
105 $ git reflog
106
107 07. 单个文件的修改管理
108 ================================================================================
109 # 查看文件变化
110 $ git diff
111 # 撤销对文件做的修改
112 $ git checkout Person.h
113 # 从代码库(暂存区中删除文件)
 1 01. 建立代码仓库(专门用于团队开发的代码仓库)
2 ================================================================================
3
4 # 切换目录
5 $ cd /Users/lnj/Desktop/git演练/公司/weibo
6 # 建立空白代码库(专门用于团队开发)
7 $ git init --bare
8
9 02. 项目经理准备项目(前奏)
10 ================================================================================
11
12 # 切换目录
13 $ cd /Users/lnj/Desktop/git演练/经理
14 # "克隆"代码库到本地
15 $ git clone /Users/lnj/Desktop/git演练/公司/weibo/
16
17 # 个人信息配置(因为要演示一台机器上的多人协作,日常开发可以忽略)
18 $ git config user.name manager
19 $ git config user.email manager@163.com
20
21 .gitignore
22 --------------------------------------------------------------------------------
23 .gitignore可以指定哪些文件不纳入版本库的管理
24
25 参考网址:https://github.com/github/gitignore
26
27 # 命令行中进入与.git同级的目录
28 $ cd /Users/lnj/Desktop/git演练/经理/weibo
29
30 将以下命令一次性粘贴到命令行中
31 --------------------------------------------------------------------------------
32 echo -e "# Xcode
33 #
34 build/
35 *.pbxuser
36 *.mode1v3
37 *.mode2v3
38 *.perspectivev3
39 xcuserdata
40 *.xccheckout
41 *.moved-aside
42 DerivedData
43 *.hmap
44 *.ipa
45 *.xcuserstate
46 # CocoaPods
47 #
48 # We recommend against adding the Pods directory to your .gitignore. However
49 # you should judge for yourself, the pros and cons are mentioned at:
50 # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
51 #
52 # Pods/" > .gitignore
53 --------------------------------------------------------------------------------
54 # 将.gitignore添加到代码库
55 $ git add .gitignore
56
57 03. 创建项目
58 ================================================================================
59 提交同时"push"到远程代码仓库
60
61 04. 新人加入
62 ================================================================================
63
64 ...
65
66 05. 分布式的代码库 - 仅供参考
67 ================================================================================
68 由于git是分布式的,任何一台计算机上都保留有完整的代码库的内容,因此可以把团队开发的代码库放在任何位置
69
70
71 多个远程代码库之间的同步演练"提示,此演练仅供了解,具体的使用,需要一定的团队规模之后,才能够体会"
72
73
74 06. 分支管理 - Tag
75 ================================================================================
76 # 查看当前标签
77 $ git tag
78 # 在本地代码库给项目打上一个标签
79 $ git tag -a v1.0 -m 'Version 1.0'
80 # 将标签添推送到远程代码库中
81 $ git push origin v1.0
82
83 # 使用tag,就能够将项目快速切换到某一个中间状态,例如产品开发线上的某一个稳定版本
84 # 签出v1.0标签
85 $ git checkout v1.0
86 # 从签出状态创建v1.0bugfix分支
87 $ git checkout -b bugfix1.0
88
89 # 查看远程分支
90 $ git branch -r
91 # 删除远程分支
92 $ git branch -r -d origin/bugfix1.0
 1 01. 分布式的代码库 - 仅供参考
2 ================================================================================
3 由于git是分布式的,任何一台计算机上都保留有完整的代码库的内容,因此可以把团队开发的代码库放在任何位置
4
5
6 多个远程代码库之间的同步演练"提示,此演练仅供了解,具体的使用,需要一定的团队规模之后,才能够体会"
7
8
9 02. 分支管理 - Tag
10 ================================================================================
11 # 查看当前标签
12 $ git tag
13 # 在本地代码库给项目打上一个标签
14 $ git tag -a v1.0 -m 'Version 1.0'
15 # 将标签添推送到远程代码库中
16 $ git push origin v1.0
17
18 # 使用tag,就能够将项目快速切换到某一个中间状态,例如产品开发线上的某一个稳定版本
19 # 签出v1.0标签
20 $ git checkout v1.0
21 # 从签出状态创建v1.0bugfix分支
22 $ git checkout -b bugfix1.0
23
24 # 查看远程分支
25 $ git branch -r
26 # 删除远程分支
27 $ git branch -r -d origin/bugfix1.0
 1 如何使用/学习第三方框架?
2
3 优秀的第三方框架都在 github.com
4
5 1> 搜索
6 2> git clone 获得完整版本
7 $ git clone https://github.com/AFNetworking/AFNetworking.git
8 3> 获取最新版本 git pull
9 * 进入clone的本地文件夹
10 $ git pull
11
12 4> 看github上的文档,优秀的第三方框架都有好的文档
13 5> 编写测试程序,看运行结果
14 6> 针对感兴趣的部分,看源代码
15
16 7> 有问题去http://stackoverflow.com

代码管理(一)git的更多相关文章

  1. 通过代码管理工具 git 完成一次完整的代码管理过程

    1.从公共远程fork一份自己的本地远程之后,从本地远程 clone 到本地 2.将本地代码跟公共远程代码做关联配置 git remote add upstream https://github.co ...

  2. 代码管理工具 --- git的学习笔记二《git的工作原理》

    通过几个问题来学习代码管理工具之git 一.git是什么?为什么要用它?使用它的好处?它与svn的区别,在Mac上,比较好用的git图形界面客户端有 git 是分布式的代码管理工具,使用它是因为,它便 ...

  3. 代码管理必备-----git使用上传码云

    作为一个程序员,你要学会代码的管理,这是一个最基本的修养,就像是一个剑客的剑谱,代码管理,目前流行的是svn和git,但是很不好的是git如果没有插件的话,很多人都不会用git bash 来实现自己的 ...

  4. 代码管理工具Git的安装及使用

    一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...

  5. 代码管理工具 Git

    之前一直使用微软的代码管理工具TFS(Team Foundation Server)..NET CORE 2.0的发布后,考虑到.NET CORE项目可以跨平台,准备把项目迁移到.NET CORE 环 ...

  6. 使用代码管理工具(git)管理代码的常用指令合集

    create a new repository on the command line echo "# test" >> README.md git init git ...

  7. 代码管理工具-Git基础介绍及常用技巧

    目录 Git起源 基本概念 Branch.HEAD和Commit tree Git分支 git merge 和 git rebase 的区别和抉择 与远程仓库的交互 关于一些实际开发场景的问题和解决方 ...

  8. SourceTree代码管理学习git命令操作

    Git管理工具SourceTree提交代码时报文件名过长,用命令解决这个错误: 使用git status查看状态信息 git status 使用git add将修改后的文件(.代表全部文件)添加到暂存 ...

  9. 项目代码管理工具Git的总结

    在项目的开发中,代码的同步管理很重要,团队的几个人可以通过免费的github管理自己的开源项目代码,高效方便.下面说说,开发中经常用到的git指令操作,基于github平台. 0.配置提交者的账户和邮 ...

  10. 代码管理工具 --- git的学习笔记一《git的个人开发》

    重点摘要: 创建了一个文件后首先先通过git add . 添加到暂缓区,然后通过git commit -m "提交的名字" 提交到本地仓库,最后才可能push到远程仓库. 1. 个 ...

随机推荐

  1. 给ajax表单提交数据前面加上实体名称

    有时候我们后台做了一个引用类型例如: 下面的实体以C#为例 public class Order{ public string orderId{get;set;} public OrderItem o ...

  2. iOS中文API之UITouch详解

    UITouch 对象用于位置. 大小. 运动和一根手指在屏幕上为某一特定事件的力度.触摸的力度是从开始在 iOS 9 支持 3D 的触摸的设备上可用.你可以通过UIEvent对象传递给响应者对象访问. ...

  3. WIN10系统如何取消右下角的通知菜单,通知图标

    鼠标左键单击通知按钮,然后点击所有设置   在通知和操作页面,取消勾选所有的通知   建议选择在任务栏显示哪些图标,然后勾选显示所有图标  

  4. 从头认识java-15.7 Map(7)-TreeMap与LinkedHashMap

    这一章节我们来讨论一下Map两个比較经常使用的实现:TreeMap与LinkedHashMap. 1.TreeMap 特性:依照key来排序 package com.ray.ch14; import ...

  5. Angularjs 中的 controller

    接触过程序开发的小伙伴们对 MVC 的开发方式想必一点也不陌生,是的, angularjs 所採用的方式便是 MVVM 的开发方式,这里的 controller 即控制器 了解 controller ...

  6. 007-Go package 说明

    1:在项目src下面存在两个目录,每个目录里面各有一个go文件 2:add.go package test02 func Add(a int, b int) int{ return a + b } 注 ...

  7. angularJS 事件广播与接收[转]

    路由的事件 事件这个词在前端出现的频率真是高,根本拦不住,哪都是.$route服务在路由过程中的每个阶段都会触发不同的事件,可以为这些不同的路由事件设置监听器并做出响应. 一共有4个事件用来监听路由的 ...

  8. vuejs组件交互 - 03 - vuex状态管理实现组件交互

    组件交互模式的使用场景 简单应用直接使用props down,event up的模式就可以了 小型应用使用事件中心模式即可 中大型应用使用vuex的状态管理模式 vuex 包含要管理的应用数据和更新数 ...

  9. IOS-异常处理

    http://blog.csdn.net/ndscoahz/article/details/50866229 http://www.cnblogs.com/snail-007/p/4564422.ht ...

  10. VREP中的二维激光雷达

    目前,轮式机器人的研究中已经大量使用激光雷达辅助机器人的避障导航,考虑到使用成本,一般二维激光雷达使用较多,如下图.由于只能扫描一个平面,如果想用二维激光雷达获取环境三维点云,则需要通过移动机器人或加 ...