Git学习

来源:互联网 发布:淘宝店铺如何上传图片 编辑:程序博客网 时间:2024/06/06 04:18

Git学习

本篇文章参考自:http://blog.jobbole.com/78960/

1.  git与svn的异同:

同:都是用来控制代码版本的工具

异:

svn是集中式版本控制系统,版本库是在中央服务器,但是我们的代码却是写在自己的电脑上,因此每次写完代码后都需要将自己的代码上传到中央仓库,而别人也需要从这个中央仓库获取最新的版本,然后写完自己的代码后再推送到中央仓库,上传或者下载过程都需要联网,速度慢

git是分布式版本控制系统, 每个人的电脑都是一个版本库,没有中央服务器,写完自己的代码互相推送对方即可以看到你修改或者是提交的代码,不需要联网,速度快

 

2.git常用命令解析

2.1 git config –global  

Git config –global user.name “jingjing”

Git config –global user.email “666666@qq.com”

 

因为git是分布式版本控制系统,每个人的电脑都是一个版本库,因此需要定义用户名和邮箱作为版本库的唯一标识。

 

 

2.2   git之创建版本库 repository

cd命令进入你指定想创建仓库的目录(当然你还可以使用mkdir命令的形式创建目录 如  mkdir gittest),然后使用命令:git init  这样就可以生成一个git仓库了,此时目录下面会生成一个.git文件夹,用于跟踪和管理版本的。

 

2.3  git之文件的添加 提交以及状态查看

现在你改了某个文件(注意所有的版本控制系统都只能跟踪文本文件的改动),想把它推送到仓库里面,使用如下命令:

Git add text.txt      添加文件到暂存区

Git commit –m ‘提交text.txt文件’   将暂存区的文件提交到仓库里面-m表示提交这个文件的时备注,这样别人看到这个文件的备注就能知道你做了什么操作了  每次对文件进行修改后都可以用如上操作提交更新文件

 

Git status     查看是否还有未提交的文件,如果还有未提交的文件(即你修改了内容而没有提交到仓库或者是新建的文件),那么我们可以使用如下命令查看我们的文件有什么不一样:

Git diff text.txt      这个命令可以展示仓库的文件和我们修改的文件的不同之处。

Cat text.txt      这个命令用来帮助我们展示文件内容(此处注意是工作区的文件内容哦  而不是暂存区的)

 

如果我们想查看提交的日志(历史记录),我们可以通过如下命令查看:

Git log    这样我们就能查看我们提交文件的历史记录了

 

 

 

2.4  git之版本回退

都说了是版本控制,如果我们因为需求错误而想回退到之前的版本,这时候我们就可以利用git命令很容易回退到之前的版本:

Git reset --hard HEAD^  回退到上一个版本

Git reset --hard HEAD^^  回退到上上个版本

Git reset --hard HEAD^^^  回退到上上上个版本

…以此类推

使用如上的方法可以回退版本,但当我们累计的版本很多时,上面的操作显然是不行的,我们可以指定回退版本的版本号,这样就很容易的回退版本了,那么如何查看版本号呢:

Git reflog    该命令可以查看所有历史记录的版本号,第一列就是我们的想要的版本号,当然还有我们提交时候的备注,然后找到我们想回退的版本号,使用如下命令:

git reset  --hard 版本号    这样我们就能回退到想要的版本号了

 

3. 暂存区与工作区的区别

使用git add test.txt 是将文件添加到暂存区中,即.git文件的stage(暂存区)里面,而使用git commit 命令是将暂存区的文件提交到当前分支中(当前master  git会为我们自动创建第一个master分支),工作区就是除去.git的所有文件或目录

 

 

4. 撤销修改和删除文件操作

Git checkout -- test.txt   撤销对工作区的修改  注意是撤销对工作区的修改哦   如果我们将工作区中的文件add到暂存区中,那么我们就无法撤销了

 

rm test.txt   删除已经提交的文件 注意是删除工作区的文件哦(当然其实我们可以手动删除) 版本库里面肯定是还存在的  如果想彻底删除的话  我们再提交一次就可以了

 

5. 远程仓库

 

 

1.创建远程仓库并关联本地仓库

 首先,你需要有一个github账号,没有的话自己去注册。

 由于本地的git仓库和远程仓库之间的传输是通过ssh加密的,所以我们需要创建ssh key,使用如下命令:ssh-keygen  -t rsa –C “youremail@qq.com “  (我的默认是放在了C/USER/Administrator/.ssh目录下),然后就生成了id_rsa和id_rsa.pub两个文件,一个是私钥,一个是公钥,   私钥要保管好,只能自己知道,公钥可以给任何人看,现在我们需要在github账号上添加我们的公钥,settings->ssh keys->New SSH key,将id_rsa.pub的内容复制粘贴过去即能添加。

 

 好了,现在我们该把本地仓库同步到远程仓库了,在此之前如何将本地仓库添加到远程仓库呢

登录github,点击 + new rep 填入相应的信息(注意此处只能创建公有的仓库,私有的要钱!)

之后就是关联本地仓库,并将master分支中的内容推送到关联的远程仓库中去:

Git remote addorigin https://github.com/aiyayablog/greenfarm.git  //关联仓库

Git push –u originmaster     //将master分支中的内容推送到关联的远程仓库中

由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在github页面中看到远程库的内容已经和本地一模一样了 

 

 这样远程仓库就与本地仓库关联起来了,从现在起,只要本地做了提交,就可以通过如下命令将本地仓库的内容推送到远程仓库:

Git push originmaster

 

 2.克隆远程仓库到本地

 使用如下命令即能将远程仓库克隆到本地仓库:

Git clone github仓库地址

 

 

 

3.创建与合并分支

 

此前我们默认生成了一个master分支,也叫做主分支,那么我们如何创建或者切换到其他的分支呢?使用如下命令:

Git checkout –b name   创建并切换分支

Git branch    查看分支

Git branch name 创建分支

Git checkout    切换分支

Git branch –d name   删除分支

Git mergename    合并分支到当前分支

 

 

Git基本常用命令:

mkdir:        XX (创建一个空目录 XX指目录名)

   pwd:         显示当前目录的路径。

   git init          把当前的目录变成可以管理的git仓库,生成隐藏.git文件。

   git add XX       把xx文件添加到暂存区去。

   git commit –m “XX”  提交文件 –m 后面的是注释。

   git status        查看仓库状态

   git diff  XX      查看XX文件修改了那些内容

   git log          查看历史记录

   git reset  –hard HEAD^ 或者 git reset  –hard HEAD~ 回退到上一个版本

                       (如果想回退到100个版本,使用git reset –hard HEAD~100 )

   cat XX         查看XX文件内容

   git reflog       查看历史记录的版本号id

   git checkout — XX  把XX文件在工作区的修改全部撤销。

   git rm XX          删除XX文件

   git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库

   git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库

   git clone https://github.com/tugenhua0707/testgit 从远程库中克隆

   git checkout –b dev  创建dev分支 并切换到dev分支上

   git branch  查看当前所有的分支

   git checkout master 切换回master分支

   git merge dev    在当前的分支上合并dev分支

   git branch –d dev 删除dev分支

   git branch name  创建分支

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

   git stash list 查看所有被隐藏的文件列表

   git stash apply 恢复被隐藏的文件,但是内容不删除

   git stash drop 删除文件

   git stash pop 恢复文件的同时 也删除文件

   git remote 查看远程库的信息

   git remote –v 查看远程库的详细信息

   git push origin master  Git会把master分支推送到远程库对应的远程分支上