资源描述
简易GIT简易使用手册
目录
Git简介 1
第一次使用GIT操作步骤 4
版本更新 13
常见错误解决 14
Git介绍
特点
Git是一个开源分布式版本控制系统,用以有效、高速处理从很小到很大项目版本管理。
分布式相比于集中式最大区分在于开发者能够提交到当地,每个开发者经过克隆(git clone),在当地机器上拷贝一个完整Git仓库。
功效
从通常开发者角度来看,git有以下功效:
1、从服务器上克隆完整Git仓库(包含代码和版本信息)到单机上。
2、在自己机器上依据不一样开发目标,创建分支,修改代码。
3、在单机上自己创建分支上提交代码。
4、在单机上合并分支。
5、把服务器上最新版代码fetch下来,然后跟自己主分支合并。
6、生成补丁(patch),把补丁发送给主开发者。
7、看主开发者反馈,假如主开发者发觉两个通常开发者之间有冲突(她们之间能够合作处理冲突),就会要求她们先处理冲突,然后再由其中一个人提交。假如主开发者能够自己处理,或没有冲突,就经过。
8、通常开发者之间处理冲突方法,开发者之间能够使用pull 命令处理冲突,处理完冲突以后再向主开发者提交补丁。
从主开发者角度(假设主开发者不用开发代码)看,git有以下功效:
1、查看邮件或经过其它方法查看通常开发者提交状态。
2、打上补丁,处理冲突(能够自己处理,也能够要求开发者之间处理以后再重新提交,假如是开源项目,还要决定哪些补丁有用,哪些不用)。
3、向公共服务器提交结果,然后通知全部开发人员。
优点:
适合分布式开发,强调个体。
公共服务器压力和数据量全部不会太大。
速度快、灵活。
任意两个开发者之间能够很轻易处理冲突。
离线工作。
缺点:
资料少(起码汉字资料极少)。
学习周期相对而言比较长。
不符合常规思维。
代码保密性差,一旦开发者把整个库克隆下来就能够完全公开全部代码和版本信息。
l 简单来说
Git是分布式版本控制系统,那么它就没有中央服务器,每个人电脑就是一个完整版本库,这么,工作时候就不需要联网了,因为版本全部是在自己电脑 上。既然每个人电脑全部有一个完整版本库,那多个人怎样协作呢?比如说自己在电脑上改了文件A,其它人也在电脑上改了文件A,这时,你们两之间只需把各 自修改推送给对方,就能够相互看到对方修改了。
第一次使用GIT操作步骤
填写用户名和邮箱
因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。
注意:git config –global 参数,有了这个参数,表示你这台机器上全部Git仓库全部会使用这个配置,当然你也能够对某个仓库指定不一样用户名和邮箱。
创建版本库
什么是版本库?版本库又名仓库,英文名repository,你能够简单了解一个目录,这个目录里面全部文件全部能够被Git管理起来,每个文件修改,删除,Git全部能跟踪,方便任何时刻全部能够追踪历史,或在未来某个时刻还能够将文件”还原”。
所以创建一个版本库也很简单,以下我是D盘 –> www下 目录下新建一个testgit版本库。
经过命令 GIT INIT 把这个目录变成GIT能够管理仓库(GIT INIT)
这时候你目前testgit目录下会多了一个.git目录,这个目录是Git来跟踪管理版本,没事千万不要手动乱改这个目录里面文件,不然,会把git仓库给破坏了。以下:
把文件添加到版本库中。
首先要明确下,全部版本控制系统,只能跟踪文本文件改动,比如txt文件,网页,全部程序代码等,Git也不列外,版本控制系统能够告诉你每次改 动,不过图片,视频这些二进制文件,虽能也能由版本控制系统管理,但没法跟踪文件改变,只能把二进制文件每次改动串起来,也就是知道图片从1kb变成 2kb,不过到底改了啥,版本控制也不知道。
我在版本库testgit目录下新建一个记事本文件 readme.txt 内容以下:11111111
第一步:使用命令 git add readme.txt添加到暂存区里面去。以下:(git add ***)
假如和上面一样,没有任何提醒,说明已经添加成功了。
第二步:用命令 git commit告诉Git,把文件提交到仓库。(git commit -u “***”)
假如你在系统默认路径下创建了文本库,提交文件话则命令为git commit “文件名称”
现在我们已经提交了一个readme.txt文件了,我们下面能够经过命令git status来查看是否还有文件未提交,以下:
远程仓库。
在了解之前,先注册github账号(竟然没有被墙)
因为你当地Git仓库和github仓库之间传输是经过SSH加密,所以需要一点设置:第一步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,假如有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,假如有话,直接跳过此以下命令,假如没有话,打开命令行,输入以下命令:
ssh-keygen -t rsa –C “”, 因为我当地以前运行过一次,所以当地有,以下所表示:
id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,能够放心地告诉任何人。
第二步:登录github,打开” settings”中SSH Keys页面,然后点击“Add SSH Key”,填上任意title,在Key文本框里黏贴id_rsa.pub文件内容。
添加远程库
现在情景是:我们已经在当地创建了一个Git仓库后,又想在github创建一个Git仓库,而且期望这两个仓库进行远程同时,这么github仓库能够作为备份,又能够其它人经过该仓库来协作。
首先,登录github上,然后在右上角找到“create a new repo”创建一个新仓库。以下:
在Repository name填入testgit,其它保持默认设置,点击“Create repository”按钮,就成功地创建了一个新Git仓库:
git remote add origin (一定要是你自己仓库HTTP&SSH)
因为远程库是空,我们第一次推送master分支时,加上了 –u参数,Git不仅会把当地master分支内容推送远程新master分支,还会把当地master分支和远程master分支关联起来, 在以后推送或拉取时就能够简化命令。推送成功后,能够立即在github页面中看到远程库内容已经和当地一模一样了,上面要输入github用 户名和密码以下所表示:
把当地库内容推送到远程。
现在,在GitHub上这个testgit仓库还是空,GitHub告诉我们,能够从这个仓库克隆出新仓库,也能够把一个已经有当地仓库和之关联,然后,把当地仓库内容推送到GitHub仓库。
现在,我们依据GitHub提醒,在当地testgit仓库下运行命令:) 使用 git push命令,实际上是把目前分支master推送到远程。(git push –u orign master)(第一次上传需要加 -u)
推送成功后,能够立即在github页面中看到远程库内容已经和当地一模一样了,上面要输入github用 户名和密码以下所表示:
再次推送文件只需要(原文件库)
再次推送文件只需要把文件拷贝到你建立库文件夹下运行然后推送到github:
git add somefile(添加文件到缓存)
git commit –m “somefile”(添加到当地库)
git push origin master(第二次上传到远程不再需要 -u)
假如不在已经建立库目录下推送文件则需要在目前目录下再次建立一个文件仓库根据上述教程来推送文件。
版本更新
介绍
什么是“版本控制”?我为何要关心它呢? 版本控制是一个统计一个或若干文件内容改变,方便未来查阅特定版本修订情况系统。 在本手册所展示例子中,我们对保留着软件源代码文件作版本控制,但实际上,你能够对任何类型文件进行版本控制。假如你是位图形或网页设计师,可能会需要保留某一幅图片或页面布局文件全部修订版本(这或许是你很渴望拥有功效),采取版本控制系统(VCS)是个明智选择。 有了它你就能够将某个文件回溯到之前状态,甚至将整个项目全部回退到过去某个时间点状态,你能够比较文件改变细节,查出最终是谁修改了哪个地方,从而找出造成怪异问题出现原因,又是谁在何时汇报了某个功效缺点等等。 使用版本控制系统通常还意味着,就算你乱来一气把整个项目中文件改改删删,你也照样能够轻松恢复到原先样子。 但额外增加工作量却微乎其微。
一:修改文件
我在版本库testgit目录下新建一个记事本文件 readme.txt 内容以下:11111111
第一步:使用命令 git add readme.txt添加到暂存区里面去。以下:
假如和上面一样,没有任何提醒,说明已经添加成功了。
第二步:用命令 git commit告诉Git,把文件提交到仓库。
现在我们已经提交了一个readme.txt文件了,我们下面能够经过命令git status来查看是否还有文件未提交,以下:
说明没有任何文件未提交,不过我现在继续来改下readme.txt内容,比如我在下面添加一行内容,继续使用git status来查看下结果,以下:
上面命令告诉我们 readme.txt文件已被修改,不过未被提交修改。
接下来我想看下readme.txt文件到底改了什么内容,怎样查看呢?能够使用以下命令:
git diff readme.txt 以下:
如上能够看到,readme.txt文件内容从一行11111111改成 二行 添加了一行22222222内容。
知道了对readme.txt文件做了什么修改后,我们能够放心提交到仓库了,提交修改和提交文件是一样2步(第一步是git add 第二步是:git commit)。
二:版本回退:
如上,我们已经学会了修改文件,现在我继续对readme.txt文件进行修改,再增加一行
内容为33.继续实施命令以下:
现在我已经对readme.txt文件做了三次修改了,那么我现在想查看下历史统计,怎样查呢?我们现在能够使用命令 git log 演示以下所表示:
git log命令显示从最近到最远显示日志,我们能够看到最近三次提交,最近一次是,增加内容为333333.上一次是添加内容222222,第一次默认是 111111.假如嫌上面显示信息太多话,我们能够使用命令 git log –pretty=oneline 演示以下:
现在我想使用版本回退操作,我想把目前版本回退到上一个版本,要使用什么命令呢?能够使用以下2种命令,第一个是:git reset –hard HEAD^ 那么假如要回退到上上个版本只需把HEAD^ 改成 HEAD^^ 以这类推。那假如要回退到前100个版本话,使用上面方法肯定不方便,我们能够使用下面简便命令操作:git reset –hard HEAD~100 即可。未回退之前readme.txt内容以下:
假如想回退到上一个版本命令以下操作:
再来查看下 readme.txt内容以下:经过命令cat readme.txt查看
能够看到,内容已经回退到上一个版本了。我们能够继续使用git log 来查看下历史统计信息,以下:
我们看到 增加333333 内容我们没有看到了,不过现在我想回退到最新版本,如:有333333内容要怎样恢复呢?我们能够经过版本号回退,使用命令方法以下:git reset –hard 版本号 ,不过现在问题假如我已经关掉过一次命令行或333内容版本号我并不知道呢?要怎样知道增加3333内容版本号呢?能够经过以下命令即可获取到版本号:git reflog 演示以下:
经过上面显示我们能够知道,增加内容3333版本号是 6fcfc89.我们现在能够命令
git reset –hard 6fcfc89来恢复了。演示以下:
能够看到 现在已经是最新版本了。
三:了解工作区和暂存区区分?
工作区:就是你在电脑上看到目录,比如目录下testgit里文件(.git隐藏目录版本库除外)。或以后需要再新建目录文件等等全部属于工作区范围。
版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最关键就是stage(暂存区),还有Git为我们自动创建了第一个分支master,和指向master一个指针HEAD。
我们前面说过使用Git提交文件到版本库有两步:
第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。
第二步:使用git commit提交更改,实际上就是把暂存区全部内容提交到目前分支上。
我们继续使用demo来演示下:
我们在readme.txt再添加一行内容为4444444,接着在目录下新建一个文件为test.txt 内容为test,我们先用命令 git status来查看下状态,以下:
现在我们先使用git add 命令把2个文件全部添加到暂存区中,再使用git status来查看下状态,以下:
接着我们能够使用git commit一次性提交到分支上,以下:
四:GIT撤销修改和删除文件操作。
一:撤销修改:
比如我现在在readme.txt文件里面增加一行 内容为,我们先经过命令查看以下:
在我未提交之前,我发觉添加5内容有误,所以我得立即恢复以前版本,现在我能够有以下多个方法能够做修改:
第一:假如我知道要删掉那些内容话,直接手动更改去掉那些需要文件,然后add添加到暂存区,最终commit掉。
第二:我能够按以前方法直接恢复到上一个版本。使用 git reset –hard HEAD^
不过现在我不想使用上面2种方法,我想直接想使用撤销命令该怎样操作呢?首先在做撤销之前,我们能够先用 git status 查看下目前状态。以下所表示:
能够发觉,Git会告诉你,git checkout — file 能够丢弃工作区修改,以下命令:
git checkout – readme.txt,以下所表示:
命令 git checkout –readme.txt 意思就是,把readme.txt文件在工作区做修改全部撤销,这里有2种情况,以下:
readme.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样状态。
另外一个是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后状态。
对于第二种情况,我想我们继续做demo来看下,假如现在我对readme.txt添加一行 内容为6,我git add 增加到暂存区后,接着添加内容7777777,我想经过撤销命令让其回到暂存区后状态。以下所表示:
注意:命令git checkout — readme.txt 中 — 很关键,假如没有 — 话,那么命令变成创建分支了。
二:删除文件。
假如我现在版本库testgit目录添加一个文件b.txt,然后提交。以下:
如上:通常情况下,能够直接在文件目录中把文件删了,或使用如上rm命令:rm b.txt ,假如我想根本从版本库中删掉了此文件话,能够再实施commit命令 提交掉,现在目录是这么,
只要没有commit之前,假如我想在版本库中恢复此文件怎样操作呢?
能够使用以下命令 git checkout — b.txt,以下所表示:
再来看看我们testgit目录,添加了3个文件了。以下所表示:
常见错误处理
github常见操作和常见错误!错误提醒:fatal: remote origin already exists.
假如输入$ git remote add origin :djqiang(github帐号名)/gitdemo(项目名).git
提醒犯错信息:fatal: remote origin already exists.
处理措施以下:
1、先输入$ git remote rm origin
2、再输入$ git remote add origin :djqiang/gitdemo.git 就不会报错了!
3、假如输入$ git remote rm origin 还是报错话,error: Could not remove config section 'remote.origin'. 我们需要修改gitconfig文件内容
4、找到你github安装路径,我是C:\Users\ASUS\AppData\Local\GitHub\PortableGit_ca477551eeb4aea0e4ae9fcd3358bd96720bb5c8\etc
5、找到一个名为gitconfig文件,打开它把里面[remote "origin"]那一行删掉就好了!
假如输入$ ssh -T
出现错误提醒:Permission denied (publickey).因为新生成key不能加入ssh就会造成连接不上github。
处理措施以下:
1、先输入$ ssh-agent,再输入$ ssh-add ~/.ssh/id_key,这么就能够了。
2、假如还是不行话,输入ssh-add ~/.ssh/id_key 命令后出现报错Could not open a connection to your authentication agent.处理方法是key用Git Guissh工具生成,这么生成时候key就直接保留在ssh中了,不需要再ssh-add命令加入了,其它user,token等配置全部用命令行来做。
3、最好检验一下在你复制id_rsa.pub文件内容时有没有产生多出空格或空行,有些编辑器会帮你添加这些。
假如输入$ git push origin master
提醒犯错信息:error:failed to push som refs to .......
处理措施以下:
1、先输入$ git pull origin master //先把远程服务器github上面文件拉下来
2、再输入$ git push origin master
3、假如出现报错 fatal: Couldn't find remote ref master或fatal: 'origin' does not appear to be a git repository和fatal: Could not read from remote repository.
4、则需要重新输入$ git remote add origin:djqiang/gitdemo.git
使用git在当地创建一个项目标过程
$ makdir ~/hello-world //创建一个项目hello-world
$ cd ~/hello-world //打开这个项目
$ git init //初始化
$ touch README
$ git add README //更新README文件
$ git commit -m 'first commit' //提交更新,并注释信息“first commit”
$ git remote add origin :defnngj/hello-world.git //连接远程github项目
$ git push -u origin master //将当地项目更新到github项目上去
gitconfig配置文件
Git有一个工具被称为git config,它许可你取得和设置配置变量;这些变量能够控制Git外观和操作各个方面。这些变量能够被存放在三个不一样位置:
1./etc/gitconfig 文件:包含了适适用于系统全部用户和全部库值。假如你传输参数选项’--system’ 给 git config,它将明确读和写这个文件。
2.~/.gitconfig 文件 :具体到你用户。你能够经过传输--global 选项使Git 读或写这个特定文件。
3.在git目录config文件 (也就是 .git/config) :不管你目前在用库是什么,特定指向该单一库。每个等级重写前一个等级值。所以,在.git/config中值覆盖了在/etc/gitconfig中同一个值。
在Windows系统中,Git在$HOME目录中查找.gitconfig文件(对大多数人来说,在C:\Documents and Settings\$USER下)。它也会查找/etc/gitconfig,尽管它是相对于Msys 根目录。这可能是你在Windows中运行安装程序时决定安装Git任何地方。
配置相关信息:
2.1 当你安装Git后首先要做事情是设置你用户名称和e-mail地址。这是很关键,因为每次Git提交全部会使用该信息。它被永远嵌入到了你提交中:
$ git config --global user.name "John Doe"
$ git config --global user.email
2.2 你编辑器(Your Editor)
现在,你标识已经设置,你能够配置你缺省文本编辑器,Git在需要你输入部分消息时会使用该文本编辑器。缺省情况下,Git使用你系统缺省编辑器,这通常可能是vi 或 vim。假如你想使用一个不一样文本编辑器,比如Emacs,你能够做以下操作:
$ git config --global core.editor emacs
2.3 检验你设置(Checking Your Settings)
假如你想检验你设置,你能够使用 git config --list 命令来列出Git能够在该处找到全部设置:
$ git config --list
你也能够查看Git认为一个特定关键字现在值,使用以下命令 git config {key}:
$ git config user.name
2.4 获取帮助(Getting help)
假如当你在使用Git时需要帮助,有三种方法能够取得任何git命令手册页(manpage)帮助信息:
$ git help <verb>
$ git <verb> --help
$ man git-<verb>
比如,你能够运行以下命令获取对config命令手册页帮助:
$ git help config
展开阅读全文