Git、GitHub 使用说明(上)

Git、GitHub 使用说明(上)

一、预备知识:

1、GitHub是一个基于git的代码托管平台。通过Github可以实现社会化编程。

2、Git:一个分布式版本控制系统。Git没有中央服务器,不需要联网,每个人的电脑就是一个完整的版本库。用户名邮箱作为Git系统标识。Git系统标识会在提交日志中显示。

$ git config --global user.name "your name"
$ git config --global user.email "[email protected]"

3、Git 能跟踪仓库每个文本文件的修改和删除具体变化。二进制文件虽能也能被版本控制系统管理,但是版本控制系统无法跟踪文件的变化。版本控制系统只能把二进制文件每次改动串起来,只能知道图片从1kb变成2kb,版本控制系统也不知道二进制文件的具体变化。

4、仓库(repository)操作:上传仓库、检出仓库

$ git remote add origin [email protected]:yourName/yourRepo.git

$ git clone [email protected]:/path/to/repository

5、仓库(版本库--隐藏目录‘.git‘)和Git的关系:本地仓库由 Git 维护的三棵"树"组成。第一个:工作目录,包含实际文件;第二个:暂存区(stage或index),它像个缓存区域,临时保存用户改动;第三个:HEAD,指向用户在该分支中最后一次提交的结果的指针。HEAD在每个分支都有。分支合并之后,用户还可以通过该分支的HEAD,在分支上开发。合并只是将master指向目前使用分支的HEAD指针指向的内容。

6、工作区+版本库(仓库.git){暂存区(index或stage)+HEAD(指向用户在该分支中最后一次提交的结果的指针)+master}

7、SSH协议是面向互联网网络中主机之间的互访与信息交换。主机密钥成为基本的密钥机制。SSH协议要求每一个使用SSH协议的主机都必须至少有一个自己的主机密钥对服务方通过对客户方主机密钥的认证之后,才能允许其连接请求。

8、分支:在分支上,文件每次的修改提交。Git都把分支上不同的文件版本串成一条时间线,这条时间线就是一个分支。

9、工作树:在.git目录中的内容称为“附属于该仓库的工作树”。文件的编辑等操作在工作树中进行,然后记录到仓库中,以此管理文件的历史快照

10、工作目录下的文件的四种状态:untracked、unmodified、modified、staged。仓库中包含各个时间点的文件快照

二、Git 操作命令:

1、git init:把文件目录变成git可以管理的仓库。Initialized empty Git repository in d:/www/testgit/.git/

2、git add:把文件添加到暂存区

3、git commit -m:把文件提交到仓库。git commit输入提交信息的时候,通过调用vim编辑器进行信息编写的,使用vim编辑器的命令操作。

  提交信息的格式:第一行:用一行文字简述提交的内容;第二行:空行;第三行以后:记述更改的原因和详细内容

  git commit --amend:修改提交信息

  git rebase -i HEAD-2:压缩历史。选定当前分支中包含的HEAD(最新提交)在内的两条最新历史记录为对象,打开编辑器,在内容编辑器中将pick>>fixup

4、git status:查看仓库的状态,查看文件提交队列中是否还有未提交文件,跟踪文件是否发生变化

5、git diff:查看工作树和暂存区的差别;git diff HEAD 查看工作树和最新提交的差别

6、git log:查看提交日志,显示从最近到最远的提交日志

$ git log 

$ git log –pretty=oneline

7、git reset  --hard HEAD^:把当前的版本回退到上一个版本;hard HEAD^:上一个版本、hard HEAD^^:上上一个版本、hard HEAD~100:前100个版本

8、git reflog:查看当前仓库的操作日志,包括:commit、reset、checkout、merge等操作的日志

9、git reset  --hard 目标时间点的哈希值:根据目标时间点的哈希值,将文件置为指定版本。

10、git branch feature-A:创建feature-A分支

11、git checkout  feature-A:切换到feature-A分支

12、git checkout  -b feature-A:创建并切换到feature-A分支

三、Git版本管理系统中“分支”概念

分支基本知识:

分支:分支是用来将特性开发绝缘开来的。在用户创建仓库的时候,master 是"默认的"分支。用户可以在其他分支上进行开发,经过审核,完成后再将它们合并到主分支上。

共同培育分支

分支操作:

1、创建分支,–b参数表示创建并切换分支,相当于执行:git branch feature_x+git checkout feature_x两条指令,直接在已有的分支中切换不需要增加-b参数。

$ git checkout -b feature_x

2、查看分支,带星号为当前分支

$ git branch

3、合并分支,将在分支feature_v中发生的修改合并到主分支master中。合并时只是将master指针指向feature_v。

$ git merge feature_v

4、删除分支

$ git branch -d feature_v

分支管理策略:

1、“Fast forward”模式(“快进模式”):直接把master指向feature_v当前提交,所以合并速度非常快。在这种模式下,删除分支后,会丢掉分支信息。

2、参数 –no-ff来禁用”Fast forward”模式,删除分支后,被删除的分支信息还在。

3、git merge --no-ff feature-C,在分支master中整合feature-C分支。

分支冲突:

1、分支冲突发生情况:在不同的分支上都对同一个文件进行修改并且都提交修改

2、打开出现分支冲突的修改文件,<<<<<<<HEAD ======= >>>>>>> 之间的内容表示不能正确合并产生冲突的部分。

3、在合并之前可以改通过以下命令预览差异:

git diff <source_branch> <target_branch>

stash功能:

0、命令 git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作

1、命令 git stash list:查看所有被隐藏的文件列表

2、命令 git stash apply:恢复被隐藏的文件,但是内容不删除

3、命令 git stash drop:删除文件

4、命令 git stash pop:恢复文件的同时 也删除文件

四、远程仓库(默认名称是origin):

1、Github仓库和本地的Git仓库之间通过SSH互访和信息交换。本地需要创建SSH key。“[email protected]”是用户注册GitHub绑定的邮箱。

ssh-keygen  -t rsa –C “[email protected]”

注:以上指令执行完成后,~/下生成.ssh文件夹。文件夹中有id_rsa和id_rsa.pub这两个文件。id_rsa是私钥,id_rsa.pub是公钥。添加id_rsa.pub中的公钥到GitHub中settings中的Account Settings(账户配置),左边选择SSH Keys,Add SSH Key。

2、GitHub创建一个仓库和本地的Git仓库同步。GitHub仓库作为本地Git仓库的备份,又可以使其他人通过对GitHub仓库执行命令实现对本地Git仓库进行协作。

2.1、通过以下命令将本地Git仓库的内容推送给GitHub仓库,通过命令 git remote –v:查看远程库的详细信息

$ git remote add origin https://github.com/minboyin/testgit.git

2.2、获取最新远程仓库分支

$ git pull  origin feature-A

注:如果是新建的仓库( repositories )的话在pull代码的时候,出现:fatal: Couldn‘t find remote ref master 翻译过来就是:致命的:无法找到远程参考主可以忽略不计,直接提交就可以。

2.3、将本地Git仓库指定分支推送到GitHub,-u参数:将origin仓库中的master分支设置为本地仓库当前分支的upstream(上游),一般选择本地的master分支!本地仓库当前分支可以直接从origin仓库的master分支获取内容,省去添加参数的麻烦。

$ git push -u origin master

2.4、将远程的仓库(GitHub中的仓库)克隆到本地,建立一个一致的本地仓库。执行完成默认在master分支。

$ git clone https://github.com/minboyin/testgit.git

2.5、将远程的仓库(origin仓库)中的一个分支复制到本地,建立一个一致的本地分支。-b参数后面是本地分支名称

$ git checkout -b feature-A origin/feature-A

3、远程协作工作模式:

1、首先,可以试图用git push origin branch-name推送本用户在该分区的修改。

2、如果推送失败,则因为远程分支比你的本地更新早,需要先用git pull试图合并。git pull --rebase origin master

  2.1、–-rebase:取消本地库中刚刚的commit,并把他们接到更新后的版本库中。

  2.2、git pull=git fetch+git mergegit fetch是将远程主机的最新内容拉到本地,git pull则是将远程主机的最新内容拉下来后直接合并。

3、如果合并有冲突,则需要查看并解决冲突,并在本地提交。再用git push origin branch-name推送本用户在该分区的修改。

原文地址:https://www.cnblogs.com/yinminbo/p/11797730.html

时间: 2024-11-09 02:15:21

Git、GitHub 使用说明(上)的相关文章

Git&amp;Github(上)

1.Github的作用 借助Github托管项目代码 2.基本概念 2.1.仓库(Repository) 即你的项目,你想在Github上开源一个项目,那就必须要新建一个Repository.如果你开源的项目多了,你就拥有一个Repositories.私有仓库只能自己或者指定的朋友才有权限操作(私有仓库是收费的). 2.2.收藏(Star) 仓库主页star按钮,意思为收藏项目的人数,在Github上如果你有一个项目获得100个star都算不容易了. 2.3.复制项目(Fork) 这个不好翻译,

git&amp;github win7-64bit上使用

 在知道如何使用这个工具前,首先要知道git和github分别是什么.git是目前比较流行功能也非常强大的版本管理器,它就相当于svn之类的版本管理工具,使用git,可以在本地提交,修改和比对当前工程项目,它可以独立于github来正常运作.github是用来托管工程项目的网站,网站地址是https://github.com/,只用git的话,工程的操作只能在本地电脑,github的作用就是通过git把本地电脑上的工程上传到这个网站上,这样其它人就可以通过这个网站下载到你上传的工程了. 接下

Git、GitHub 使用说明(下)

Git.GitHub 使用说明(下) GitHub各板块功能介绍: GitHub主要由:工具栏.控制面板.用户 图-1 工具栏 图-2控制面板 图-3 个人信息 1.工具栏-Gist(一款简单的Web应用程序): Gist主要用于管理及发布一些没有必要保存在仓库中的代码,常用于编写代码示例.系统会自动管理更新历史,并且提供Fork功能.Gist上添加的代码示例可以嵌入博客中.Filename including extensions包含扩展名的文件名,系统能自动识别扩展名,将右侧的语言自动设置为

利用git将项目上传到github

本文主要介绍如果用git将项目上传到githup. 一.准备工作 (1)欲将项目上传到githup,先在githup上新建一个仓库.这里就不介绍. (2)安装git,这里也不介绍. 二.开始上传 (1)进入到项目文件夹,调出git命令窗口,初始化仓库 git init (2)添加远程仓库 git remote add origin URL                   这个URL是刚刚创建的仓库地址 git remote add origin https://github.com/zxy1

使用Git将本地代码上传到GitHub

#1注册GitHub账号 *1)到https://github.com/注册GitHub账号 #2在GitHub上建立GitHub仓库 *1)登录后点击右下方的"new repository"按钮新建一个仓库 *2)填写完仓库信息后点击"creat repository"按钮创建仓库(仓库名字随意填写) 注意不要勾选Initialize this repository with a README #3下载并安装git版本管理工具 *1)到http://git-scm

用Git将代码上传至GitHub

第一步:我们需要先创建一个本地的版本库(其实也就是一个文件夹). 你可以直接右击新建文件夹,也可以右击打开Git bash命令行窗口通过命令来创建. 现在我通过命令行在桌面新建一个TEST文件夹(你也可以在其他任何地方创建这个文件夹),并且进入这个文件夹 第二步:通过命令git init把这个文件夹变成Git可管理的仓库 这时你会发现TEST里面多了个.git文件夹,它是Git用来跟踪和管理版本库的.如果你看不到,是因为它默认是隐藏文件,那你就需要设置一下让隐藏文件可见. 第三步:这时候你就可以

手把手教你用git和SourceTree上传项目到github细解(转)

尊重原创:https://blog.csdn.net/qq_32365567/article/details/52859166 一.引言 我想大家现在都很熟悉github了,也能运用github上开源的项目到自己的项目中.但是我们也很想把自己的一些项目也放到github中开源供大家使用.这2天我就在研究这个东西,也查过很多资料都不是系统的,也走了很多的弯路毕竟一个初学者学习这几个软件,刚开始也不知道这两者有什么联系,纯粹靠自己瞎摸索,终于成功的上传到我的github里,好了闲话少说,干正事了,我

使用git把项目上传到github上

常用的命令: git init  在当前目录新建一个Git代码库 git add [file1] [file2].....  添加指定文件到暂存区 git add . 添加当前目录的所有文件到暂存区 git commit -m [message] 提交暂存区到仓库区 git commit [file1] [file2]...-m [message]提交暂存区指定文件到仓库区 git push 上传本地库内容到远程仓库 git pull 取回远程库的最新内容,与本地库合并更新 git status

记录--git命令行上传项目到github仓库

由于公司一直使用的是的SVN,基本上都是内网,原来的git命令都快忘记了,当然也是自己太懒,平时都是直接拖到github上.今天打开idea后突然看到了原来自己写好的一个项目,就想将它上传到github上,也顺便再复习一下git命令,没想到也是遇到了很多坑,也是参考了几个大神的博客才解决,因此想记录一下. 因为项目是之前写好的,一直放在idea的工作空间里,git是之前已经下好的,包括github上仓库已经建好,万事俱备. 1.首先是打命令行窗口 ,cd到项目的目录中 yht:~ YHT$ cd