项目版本管理 github简介
git config user.email "c.wuliying@samsung.com"
git config  user.name "swportal"
***创建版本库 init:
初始化一个Git仓库
mkdir test
cd test
git init
ls-ah
***新增和提交文件git add,git commit -m
用editplus编辑readme.txt文件,内容如下
Git is a version control system.
Git is free software.
保存时UTF-8
文件添加到仓库,分2步
git add readme.txt
git commit -m "wrote a readme file"
***修改文件, 及查看修改git status, git diff
修改文件readme.txt
Git is a distributed version control system.
Git is free software.
查看修改结果
git status 
修改的具体内容:
git diff
应用修改
git add readme.txt
git status 
git commit -m "add distributed"
git status
***查看修改记录 git log/reflog,git reset --hard HEAD^/commit id:
git log --pretty=oneline
前7位是commit id
7ff16bc60ea13cb04fa8a69495decaa5105134f9 append GPL    
0473748ff85b3ddb17ebb1d9cb0e44009e18c13d add distributed
7571ecadf145e2135beda18f98612845224d2e81 wrote a readme file
回退到上一个版本
git reset --hard HEAD^
查看log, 发现最后一次的结果已经不存在了
git log --pretty=oneline
结果
0473748ff85b3ddb17ebb1d9cb0e44009e18c13d add distributed
7571ecadf145e2135beda18f98612845224d2e81 wrote a readme file
找回最后那个版本,还没关机的时候, 就可以用commit id找回
git reset --hard 7ff16bc
如果关机了
git reflog
***工作区和暂存区git add --> git commit
.git是Git的版本库, 包含stage暂存区, master分支, 及指向master的指针HEAD
我们修改readme.txt,新增一个文件license.txt, 然后
git add readme.txt
git add license.txt
git status查看
	new file:   license.txt
	modified:   readme.txt
add命令实际上就是将修改放到暂存区stage, 然后git commit才提交到分支
git commit -m "understand how stage works"
所以commit的作用是, 把暂存区stage的内容一次性提交到仓库
如果修改文件, add, 再修改, commit,只会提交第一次修改的结果, 因为第二次修改的没有add, 就没有放入暂存区
***撤销修改, 把stage的修改退回 git checkout
如果仅仅是改了readme.txt, 加一句话 
My stupid boss still prefers SVN.
还没add到暂存区的话直接撤销
git checkout -- readme.txt
如果add到暂存区, 需要
git reset HEAD readme.txt之后执行
git checkout -- readme.txt
***删除文件
先新建一个test.txt, 然后add,commit
git add test.txt
git commit -m "add test.txt"
1. 工作区删除
rm test.txt
想恢复直接
git checkout -- test.txt
2. 暂存区 git rm之后反悔
git rm test.txt
git reset HEAD test.txt
git checkout -- test.txt
3. 确实删除
git rm test.txt
git  commit -m "remove test.txt"
4. 如果确实删除了, 还想找回来
git log得到add test.txt的commit id: 2285503
git reset --hard 2285503
***远程仓库
ssh-keygen -t rsa -C "c.wuliying@samsung.com"
一路回车, 在c:/Users/Administrator/.ssh/里生成 id_rsa和id_rsa.pub两个文件
https://github.com/settings/ssh  new ssh,title随便写
里面把id_rsa.pub内容copy进去, 然后填写密码
GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了
先创建README,add并commit
$touch README
$git add README
$git commit -m 'first commit'  
$git remote add origin git@github.com:swportal/test.git
确认
$git remote  -v
$git push -u origin master
如果失败的话, 在C:\Users\Administrator\.ssh里新增config文件, 内容为
	Host github.com
	User c.wuliying@samsung.com
	Hostname ssh.github.com
	PreferredAuthentications publickey
	IdentityFile ~/.ssh/id_rsa
	Port 443
以后提交不用 -u, 直接
$git push origin master
***从远程库clone
1. 远程github新建一个repository test2,
2. git clone git@github.com:swportal/test2.git
就会在当前文件夹内新建个test2文件夹, 里面内容就是github里的内容
***创建与合并分支
在Git里, 有个主分支master指向提交commit, HEAD指向master, HEAD指向的是当前分支
所以随着每次提交, master和HEAD都往前走。
但是如果你自己需要开发一个新功能, 需要很长时间, 想保存每次提交的结果, 但是每次提交会影响别人的结果。 但是不提交的话怕保留不了自己的每天进度, 所以要用分支
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
所以要做的是
1. 创建新分支dev并切换到dev分支  
    $git checkout -b dev
2. 对工作区的修改和提交都是针对dev,查看当前所有分支
    $git branch
3. 修改自己的文件readme.txt, 添加一句 Creating a new branch is quick. 然后add, commit
     $ git add readme.txt 
     $ git commit -m "branch test"
4. 切换回master,查看刚才修改的文件内容并没有改变,因为还没有合并
     $ git checkout master
     $ cat readme.txt
3. 合并dev和master
     $  git merge dev
     $ cat readme.txt
4. 删除dev分支
     $ git branch -d dev
     $git branch
总结:
     1. 新建并切换到自己的dev分支    $git checkout -b dev
     2. 改文件readme.txt, 
         $ git add readme.txt 
	 $ git commit -m "branch test"
     3. 切换到主分支master                $ git checkout master
     4. 合并dev和主分支master:         $  git merge dev
     5. 删除自己的分支dev:             $ git branch -d dev
***分支冲突
1. $ git checkout -b feature1
2. 修改readme.txt添加一行   Creating a new branch is quick AND simple.
3. 分支feature1上add和commit
	$ git add readme.txt 
	$ git commit -m "AND simple"
4. 切换到master主分支
     $ git checkout master
5. 在master分支上 修改readme.txt添加一行   Creating a new branch is quick & simple.   然后add并commit
     $ git add readme.txt 
     $ git commit -m "& simple"
 6. 此时合并的话, 将出现冲突
     $ git merge feature1
     查看readme.txt文件, 发现
           <<<<<<< HEAD
	Creating a new branch is quick & simple.
	=======
	Creating a new branch is quick AND simple.
	>>>>>>> feature1
7. 手动修改readme.txt文件, 再add和commit, 查看分支的合并情况
    $ git log --graph --pretty=oneline --abbrev-commit
8. 删除feature1分支
还没merge的分支想强性删除, 用  
$ git branch -D feature-1
***Bug分支
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场
1. $git checkout -b dev     当前需要很长时间的工作, 修改release.txt文件, 然后add
1. $git status                    查看当前 已经add还没commit的任务  比如修改了release.txt文件, add并没commit
2. $ git stash                   当前任务藏起来
3. $git status                   查看是不是干净了?
4. $ git checkout master                       切换到master
    $ git checkout -b issue-101               在master上创建临时分支
5. 临时分支上修改readme.txt文件,然后add和commit
    $ git add readme.txt 
    $ git commit -m "fix bug 101"
6. $ git checkout master          切换到master分支
    $ git merge --no-ff -m "merged bug fix 101" issue-101  完成合并
    $ git branch -d issue-101   删除分支
7. $ git checkout dev   回到原来分支
    $ git status         查看当前状态
    $ git stash list     刚才的工作现场存到哪去了?           
8. $ git stash pop    恢复现场
       获取list后也可以这样恢复    $ git stash apply stash@{0} 
     $ git stash list     就看不到任何stash内容了
Myeclipse安装egit插件
1. 关闭myeclipse
2. F:\java\tool\egit里的文件复制到 D:\Program Files\MyEclipse\MyEclipse 10\dropins\egit下
3. 重启eclipse, 在preferences里Team->Git确认
4. 右键项目->team-->share
5. 右键项目->team->commit
项目版本管理 github简介的更多相关文章
- 提交本地项目到github
		要托管到github,那你就应该要有一个属于你自己的github帐号,所以你应该先到github.com注册 打开浏览器 在地址栏输入地址:github.com 填写用户名.邮箱.密码 点击Sign ... 
- git入门及上传项目到github
		Git入门: 如果你完全没有接触过Git,你现在只需要理解通过Git的语法(敲入一些命令)就可以将代码上传到远程的仓库或者下载到本地的仓库(服务器),我们此时应该有两个仓库,就是两个放代码 ... 
- MyEclipse10.7使用egit托管项目到GitHub
		原文出处:http://www.xuebuyuan.com/2126438.html 1.注册一个github账户:(www.github.com)点击打开链接 注册完成后,登录github后点击右上 ... 
- TortoiseGit上传项目到github方法(超简单)
		Github是咱广大开发者用的非常多的项目版本管理网站,项目托管可以是私人的(private)或者公开的(public),私人的收费,一个月7美金.咱这里就只说我们个人使用的,一般都是代码对外开放的: ... 
- Android快速实现上传项目到Github
		本文为skylinelin原创,转载请注明出处! 一.简介 现在在网上浏览关于Git的文章,基本上都是使用命令行(Git Bash),命令行效率是很高的,但是有一定的复杂性,现在我们看如何用AS来讲项 ... 
- golang学习笔记5 用bee工具创建项目 bee工具简介
		golang学习笔记5 用bee工具创建项目 bee工具简介 Bee 工具的使用 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/instal ... 
- 开源项目托管GitHub
		工具:本地HelloWorld源项目 msysgit(Windows) 实验步骤:一.在GitHub新建托管项目 在http://github.com注册账号20159214-sunnan. 完成注册 ... 
- Android Studio 快速实现上传项目到Github(详细步骤)
		前言: 本文主要讲解如何将Android Studio项目上传至GitHub,在此之前,先介绍几个概念. Android Studio:是谷歌推出一个Android集成开发工具,基于IntelliJ ... 
- 使用git上传项目到GitHub上
		之前的博客有<使用git拉取GitHub上的项目>的文章,那么现在说一下,如何上传项目到GitHub上. 1. Git的.gitignore 文档配置 因为项目中可能有很多的图片还有nod ... 
随机推荐
- 安装arcgis server 10.2遇到的问题总结
			1.创建管理站点失败 错误提示:Failed to create the site. The machine does not have a valid license. Please authori ... 
- Python数据库访问之SQLite3、Mysql
			Python数据库访问之SQLite3.Mysql 现有的数据库管理系统有很多种,本文选择介绍两种DBMS:SQLite 3 和 Mysql. SQLite 3 SQLite 3是Python 3预装 ... 
- asp.net MVC 路由机制
			1:ASP.NET的路由机制主要有两种用途: -->1:匹配请求的Url,将这些请求映射到控制器 -->2:选择一个匹配的路由,构造出一个Url 2:ASP.NET路由机制与URL重写的区 ... 
- 关于SQL 数据表中的密码加密
			首先,都知道一个字节(byte)等于八位二进制数.在数据表中将密码字段设置为binary类型,再结合哈希散列运算可以实现密码加密. 下面介绍下binary 和 varbinary: binary 和 ... 
- Linux笔记(二) - 权限管理
			(1)改变文件或目录权限:chmod{ugoa}{+-=}{rwx}{mode=421}-R 递归修改可以同时更改多个 chmod g+w a.txt b.txt c.txt例:chmod g=rwx ... 
- js判断移动端与pc端
			这里介绍下使用device.js插件来判断移动端设备 地址:https://github.com/matthewhudson/device.js 示例: if(device.mobile()){ wi ... 
- SharePoint Framework (SPFx)安装配置以及开发-基础篇
			前言 SharePoint Framework(SPFx),是页面 和Webpart的模型,完全支持本地开发(即完全可以脱离SharPoint环境在本地进行开发),SPFx包含了一系列的client- ... 
- bzoj1588: [HNOI2002]营业额统计 splay瞎写
			最近各种瞎写数论题,感觉需要回顾一下数据结构 写一发splay冷静一下(手速过慢,以后要多练练) 用splay是最直接的方法,但我感觉离散一波应该可以做出来(没仔细想过) 现在没有很追求代码优美,感觉 ... 
- Asio C++ Library,libuv - Cross-platform asynchronous I/O
			http://think-async.com/ http://libuv.org/ https://github.com/libuv/libuv 
- 普通 Java 项目转换为 Maven 项目
			普通 Java 项目转换为 Maven 项目 本文为原创文章,转载请注明出处.源码已分享至GitHub. 本文提供一个完整可行的将遗留项目转换为Maven项目的步骤.至于转换Maven构建项目的好处不 ... 
