(转载)Git使用教程
转载自:http://www.418log.org/post-89.html
.什么是Git
简单地说,Git是 Linux 之父 Linus Trovalds,为管理 Linux 内核代码而建立的,被认为是分布式版本控制工具中的顶级水准。智能、友好、强健、高效。 正如所提供的文档中说的一样,“Git 是一个快速、可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系统提供了高级操作和完全访问。”发音:[英][ɡit] [美][ɡɪt]
Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得 BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如,X.org 最近就迁移到 Git 上来了,很多 Freedesktop.org 的项目也迁移到了 Git 上。
2.Git的优势
Git 目前主要由寻找 CVS 或专有代码管理解决方案替代物的软件开发人员所使用。Git 与 CVS 有很多区别:
分支更快、更容易。
支持离线工作;本地提交可以稍后提交到服务器上。
Git 提交都是原子的,且是整个项目范围的,而不像 CVS 中一样是对每个文件的。
Git 中的每个工作树都包含一个具有完整项目历史的仓库。
没有哪一个 Git 仓库会天生比其他仓库更重要。
3.Git版本控制
简单地说,就是将在本地开发的代码,定时推送到服务器。每一次修改,记录下它的作者、时间及修改说明等。
相对的,我们也可以从服务器下拉其他人推送的代码,并了解它的作者、时间、修改说明及其具体的修改内容。
这样,版本控制给团队协作开发提供了极大的方便。即使是一个人开发,因为它记录下了我们整个的开发历史,也是极有帮助和价值的。
比如,如果某次修改甚至整个系统出现问题,它也能帮助找回我们珍贵的代码。
4.Git分布式版本控制
更进一步,分布式版本控制工具使得我们在本机上即拥有完整的功能,不依赖于服务器,使用更为方便。它们往往也提供其它更好用或更强大的功能,比如灵活的分支管理。
5.Git 工作流程
1)使用中央服务器辅助协作
2) 每人在服务器拥有一个以自己 id 为名称的分支;
3) 各人只许推送更新到自己的分支,不允许推送到别人的分支或者 master;
4) master 由专人管理,在合适时 merge 其它分支(开发初期每日自动 merge 各人分支,生产化后则由人工 merge 经过 review 的分支);
5) 代码修改 merge 到 master 后,将同步到所有终端。
首先下载git客户端程序,我下载的是Git-1.8.3-preview20130601.exe,安装后,执行Git Bash,这时你需要设置根据提示设置email和name,然后就可以创建自己的代码库了。
1、当前项目未执行初始化请执行下面操作
在本地创建新的Git仓库(连接别人的代码和创建自己的代码库)
mkdir andbase
cd andbase
git init
touch README.md
git add README.md
git commit -m 'hello world'
git remote add origin git@github.com:zhaoqp2010/andbase.git
将主分支修改推送到服务器
git push -u origin master
下载主分支数据
git pull -u origin master
连接本地已有的 Git 仓库
git remote add origin git@github.com:zhaoqp2010/andbase.git
git push -u origin master
2、提交代码
进入存放你所要提交代码的文件夹下
git add .
git commit -m 'hello world'
git push -u origin yourbranch
3、下载分支代码
git pull -u origin yourbranch
4、查看Git仓库中的文件状态
git status
5、向服务器的Git仓库中提交本地Git仓库已修改的文件或目录
git push -u origin yourbranch
6、下载服务器端Git仓库中的文件或目录到本地当前目录。
git clone git@github.com:zhaoqp2010/andbase.git
7、查看所有分支
git branch -a
8、建立newbranch分支
git checkout -b newbranch
9、切换到master分支
git checkout yourbranch
10、提交所有修改
git commit -a
11、合并分支
将 coreteam/master 合并到本地的 newbranch 分支
先 git checkout newbranch 切换到newbranch分支
再 git merge coreteam/master
12、将主分支修改推送到服务器
git push origin master
13、将newbranch分支修改推送到服务器
git push origin newbranch
以下内容转自http://my.oschina.net/u/559701/blog/70010
git操作的常用命令,不是很全面,但是常用,个人开发笔记。
---------------------------------------------------------------------------------------------------
---------------------------------------分支操作-----------------------------------------------
1.察看项目的分支情况
1 |
#进入项目目录 |
2 |
cd REPOSITORIES/ |
3 |
git branch |
4 |
# 注意前面的*号表示当前处于那个分支<span style="font-family:mceinline;">查看远程分支: <strong>git</strong> branch -r</span> |
2.创建新的分支
1 |
git branch newbranch |
2 |
3 |
#创建并进入新的分支 |
4 |
git checkout -b newbranch |
3.切换到分支
分支切换的时候要注意一个问题:在切换过程中,上一个分支的修改会带到新的分支去。也就是说在分支切换的时候会带上修改。如果要避免这样情况,当然就是在切换之前把修改提交(commit)了。
1 |
git checkout newbranch |
2 |
#取消对file的修改 |
3 |
git checkout file |
4.察看文件修改情况
1 |
git status |
显示如下的代码:
1 |
# On branch new |
2 |
# Changes not staged for commit: |
3 |
# (use "git add/rm <file>..." to update what will be committed) |
4 |
# (use "git checkout -- <file>..." to discard changes in working directory) |
5 |
# |
6 |
# deleted: build.xml |
7 |
# |
8 |
no changes added to commit (use "git add" and/or "git commit -a") |
可以看到,他说删除了build.xml文件。现在是处于new分支
5.提交修改
1 |
#这样是提交到当前分支去的 |
2 |
git commit -am "commit message" |
6.删除分支
1 |
git -d branch |
-------------------------------------------------------------------------------------------------------
----------------------------------------------------合并操作--------------------------------------
1 |
git merge --type branch |
2 |
#其中的type可以是下面4种 |
- Straight merge 預設的合併模式,會有全部的被合併的 branch commits 記錄加上一個 merge-commit,看線圖會有兩條 Parents 線,並保留所有 commit log。
- Squash commit 壓縮成只有一個 merge-commit,不會有被合併的 log。SVN 的 merge 即是如此。
- cherry-pick 只合併指定的 commit
- rebase 變更 branch 的分支點:找到要合併的兩個 branch 的共同的祖先,然後先只用要被 merge 的 branch 來 commit 一遍,然後再用目前 branch 再 commit 上去。這方式僅適合還沒分享給別人的 local branch,因為等於砍掉重練 commit log。
合并当然要伴随这各种各样的问题拉,其中最重要的一个问题就是冲突的问题拉。冲突过后,会提示
1 |
Automatic merge failed; fix conflicts and then commit the result. |
冲突的文件会更改为下面的样子,剩下的时间就得看自己去手动解决这里的冲突了。
1 |
<<<<<<< HEAD |
2 |
#这里是现在的代码 |
3 |
------------------------- |
4 |
======= |
5 |
#这里是拉过来冲突的代码 |
6 |
++++++++++++++++++++++++ |
7 |
>>>>>>> master |
-------------------------------提交-------------------------------------------
-------------------------------------------------------------------------------
git在提交的时候,有时候可能想当前的所有修改,使用命令
1 |
#该命令放弃当前 git status 显示的所有的修改 |
2 |
git reset |
3 |
4 |
#可以让版本回退到commit编号去 |
5 |
git reset --hard [commit编号] |
如果只放弃某一个文件的修改,可以使用checkout命令
1 |
git checkout file |
2 |
#但是对于增加的文件,使用这个命令来放弃修改会有问题,它会提示说找不到文件,因为修改之前是没有该文件的。 |
git在提交的时候,会忽略一些类型的文件,这写配置在 项目的.gitignore 文件中,可以使用vi编辑这写内容
1 |
vi .gitignore |
-----------------------------------------远程操作--------------------------------------
-----------------------------------------------------------------------------------------
1 |
检出仓库:$ git clone git://github.com/jquery/jquery.git |
2 |
查看远程仓库:$ git remote -v |
3 |
添加远程仓库:$ git remote add [name] [url] |
4 |
删除远程仓库:$ git remote rm [name] |
5 |
修改远程仓库:$ git remote set-url --push[name][newUrl] |
6 |
拉取远程仓库:$ git pull [remoteName] [localBranchName] |
7 |
推送远程仓库:$ git push [remoteName] [localBranchName] |
-----------------------------------比较操作---------------------------------------
在使用Git的过程中,我们有时候需要去对比代码的不同的地方。这时可以使用 diff 这的命令
1 |
# 对比commit_id1和commit_id2的不同地方,并用不同颜色区别出来, 注意 commit_id1 一定要比 commit_id2要早提交 |
2 |
git diff --color commit_id1 commit_id2 |
000
--------------保存当前修改状态-------------------------
有时候有这样的情况,当前编辑了一些文件,这时需要做reset、checkout等其他操作,这时又不想把编辑丢弃,提交了也不完整。这时需要git一个非常人性化的一个命令:git stash ,来保存当前的状态。
1 |
#保存当前编辑 |
2 |
git stash |
3 |
#恢复编辑 |
4 |
git stash apply |
git pull 远程分支
1 |
#checkout的同时在本地同步一个远程origin上的serverbranch分支 |
2 |
git checkout --track origin/serverbranch |
(转载)Git使用教程的更多相关文章
- Git使用教程(转载)
Git使用教程 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是 ...
- 团队Git使用教程
团队git使用教程(不要使用IDE自带版本控制功能) 角色分配:项目观察者.项目拥有者.项目开发人员 场景:项目拥有者创建项目 1. 在当前目录新建一个git代码库 git init "te ...
- Git全面教程
Git全面教程 简介 Git分布式版本管理系统. Linus在1991年创建了开源的Linux,但是一直没有一个合适的版本管理工具,在2002年以前,世界各地的志愿者都是通过把源代码文件通过diff的 ...
- 转载 CSS3 经典教程系列:CSS3 盒阴影(box-shadow)详解
目标大纲 文章转载 CSS3 经典教程系列:CSS3 盒阴影(box-shadow)详解 IE中CSS-filter滤镜小知识大全 CSS实现跨浏览器兼容性的盒阴影效果
- [译]Atlassian Git系列教程
国庆期间把Atlassian的Git系列教程看完了.边看边翻译了相关文章. 原教程: https://www.atlassian.com/git/tutorials/ 我翻译的: git init g ...
- Git使用教程【转】
Git使用教程 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是 ...
- Git 使用教程
Git 使用教程 更详细请参考:廖雪峰的官方网站 - Git教程 1. 安装Git客户端软件 Git for Windows http://msysgit.github.io/ 2. 创建版本库 两点 ...
- Git版本控制教程
Git 版本控制入门 不了解Git请查看权威Git书籍 ProGit(中文版). 一份很好的 Git 入门教程,点击这里查看. Git客户端下载地址: 官方Git - TortoiseGit - So ...
- git详细教程
Table of Contents 1 Git详细教程 1.1 Git简介 1.1.1 Git是何方神圣? 1.1.2 重要的术语 1.1.3 索引 1.2 Git安装 1.3 Git配置 1.3.1 ...
随机推荐
- MySQL千万级数据JDBC插入
案例语句: String sql = "LOAD DATA LOCAL INFILE '" + dataFilepath + "' into table " + ...
- HDU 5572 An Easy Physics Problem (计算几何+对称点模板)
HDU 5572 An Easy Physics Problem (计算几何) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=5572 Descripti ...
- for clean
static(修饰变量方,法:静态块:静态内部类:静态导包) final transient 作用foreach 原理 volatile底层原理实现 集合LIST MAP SET 实现类的底层原理优, ...
- electron的艰难安装之旅
最近对前端开发很感兴趣,抽空研究了下前段的开发工具,发现比较流行的是sublime,atom,vscode等, 由于一直以来从事.net开发所以对vscode很感兴趣,在vscode的安装配置过程偶然 ...
- Oracle中 union 和 union all 的区别
如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字. union(或称为联合)的作用是将多个结果合并在一起显示出来. union和uni ...
- C#隐藏(new)方法和重写(override)方法
在基类调用的时候 隐藏方法还是调用基类的方法 而重写方法调用的就是子类的中的方法 同时,当子类中的方法与父类或者所实现的接口中的扩展方法冲突时,那么此时相当于一个隐藏方法 基类调用或者接口调用的时候使 ...
- jquery选择器之基本筛选选择
1.基本选择器 2.内容筛选选择器 3.可见性筛选选择器 4.属性筛选选择器 5.子元素筛选选择器 6.表单元素选择器 7.表单对象属性筛选器
- 【第一篇】Volley的使用之json请求
最近项目写完,有开始新的学习了,volley很久以前就接触了,也看了源码,然而却没有通过文章去记录自己的学习成果. 首先讲下volley的特点: 1,扩展性强.Volley 中大多是基于接口的设计,可 ...
- 23个mysql查询语句
一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,= ...
- Java反序列化漏洞分析
相关学习资料 http://www.freebuf.com/vuls/90840.html https://security.tencent.com/index.php/blog/msg/97 htt ...