Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
集中式:
需要有台服务器安装服务端;
每个想要和服务端通讯的终端都需要安装该软件客户端。
每台计算机都通过客户端将服务端保存的内容checkout(检出)到本地,在代码基础上进行修改。可以通过commit提交自己的代码;或者通过update来更新本地代码。
缺点:
所有代码在服务端管理,容易发生丢失;
公网中访问速度较慢。
分布式:
分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
从一般开发者的角度来看,git有以下功能:
从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上、在自己的机器上根据不同的开发目的,创建分支,修改代码,在单机上自己创建的分支上提交代码、在单机上合并分支、把服务器上最新的代码fetch下来,然后跟自己的主分支合并等。
优点:
适合分布式开发,强调个体。公共服务器压力和数据量都不会太大。速度快、灵活。任意两个开发者之间可以很容易的解决冲突。离线工作。
快速,开源分布式版本控制系统,无中心仓库
源码备份
版本管理
协同工作
冲突解决
分支管理
里程碑管理
和github关联协同
git官网
git config --global user.name "rk"
git config --global user.email [email protected]
配置信息的位置:~/.gitconfig
选择一个位置:右键:Git Bash Here
git init : 新建本地仓库
git status : 检测状态
git add file : 添加文件到仓库缓存区
git commit -m "message" : 提交到仓库并添加消息
git diff a.txt 查看工作空间和仓库的区别
git log a.txt :查看文件日志
git log --pretty=oneline a.txt :显示简要日志
git reflog a.txt :查看版本(指针变化)日志
git reset --hard HEAD : 查看当前的版本信息
git reset --hard HEAD^ : 版本回退一个(回退多少步^^^)
git reset --hard HEAD~3 : 回退三步
git reset --hard df19b68 : 移动指针到指定操作
git checkout -- a.txt : 版本回撤(未add和commit)
git reset HEAD a.txt : 版本回撤(已add和未commit)
git rm -f b.txt
git commit -m "delete"
git branch : 查看分支
git branch dev : 创建分支
git checkout dev : 切换分支
git merge dev : 合并代码
git branch -d dev : 删除分支
git checkout -b test : 新建并切换
主分支和从分支冲突:人工干预,手动合并。
git add a.txt
git commit
gitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 git 作为唯一的版本库格式进行托管,故名gitHub。
gitHub 于 2008 年 4 月 10 日正式上线,除了 git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。目前,其注册用户已经超过 350 万,托管版本数量也是非常之多,其中不乏知名开源项目 Rubyon Rails、 jQuery、 python 等。
作为开源代码库以及版本控制系统, Github 拥有超过 900 万开发者用户。随着越来越多的应用程序转移到了云上, Github 已经成为了管理软件开发以及发现已有代码的首选方法。
如前所述,作为一个分布式的版本控制系统,在 Git 中并不存在主库这样的概念,每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。在 GitHub,用户可以十分轻易地找到海量的开源代码
1) 配置(建立连接)
A. 生成ssh key :
ssh-keygen -t rsa -C [email protected]
B. 在github添加公钥
在~/.ssh生成目录,里面有id_rsa, id_rsa.pub。
登录到github,在右上角图标下点击settings,点击 SSH and GPG keys,New SSH key, 在github上添加公钥(id_rsa.pub)
C. 测试连接状态
ssh -T [email protected]
2) 本地新建,推送远程仓库
git remote add origin https://github.com/rankang666/test.git : 指定远程仓库
git push -u origin master : 推送
git pull origin master : 更新到本地仓库(pull 相当于 branch merge)
3) 本地clone
git clone https://github.com/rankang666/zhao.git
4) fork(让别人帮助做,新开辟一个分支,之后再合并即可)
1) 下载: 地址
2) 安装
3) 使用
创建仓库(在进程中kill explorer.exe,再重启即可看到对勾图标或者重启)
添加提交本地仓库,查看日志,回退版本,
创建分支,合并分支,冲突解决,
远程推送(推送时必须是同一个仓库,推送到其他仓库会出现问题,可以参考git-push中的fast-forwards)和更新,clone
1) 配置
2) 查看ssh2
3) 创建仓库
project右键 --> Team ---> ShareProject
4) 添加到暂存区
Project右键 ---> Team ---> Add to Index
5) 提交到仓库
Project右键 ---> Team --->Commit
6) 与远程库交互
Project右键 ---> Team --->Push
7) Pull从远程仓库
如果出错,可以尝试添加git config
[remote "origin"]
fetch=+refs/heads/*:refs/remotes/origin/*
url=https://github.com/rankang666/eclipse.git
push=refs/heads/master:refs/heads/master
[branch "master"]
remote=origin
merge=refs/heads/master
8) 同步
Project右键 ---> Sync WorkSpace --->
Local ---> OutgoingMode --->Push/
Remove ---> IngoingMoode ---> Pull
9) Clone
WorkSpace右键 ---> Import ---> Git
10) 冲突
服务器更新,本地:Add ---> commit ---> push
解决:
Sync WorkSpace
---> Pull ---> 手动处理 ; ---> Add ---> commit ---> push