初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

  1. 使用命令git add <file>,注意,可反复多次使用,添加多个文件;
  2. 使用命令git commit -m <message>,完成。

查看当前git情况:

  1. 要随时掌握工作区的状态,使用git status命令。
  2. 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

git版本穿梭:

  1. git使用HEAD指针来指定当前版本的,所以版本切换非常快。
  2. HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。或者 git reset --hard HEAD~1  (这种不常用)
  3. 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
  4. 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

git的暂存区:

我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

修改管理:

为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。

通过实操来理解:

step1、修改文件

step2、git add 文件

step3、再次修改文件

step4、git commit -m "xxx"

这时使用 git status 查看仍有未提交的内容,git diff 查看是第二次修改的内容未提交。因为第二次的修改没有add 到 stage中。

所以说 git 管理的是修改,并非提交的是文件。每次修改,如果不用git add到暂存区,那就不会加入到commit中。

撤销修改:

1、当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时

用命令git checkout -- file。(这种也可以手动删除代码,就恢复到原来版本了)

注意:git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。

2、当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步

用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区:git reset HRAD readme.txt。第二步按场景1操作。

3、撤销commit后的修改

就是上面说到的:使用命令git reset --hard commit_id。或者 git reset --hard HEAD~1  (这种不常用)。

最后如果把版本库推送到远程后,就无力回天了

删除文件:

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容

git rm "文件" 就相当于 rm "文件" git add 文件。

*远程仓库:这是对“git是分布式的版本控制系统”这句话的理解

Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。只是各个本地库和最后一次拉取是的服务器版本有些不同。

日过选择SSH方式clone:你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:

先 cd ~/.ssh  ,看看有没有 id_rsaid_rsa.pub这两个文件,没有的话。ssh-keygen -t rsa -C "youremail@example.com" 创建。

这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

把公钥(id_rsa.pub)放到GitHub的“Add SSH Key”就行了。

添加远程仓库:

在GitHub上创建一个仓库。

➜  mygittest git:(master) git remote add origin https://github.com/qqcui/mygittest.git

➜  mygittest git:(master) git push -u origin master

git remote add [别名] [地址] : 是把别名和地址对应上,之后就可以只用 别名就好

git remote 详细说明:https://www.yiibai.com/git/git_remote.html

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

$ git push <远程主机名 就是 origin> <本地分支名>:<远程分支名>
$ git pull <远程主机名> <远程分支名>:<本地分支名> git remote show:展示本地仓库和远程仓库的连接,可能有多个,一般只有
origin 这一个
git remote show origin:这个是展示origin这个远程连接的详细信息。
git remote rm origin : 删除这个远程连接
git remote set-url origin http:// :编辑远程连接

SSH警告

当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

这个警告只会出现一次,后面的操作就不会有任何警告了。

如果你实在担心有人冒充GitHub服务器,输入yes前可以对照GitHub的RSA Key的指纹信息是否与SSH连接给出的一致。

小结

要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git

关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步!

从远程库克隆

上面我们讲了先有本地库,后有远程库的时候,如何关联远程库。现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。

1、远程创建仓库

2、git clone

Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。




git概述(一)的更多相关文章

  1. git概述(三)

    Bug分支: 当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交: 并不是你不想提交,而是工作只进行 ...

  2. git概述(二)

    分支管理 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了.如果等代码全部写完再一次 ...

  3. git概述

    学习资料来源-人家写得比我好 #视频教程: https://www.bilibili.com/video/BV1vy4y1s7k6?spm_id_from=pageDriver #文档教程 https ...

  4. Git 笔记整理3

    1,git clone某一个分支 git clone -b <branch> <remote_repo> 2,.git 文件太大 :clone的时候,可以指定深度,如下,为1即 ...

  5. Git简明手册

    文/AbnerKang(简书作者)原 文链接:http://www.jianshu.com/p/d7a7ba4f2341?utm_campaign=maleskine& utm_content ...

  6. 源代码管理工具-GIT

    源代码管理工具-GIT ---- 一. 掌握 - git 概述 1. git 简介? 什么是git? git是一款开源的分布式版本控制工具在世界上所有的分布式版本控制工具中,git是最快.最简单.最流 ...

  7. iOS核心笔记—源代码管理工具-GIT

    源代码管理工具-GIT 一. git 概述 1. git 简介? 什么是git? > git是一款开源的分布式版本控制工具 > 在世界上所有的分布式版本控制工具中,git是最快.最简单.最 ...

  8. Git(一)之基本操作详解

    前言 在这段时间的工作中一直都是用Git作为版本控制,只是知道简单的几个命令,没有去了解它的内部原理.所以周末有时间来系统学习. 现在的公司基本上都是用Git作为版本控制,当然也有SVN的. Git是 ...

  9. 如何在CentOS 7中安装最新Git(源码安装)

    如何在CentOS 7中安装最新Git 2017年05月20日 11:49:53 阅读数:1624 Git是在今天的软件开发行业一个非常有用的版本控制工具.我一直使用Git.于是为Linux公社的读者 ...

随机推荐

  1. cocos2dx基础篇(27) 屏幕适配

    [3.x]https://blog.csdn.net/qq_40338728/article/details/82964046 [屏幕适配] 1.两个分辨率 1.1.窗口分辨率 在main.cpp中有 ...

  2. heartbeat双主高可用

    一.基础配置 1.hostnamectl set-hostname node1 (node2) 2.[root@node1 ~]# cat /etc/hosts     192.168.40.128 ...

  3. 奉献pytorch 搭建 CNN 卷积神经网络训练图像识别的模型,配合numpy 和matplotlib 一起使用调用 cuda GPU进行加速训练

    1.Torch构建简单的模型 # coding:utf-8 import torch class Net(torch.nn.Module): def __init__(self,img_rgb=3,i ...

  4. HDU 1133 Buy the Ticket (数学、大数阶乘)

    Buy the Ticket Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  5. [转帖] Linux 下面 perl 命令的简介

    https://www.jb51.net/article/123326.htm 感觉挺好的 改天需要仔细学习一下. 前言 本文主要给大家介绍了关于Perl单行命令的相关内容,分享出来供大家参考学习,下 ...

  6. SpringBoot自动化配置之二:自动配置(AutoConfigure)原理、EnableAutoConfiguration、condition

    自动配置绝对算得上是Spring Boot的最大亮点,完美的展示了CoC约定优于配置: Spring Boot能自动配置Spring各种子项目(Spring MVC, Spring Security, ...

  7. python调用jenkinsapi

    在通过python 调用jenkinsapi的时候,需要对一些作业进行定时对构建 报错: <title>Error 403 No valid crumb was included in t ...

  8. 使用render函数渲染组件

    使用render函数渲染组件:https://www.jianshu.com/p/27ec4467a66b

  9. RPC架构下org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

    一.调用后台接口报错 网上有很多作者列出大部分原因: 1.实体类名对应配置文件名或者路径不一致 2.spring扫描路径不全 但是本人使用的是mtbatis逆向工程生成的实体类.接口与配置文件,所以不 ...

  10. linux-查询某软件的安装的目录

    eg:jenkins\\\ rpm -ql jenkins 安装目录/var/lib/jenkins 配置文件 /etc/sysconfig/jenkins 日志目录 /var/log/jenkins ...