Git是一个开源的分布式版本控制系统,用于敏捷高效地管理项目。相较svn,git最大的特点就是分布式,每个人都拥有一个克隆的版本库,所以提交代码、查看日志、创建分支、合并分支、回退等等操作都直接在本地完成而不需要网络。当然,本地版本库需要和远程共享版本库同步,这就需要网络了。
github,作为一家git服务提供商,可以托管你的git版本库,而且对于开源项目是可以免费托管,这对于开源项目是一大利好。
github使用
注册github账号
首先你要有一个github账号,注册地址 https://github.com/join,记住你的用户名和邮箱,这里例如mycwq和mycwq@example.com(邮箱必须是有效的,需要验证)
创建git版本库
可以保持以上选项不修改,点绿色按钮完成创建。成功后取到git库地址 https://github.com/mycwq/test.git
克隆版本库到本地
就是获取git共享库的所有内容,要确保系统安装了git命令工具,没有的话参考这篇
文章。
$gitclone https://github.com/mycwq/test.git
提交到共享版本库
git下这个操作有2个步骤,第一步提交代码到本地版本库,第二步是同步本地版本库到远程的共享版本库
如果是第一次使用,需要设置账号和邮箱
$git config --global user.name "mycwq"
$git config --global user.email "mycwq@example.com"
下面以例子说明如何提交内容到版本库:
$ echo "# test" > README.md
$git addREADME.md
$git commit -m "first commit"
$git push origin master
然后,按提示输入账号和密码。成功后,可以在github看到刚刚提交的内容。
git版本库与命令关系图
在阮一峰博客上找到这个图片,很有参考价值。文章在
这里,不妨去看看吧
以上,fetch、clone、push、pull都是远程操作,其他都是本地完成的。
git常用命令
命令 |
说明 |
git diff
|
显示版本库所有文件的改动内容,但不包括版本外的文件
|
git status
|
树状显示版本库的大体情况,如哪些文件有改动,哪些还没加到版本库
|
git log
|
查看提交日志
|
git clone <库地址> |
克隆远程版本库到本地 |
git fetch
|
同步共享版本库的更新内容到本地版本库
|
git add |
索引记录要提交的文件,在git commit时提交 |
git commit |
提交改动到本地版本库 |
git push |
同步本地版本库到共享版本库 |
git remote |
列出所有远程主机 |
git branch <分支名> |
新建分支 |
git checkout <分支名> |
切换到分支(设置某个分支为工作目录) |
git checkout-b<分支名>
|
检出分支,等效于 git branch <分支名> &&git checkout <分支名> |
git merge<分支名>
|
合并某个分支到工作目录
|
git pull
|
同步共享版本库到本地版本库,并且合并到当前工作目录。等同于 git fetch 加上 git merge<分支名>
|
git blame <filename>
|
获取文件每一行的详细修改信息,包括作者、日期和日志编号
|
git分支管理
分支的常用命令
建立分支 |
$ git branch branch1 |
列出所有分支 |
$ git branch
branch1
* master
以上,*表示当前在使用的分支,即工作目录所在的分支。
如果是远程仓库github的分支情况:
$ git branch -r
origin/branch1
origin/master
|
切换分支 |
$ git checkout branch1
Switched to branch 'branch1'
相当于把branch1作为当前分支,可以git branch 看下变化
|
删除分支 |
$ git branch -d branch1
以上命令,git会检查该分支是否已合并到上游分支,如果没有,则不能删除分支。
但如果真的要删除该分支,使用 -D 参数强行删除:
$ git branch -D branch1
如果想删除github上的分支 branch1,
$ git push origin --delete branch1
或者是
$ git push origin :branch1
|
重命名分支 |
$ git branch -m branch1 branch2 |
合并分支 |
git有三种合并分支方式,straight merge, squashed commits 和 cherry-picking
区别如下:
1、直接合并(straight merge)
将某分支所有的历史记录全部合并到当前分支,原来分支有多少个commit,当前分支就增加多少条日志
命令如下:
$ git merge branch1
2、拼凑合并(squashed commits)
将某分支上的所有的历史记录合成一条日志提交,这样的话,当前分支无法看到该分支每次的提交记录。
命令如下:
$ git merge --squash branch1
$ git commit -m 'branch1 merge'
3、挑选合并(cherry-picking)
将分支的某些提交日志合并到当前分支
命令如下:
$ git cherry-pick 7654321
以上,7654321是提交日志的hash值,可以从git log 查到,本来是40位,但git通常需要前面7位就可以识别了。
如果需要合并多条日志,但不想git每次都立刻合并,可以改下这个命令:
$ git cherry-pick -n 7654321
|
提交到远程分支 |
提交到远程仓库github的分支 branch1,分支不存在会自动创建
$ git push origin branch1
|
导出分支 |
类似svn export,例如导出master分支:
$git archive master -o ../master.zip
|
分支的使用
这里以最简单实用的主次分支模型,也就是两条分支,一条记master,另一条记develop,项目在develop下开发,再不定期合并到master分支。
首先,我们需要定位好 master 和 develop 的关系:
master :主分支,就是生产环境的版本
develop : 次分支,就是开发环境的版本
git创建时有master分支,我们需要再创建一个分支。使用下面这个命令,从master分支位置创建 develop 分支,并将当前分支切换到 develop分支
$ git checkout -b develop master
这样,我们可以在 develop 分支下开发了。直到项目需要交付给用户时,再将 develop分支 合到 master分支
$ git checkout master
$ git merge develop
当 develop分支合到 master分支后,如果要继续开发,再把 develop 分支切换成当前分支
$git checkoutdevelop
这样,又回到了开发分支,接着发布、开发,发布、开发,如此周而复始。
当然,分支在实际使用中可能不只这么简单,可能还要创建临时的 bugfix 分支,但方法都是差不多的。
1、创建一个bugfix 的临时分支:
$ git checkout -b bugfix-0.1 master
2、修正bug后,再合并到master分支和develop分支
$ git checkout master
$ git merge --no-ffbugfix-0.1
$ git checkout develop
$ git merge --no-ffbugfix-0.1
3、再然后,删掉这个临时分支
$ git branch -dbugfix-0.1
细心的同学会观察到我们这里使用了 --no-ff 参数,这是因为,Git 默认使用快进式合并(fast-farward merge),只是将 master 分支指针指向bugfix-0.1分支,而--no-ff 则会创建一条合并日志,保证bugfix-0.1分支删除时不丢失历史日志。
git相关
git config之 push.default
warning: push.default is unset; its implicit value has changed in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the traditional behavior, use:
git config --global push.default matching
To squelch this message and adopt the new behavior now, use:
git config --global push.default simple
When push.default is set to 'matching', git will push local branches
to the remote branches that already exist with the same name.
Since Git 2.0, Git defaults to the more conservative 'simple'
behavior, which only pushes the current branch to the corresponding
remote branch that 'git pull' uses to update the current branch.
大致意思是,Git2.0 将 push.default 的默认值matching 改成了 simple
matching
|
如果 git push 没有指定分支,git 会推送所有远程分支对应的本地分支
|
simple
|
如果 git push 没有指定分支,git 只推送当前分支
|
参考资料:
参考:http://blog.csdn.net/mycwq/article/details/49443775
分享到:
相关推荐
Git与Github教程详细介绍了Git的工作机制,Git命令行的基础学习,Git-Eclipse和Nginx的准备工作,Git与Github分支体系,Git与Github的远程和本地工作原理,Git与Github克隆实战和最后的课程精华总结部分,可以帮助...
GitHub 是一个基于 Git 的版本控制系统的托管平台,提供了免费的公共仓库和私有仓库。使用 Git 上传代码到 GitHub 需要遵循以下步骤: 一、注册账户和创建仓库 首先,需要注册 GitHub 账号,然后创建一个新的仓库...
GitHub 是一个基于 Git 版本控制系统的在线代码托管平台,它不仅提供分布式版本控制,还提供了多种协作功能,使得软件开发者和其他参与者能够方便地共享和协作开发项目。以下是关于 GitHub 的详细介绍: 什么是 ...
### Git与GitHub使用详解 #### 一、Git简介与特性 **Git** 是一款非常流行的分布式版本控制系统,由Linus Torvalds于2005年为了更好地管理Linux内核开发而创建。与传统的集中式版本控制系统(如SVN)不同,Git的...
内容概要:该文档详细记录了关于Git使用的实验过程,包括Git客户端安装、在GitHub上创建组织和仓库以及将本地爬虫代码与远程仓库建立联系并提交推送的步骤,同时还包含了爬虫代码的核心部分以及实验心得体会。...
总之,Git和GitHub的结合使用极大地提升了IT项目的效率和协作性,使得代码版本管理变得有序且高效。它们是现代软件开发不可或缺的一部分,无论是小型个人项目还是大型企业级应用,都能从中受益。通过熟练掌握Git的...
在IT行业中,版本控制工具Git是开发者们必不可少的利器,特别是在协作开发中,Git的强大功能使得团队能够高效地管理代码。本教程将详细介绍如何利用Git从GitHub上拉取项目,以便于你开始或参与开源项目。 首先,...
### Git及GitHub使用手册 #### 一、版本管理工具与Git简介 ...通过以上步骤,您可以熟练掌握Git的基本操作,有效利用GitHub进行代码托管与版本管理。这不仅有助于提高个人开发效率,还能促进团队间的协作与交流。
Git是分布式版本控制系统,GITHUB是全球最大的开源代码托管平台,而Git Server则是用于搭建本地或私有Git仓库的服务端程序。这三者构成了开发者进行版本控制和协作开发的核心工具链。下面,我们将深入探讨这些知识点...
Git和GitHub是现代软件开发中不可或缺的工具,尤其在团队协作和版本控制方面扮演着重要角色。Git是一种分布式版本控制系统,而GitHub则是一个基于Git的在线平台,提供了代码托管、协同开发、问题追踪以及项目管理等...
解决fatal:remote error:You can’t push to git://github.com/username/*.git问题的办法 今天Git push的时候 fatal:remote error: You can't push to git://github.com/username/*.git Use git@github....
Git客户端是一款强大的版本控制器,与SVN相似,但拥有更多的特性和灵活性,是现代软件开发不可或缺的工具。Git由Linux之父Linus Torvalds在2005年创建,旨在提供一个高效、分布式且易用的版本控制系统,用于管理和...
使用 GitZip for github 工具下载单个文件由于 Github 的特点,我们在下载 Github 仓库中的文件时往往需要下载整个仓库的文件,这个特
Git是一款分布式版本控制系统,而GitHub则是一个基于云的服务平台,提供了Git仓库托管、代码审查、问题追踪以及社交网络功能,使得全球的开发者能够共享和协作开发项目。 Git的核心功能在于版本控制。它允许开发者...
Github使用教程,搭建公司自己用的linux git服务器,在github上发布自己的简历.zip
Git与GitHub初步使用教程Git与GitHub初步使用教程
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。也是就是CVS的接班人!
- **GitHub与本地Git的交互**: - 初始化本地库。 - 创建远程仓库。 - 使用`git push`和`git pull`进行数据同步。 - **团队协作**: - 添加团队成员。 - 解决远程仓库修改冲突。 - 跨团队协作示例。 - **SSH...