前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git使用

Git使用

作者头像
yaohong
发布2019-09-11 18:30:48
4610
发布2019-09-11 18:30:48
举报
文章被收录于专栏:姚红专栏姚红专栏

一:安装git

1.1.linux安装

  1、安装git依赖包

    yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

  2、删除已有的git

    yum remove git

  3、下载git源码

    切换到你的包文件存放目录下

      cd /usr/src

    下载git安装包

      wget https://www.kernel.org/pub/software/scm/git/git-2.8.3.tar.gz

    解压git安装包

      tar -zxvf git-2.8.3.tar.gz

      cd git-2.8.3

    配置git安装路径

      ./configure prefix=/usr/local/git/

    编译并且安装

      make && make install

    查看git版本号

    git --version

    git已经安装完毕

  4、将git指令添加到bash中

    vi /etc/profile

    在最后一行加入

    export PATH=$PATH:/usr/local/git/bin

    让该配置文件立即生效

    source /etc/profile

1.2.windows安装

官网 https://git-scm.com/downloads下载安装即可。

二:创建版本库

  1.创建目录

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit

  2.目录变成Git可以管理的仓库

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

  瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

  3.创建文件

#vi  ./learngit/readme.txt

  3.添加文件到版本库

  第一步,用命令git add告诉Git,把文件添加到仓库,文件readme.txt从工作区被提交到暂存区,但此时文件并没有真正进入到版本库当中,文件目前只处于一个中间状态。

git add readme.txt

第二步,用命令git commit告诉Git,把文件提交到仓库

git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

这个命令将处于中间状态的文件(暂存区的文件)提交到版本库中,这时才算真正完成了一次提交过程。

 #git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

三:远程仓库

  在继续阅读后续内容前,请自行注册GitHub账号。由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:

3.1.ssh_key

  第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

$ ssh-keygen -t rsa -C "youremail@example.com"

    你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。

    如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

  第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:

  然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub

    点“Add Key”,你就应该看到已经添加的Key:

    为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。

    当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

    最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。

    如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。这个方法我们后面会讲到的,相当简单,公司内部开发必备。

    确保你拥有一个GitHub账号后,我们就即将开始远程仓库的学习。

    现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。

3.2从远程库克隆

    首先,登陆GitHub,创建一个新的仓库,名字叫gitskills

    我们勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。创建完毕后,可以看到README.md文件:

    现在,远程库已经准备好了,下一步是用命令git clone克隆一个本地库:

$ git clone git@github.com:michaelliao/gitskills.git
Cloning into 'gitskills'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
Receiving objects: 100% (3/3), done.

    注意把Git库的地址换成你自己的,然后进入gitskills目录看看,已经有README.md文件了:

$ cd gitskills
$ ls
README.md

3.3.提交版本

    首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库;

    在Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:

    目前,在GitHub上的这个learngit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

    现在,我们根据GitHub的提示,在本地的learngit仓库下运行命令:

$ git remote add origin git@github.com:michaelliao/learngit.git

  请千万注意,把上面的michaelliao替换成你自己的GitHub账户名,否则,你在本地关联的就是我的远程库,关联没有问题,但是你以后推送是推不上去的,因为你的SSH Key公钥不在我的账户列表中。

  添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

  下一步,就可以把本地库的所有内容推送到远程库上:

#git push -u origin master
Counting objects: 20, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (20/20), 1.64 KiB | 560.00 KiB/s, done.
Total 20 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), done.
To github.com:michaelliao/learngit.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'

  把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

  由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

四:版本回退

  git log命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file

# git log
commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master)
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 21:06:15 2018 +0800

    append GPL

commit e475afc93c209a690c39c13a46716e8fa000c366
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 21:03:36 2018 +0800

    add distributed

commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 20:59:18 2018 +0800

    wrote a readme file

  回退到上个版本

#git reset --hard HEAD^

  回退到历史版本

#git reset --hard HEAD^
  跳到指定版本
 id号不用写全,前几位即可
#git reset --hard 1094

五:状态对比:

  1.状态查看

#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:   readme.txt

no changes added to commit (use "git add" and/or "git commit -a")

git status命令可以让我们时刻掌握仓库当前的状态,上面的命令输出告诉我们,readme.txt被修改过了,但还没有准备提交的修改。

2.不同对比

已经记不清上次怎么修改的readme.txt,所以,需要用git diff这个命令看看

# git diff readme.txt 
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.

六: 撤销本机上修改

#git checkout -- readme.txt

  命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

  一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

  一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

七:分支

7.1.创建与合并分支

  查看分支:git branch

  创建分支:git branch <name>

  切换分支:git checkout <name>

  创建+切换分支:git checkout -b <name>

  合并某分支到当前分支:git merge <name>

  删除分支:git branch -d <name>

八:标签

  • 命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
  • 命令git tag -a <tagname> -m "blablabla..."可以指定标签信息;
  • 命令git tag可以查看所有标签。
  • 命令git push origin <tagname>可以推送一个本地标签;
  • 命令git push origin --tags可以推送全部未推送过的本地标签;
  • 命令git tag -d <tagname>可以删除一个本地标签;
  • 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-06-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一:安装git
    • 1.1.linux安装
      • 1.2.windows安装
      • 二:创建版本库
      • 三:远程仓库
        • 3.1.ssh_key
          • 3.2从远程库克隆
            • 3.3.提交版本
            • 四:版本回退
            • 五:状态对比:
            • 六: 撤销本机上修改
            • 七:分支
              • 7.1.创建与合并分支
              • 八:标签
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档