美文网首页
git的使用教程

git的使用教程

作者: 鲍先森 | 来源:发表于2017-07-08 13:58 被阅读0次

一、简介

1.版本控制系统

cvs、svn: 集中式,需要中央服务器支持
git: 分布式,中央服务器辅助交换,不必须。(作者:linus)
所有的版本控制系统只能跟踪文本文件的改动,比如TXT文件,网页,所有程序代码等等,图片,视频无法跟踪其文件变化。
强烈建议所有文本使用标准的UTF-8编码,所有语言使用一种编码,没有冲突,又被所有平台支持。
注意:千万不要使用window自带的记事本编辑任何文件,原因自行百度。

2.安装

download from https://git-scm.com/downloads
全局配置

git config --global user.name "Your Name"
git config --global user.email "email@example.com"


二、创建仓库

使用git合作开发项目,首先得新建一个git的公共仓库即远程仓库。

1.初始化一个空的git仓库

mkdir test
cd test
git init //初始化

tips:
显示Initialized empty Git repository in D:/test/.git/即初始化成功。
add多个文件时,可以多次add,也可以git add file1.txt file2.txt,这样更为方便。
当前目录多了一个.git的,此目录是用来跟踪版本管理库的,注意不要动此文件夹。

2.向仓库提交文件

echo "our first git repository">>file //新建一个供提交的文件
git add file //将文件信息添加到git仓库的索引库中
git commit -m "the first file to commit" //提交到仓库中

tips:
显示[master (root-commit) 0c72641] the first file to commit
7 1 files changed, 1 insertions(+), 0 deletions(-)
8 create mode 100644 file
-m后为输入的是本次提交的说明,最好用意义。

3.一些常用命令

git status命令可以让我们时刻掌握仓库当前的状态。现在我们来修改之前提交的test文件,之后运行git status,查看结果:

 D:\test>git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
      modified:   test.txt
no changes added to commit (use "git add" and/or "git commit -a")

git diff命令可以帮助查看文件距上次修改了什么内容,运行git diff test.txt,查看结果:

  D:\testGit>git diff file
  diff --git a/file b/file
  index 1928b89..1207063 100644
  --- a/file
  +++ b/file
  @@ -1 +1,5 @@
  -"our first git repository"  //删除的内容
  +jfhsfiiisnjchdskgsssssssssssssss  //增加的内容

git log查看提交日志(作者、修改时间、修改内容)。如果嫌显示的日志太多,可以加上参数--pretty oneline
git reset --hard HEAD^^回退到上一次commit的版本,需要注意是 HEAD后面有两个^号,如果要回退到上上一个版本则要使用四个 ^号,这里本人亲测,可能版本不同对应的个数不同,仅供参考!当然如果回到上一个版本有想回到当前版本,同样使用git reset --hard commitId这里commitId为当前版本的id,可以通过git reflog命令查看之前每次提交生成的id。

4.工作区和暂存区的概念

为了便于大家理解,这里引入一张图:

0.jpg

打开本地仓库的根目录即为工作区,而前面提到的.git文件夹为git的版本,版本库最重要的就是称为stage的暂存区,还有git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。由此不难理解为什么可以通过HEAD指针实现版本之间来回穿梭!
理解上面版本库和工作区的概念,就可以理解下面一些指令,

  • 如果想要查看工作区和版本库里面最新版本的区别,可以使用git diff HEAD
  • git checkout命令是将版本库里的最新版本替换工作区的版本,无论工作区是修改还是删除,都可以一键还原。
  • git rm test.txt命令+git commit是从版本库里删除test.txt文件。

5.远程仓库

以上已经学了git的基本操作,学会这些远远不够,下面介绍git真正强大的地方。实际工作情况往往是这样,一台电脑充当服务器的角色,其他人都从这个服务器仓库里克隆一份到自己的电脑,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。

添加远程仓库
  • 创建SSH Key。在用户的主目录下查看有没有.ssh目录,如果有打开查看是否有id_rsa和id_rsa.pub这两个文件,没有则需要创建SSH Key:
    ssh-key -t rsa -C 'youremail@example.com'
    输入自己的邮箱一路enter,可自己设置密码,如果一切顺利可以在.ssh目录下找到id_rsa和id_rsa.pub两个文件
  • 登录github,打开"Account settings","SSH Keys"页面,将id_rsa.pub文件内容添加到页面中,填上任意标题,点击添加即可。
  • 在github上创建一个仓库test,此时仓库还是空的,现在我们在本地仓库目录运行如下命令:
    git remote add origin git@github.com:huangzhongren/tes.git
    huangzhongren是对应github的账户名,添加后,远程库的名字就是 origin
  • 推送内容,执行下面命令:
    git push -u origin master
    把本地库内容推送到远程,用 git push命令,实际上是把当前分支master推送到远程。
    由于远程库是空的,我们第一次推送master分支时,加上-u参数,git不但会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
从远程库克隆

准备好远程仓库后执行:
git clone git@github.com:huangzhongren/test.git
这样可以克隆一个本地库,然后可以修改本地仓库。

6.分支管理

  1. 查看分支:git branch(本地分支)
    • 查看所有分支: git branch -a
    • 查看远程分支: git branch -r
  2. 创建分支:git branch <name>
  3. 切换分支:git checkout <name>
  4. 创建+切换分支:git checkout -b <name>
  5. 合并某分支到当前分支:git merge <name>
  6. 删除分支:git branch -d <name>
    通常我们在合作开发时,往往不是在主分支master上直接操作,master分支一般都是用来发布的稳定的分支,干活都在dev分支上,到最后版本发布时在进行合并!当然你也可以创建其他的分支,例如bug修改分支,feature功能添加分支,也可以创建自己隐藏的分支。
    在测试提出bug修改需求时,而你又不想把手中没有完成时开发提交,这时你就可以使用git stash命令将当前的‘工作现场’隐藏起来,然后切换到需要修改bug的分支例如master分株,创建并切换到一个bug分支issue1,修改之后提交,在切换到master分支,使用git merge -no-ff -m 'merge bug fix' issue1合并bug,此时master的分支就被修改了,如果想回到之前的工作现场,使用git stash pop命令恢复之前的工作现场。

相关文章

网友评论

      本文标题:git的使用教程

      本文链接:https://www.haomeiwen.com/subject/cysdhxtx.html