设置姓名和邮箱

设置使用Git时的姓名和邮箱地址。名字须用英文输入

git config --global user.name "chuyaoxin"

git config --global user.email "yaoxinchu@126.com"



命令运行的结果是在“C:\Users\用户名”路径下,产生一个.gitconfig文件,可以用记事本打开。



想更改这些信息时,可以直接编辑这个设置文件。这里设置的姓名和邮箱地址会用在Git的提交日志中。由于在GitHub上公开仓库时,这里的姓名和邮箱地址也会随着提交日志一同被公开,所以请不要使用不便公开的隐私信息。

创建仓库

创建一个新文件夹,比如“TestForGit”

然后右键点击这个文件夹,选择Git Bash Here

打开后,输入git init完成代码仓库的建立



输入ls -al可以看到目录下有个.git的文件夹,但这个目录默认是隐藏的。

提交本地代码

先用add命令把要提交的内容都加进来,然后commit才是真的去执行提交操作。

第一步,用命令git add告诉Git,把文件添加到仓库

git add readme.txt

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

git commit -m "write a readme file"

.gitignore

.gitignore是Git的忽略配置文件,放在项目根目录下就行,这样在提交代码时就不会跟踪在.gitignore配置文件列举的文件。另外,.gitignore文件本身需要被git跟踪管理,不能被忽略。

git add

用途:可以用来跟踪新文件,或者添加已被修改的跟踪的文件到缓存区,或者把合并的冲突文件标记为已解决

git add的原意是更新当前工作目录树修改的内容到索引中(也就是缓存中去)

主要针对两种文件:(1)版本库没有跟踪的文件(2)版本库已经跟踪,但是修改了的文件

另外git add会自动忽略.gitignore文件所忽略的文件。

  • git add .

    将文件的修改、文件的新建(注意!不包括被删除的文件),添加到暂存区

    git add .会把所有untrack的文件都加入暂存区,并且会根据.gitignore做过滤
  • git add *

    git add *会忽略.gitignore把任何文件都加入暂存区
  • git add -u

    将文件的修改、文件的删除(注意!仅监控被add的文件,不包括新文件),添加到暂存区,u表示update
  • git add -A

    将文件的修改,文件的删除,文件的新建(相当于add .与add -u的合集),添加到暂存区,A表示all
  • 其他

    可以使用git add -h命令来查看
  1. $ git add -h
  2. usage: git add [<options>] [--] <pathspec>...
  3. -n, --dry-run dry run
  4. -v, --verbose be verbose
  5. -i, --interactive interactive picking
  6. -p, --patch select hunks interactively
  7. -e, --edit edit current diff and apply
  8. -f, --force allow adding otherwise ignored files
  9. -u, --update update tracked files
  10. --renormalize renormalize EOL of tracked files (implies -u)
  11. -N, --intent-to-add record only the fact that the path will be added later
  12. -A, --all add changes from all tracked and untracked files
  13. --ignore-removal ignore paths removed in the working tree (same as --no-all)
  14. --refresh don't add, only refresh the index
  15. --ignore-errors just skip files which cannot be added because of errors
  16. --ignore-missing check if - even missing - files are ignored in dry run
  17. --chmod (+|-)x override the executable bit of the listed files
  18. --pathspec-from-file <file>
  19. read pathspec from file
  20. --pathspec-file-nul with --pathspec-from-file, pathspec elements are separated with NUL character

git commit

  • git commit -m "write a readme file"



    可以在使用了多次git add之后再使用git commit来提交。

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

    执行成功后,从图中可以看出,一个文件被改动,插入了6行内容。

git status

  • git status

    可以使用git status命令查看是否还有文件未提交



    上图说明当前文件都已正常提交。

    如果我对上传的文件进行修改,但是却不提交会如何?



    会报出如上所示的错误!modified: readme.txt no changes added to commit

    字面意思:readme.txt被修改,提交没有变化

git diff

  • git diff readme.txt

    git status可以让我们知道有没有正常提交,比如上面那个例子,但如果要查看文件到底修改了什么内容,可以使用git diff 文件名命令



    这条命令将我对这个文件的修改记录显示了出来

查看提交记录

  • git log

    使用git log即可查看历史提交信息



    从这张图也可以看出之前git commit -m "write a readme file"中,-m部分的作用,这个和编程时写注释是一样的,可以不写,但是写的话方便以后的工作。

    还有要注意的地方是输出的结果,

    显然我这是提交了两次,以第一次的结果为例,

commit 418ee0fc27d78a71f5869451b5a1599cc028b0ca (HEAD -> master)

Author: chuyaoxin yaoxinchu@126.com

Date: Tue Aug 4 19:48:59 2020 +0800

write a readme file

对应的含义分别是

此次提交对应的版本号

提交人:姓名 邮箱

提交的时间

提交版本修改的内容:就是我们git commit -m “xxx”里的xxx

撤销未提交的修改

如果对文件进行了错误的修改,且已经Ctrl+S保存,但还没有提交,想要撤销之前的修改可以使用checkout命令

  • 不仅未提交,而且没有add

    如果是这种情况,只需要一句git checkout 修改的文件名即可

    例如,git checkout readme.txt



    此时,再打开readme.txt,我对此文件的第二次修改被取消掉了

  • 已经add,但还没有提交

    如果我们已经add了的话,那么直接checkout是没任何作用的,我们要先取消添加才可以撤回提交

    git reset HEAD readme.txt

    git checkout readme.txt

版本回退

  • git reset

    如果我们已经提交,但想退回到之前的版本,可以使用git reset命令

    比如我先在readme.txt中添加了一行,然后git add readme.txtgit commit -m "add the third step",添加并提交到仓库

    完成之后,使用git log检查提交记录。



    PS:通过这张图也能看出,最新的版本号显示在最上方
  • git reset --hard HEAD

    在git中,HEAD表示当前版本,HEAD表示上一个版本,HEAD^表示上上个版本

    退回到上一个版本需要依次输入以下指令

    git reset --hard HEAD

    git reset --hard HEAD^

    执行结果如下图所示:



    再输入git log查看,此时的版本号已经发生了变化,最新修改的那个版本号没有显示出来了

  • git reset --hard 版本号

    这条命令可以让我们将当前版本更改为存在过的任意一个版本

    同时仔细观察这张图,



    可以很容易的猜到,其实版本号只要输入前七位就可以了

    所以我们之前的回退指令可以用这条来替代,

    git reset --hard 418ee0f
  • git reflog

    如果你版本回退之后发现,还是最新的那个版本好一点,但此时通过git log已经找不到那个版本号了,

    可以使用git reflog



    显然,版本回退之前的最新版本号为14a5f92

    然后使用git reset --hard 14a5f92

    打开readme.txt,因为版本回退而去掉的修改又回来了

Git本地仓库基本操作的更多相关文章

  1. Git本地仓库基本操作-1

    code[class*="language-"], pre[class*="language-"] { color: rgba(51, 51, 51, 1); ...

  2. Git本地仓库与远程github同步的时候提示fatal: remote origin already exists 错误解决办法

    Git本地仓库与远程github同步的时候提示fatal: remote origin already exists 错误解决办法 1.git在本地的电脑创建了仓库,要远程同步github的仓库.使用 ...

  3. Git - Git本地仓库与GitHub远程仓库关联

    前言 Git本地仓库与GitHub仓库的关联逻辑如下 创建Key 在本地仓库下,新建Key文件夹,然后打开Key文件夹,单击鼠标右键,选择Git Bash Here. 输入命令:ssh-keygen ...

  4. 创建Git本地仓库

    一.获取Git仓库 安装好Git后即可创建Git本地仓库,开始项目的版本管理.有两种方法取得Git项目仓库:1.在现有项目或目录下导入所有文件到Git中:2.从一个服务器克隆一个现有的Git仓库. 1 ...

  5. Git本地仓库和远程仓库冲突解决

    场景描述: 在本地创建了一个git repo,并且执行了,git init命令,创建了.gitignore文件,或者README.md文件: 在远程创建了一个git repo,创建时也初始化了.git ...

  6. Git本地仓库

    原文:http://www.cnblogs.com/wilber2013/p/4189920.html Git基本概念 在Git中,我们将需要进行版本控制的文件目录叫做一个仓库(repository) ...

  7. git本地仓库与github远程仓库链接协议问题

    前提条件:有github账号,本地安装了git,能上网. 环境:ubuntu14.0.4LTS 首先在你得在github上创建一个仓库new repository,然后再本地创建一个文件夹mkdir ...

  8. Git本地仓库push至GitHub远程仓库每次输入账户密码问题解决(亲测可行)

    在使用git push命令将本地仓库内容推送至GitHub远程仓库的每一次git都要让我们输入GitHub的用户名和密码.这着实让我们心烦.我们会有疑问,我明明设置了公钥呀!怎么还需要输入账户和密码? ...

  9. GitHub创建仓库,并与git本地仓库关联

    登录后头像右上角点击: 起名再create 后 会跳转到下面页面: 先在git上复制执行第一条指令,创建一个readme文档 然后再用第二条初始化仓库 第三步将readme文档添加至暂存区 然后提交一 ...

随机推荐

  1. sass-loader安装+Failed to resolve loader: sass-loader You may need to install it.解决方法

    方式一: 通过 cnpm 安装node-sass cnpm install node-sass --save 方式二: 通过npm 安装 1.安装sass-loader npm install sas ...

  2. scala 数据结构(三):元组Tuple

    1 元组Tuple-元组的基本使用 基本介绍 元组也是可以理解为一个容器,可以存放各种相同或不同类型的数据. 说的简单点,就是将多个无关的数据封装为一个整体,称为元组, 最多的特点灵活,对数据没有过多 ...

  3. java 基本语法(九) 数组(二) 一维数组

    1.一维数组的声明与初始化 正确的方式: int num;//声明 num = 10;//初始化 int id = 1001;//声明 + 初始化 int[] ids;//声明 //1.1 静态初始化 ...

  4. 机器学习实战基础(十三):sklearn中的数据预处理和特征工程(六)特征选择 feature_selection 简介

    当数据预处理完成后,我们就要开始进行特征工程了. 在做特征选择之前,有三件非常重要的事:跟数据提供者开会!跟数据提供者开会!跟数据提供者开会!一定要抓住给你提供数据的人,尤其是理解业务和数据含义的人, ...

  5. Guava的两种本地缓存策略

    Guava的两种缓存策略 缓存在很多场景下都需要使用,如果电商网站的商品类别的查询,订单查询,用户基本信息的查询等等,针对这种读多写少的业务,都可以考虑使用到缓存.在一般的缓存系统中,除了分布式缓存, ...

  6. JVM调优工具Arthas的使用

    Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱.在线排查问题,无需重启:动态跟踪Java代码:实时监控JVM状态. Arthas 支持JDK6+,支持Linux/Mac/Wind ...

  7. 深度学习趣谈:什么是迁移学习?(附带Tensorflow代码实现)

    一.迁移学习的概念 什么是迁移学习呢?迁移学习可以由下面的这张图来表示: 这张图最左边表示了迁移学习也就是把已经训练好的模型和权重直接纳入到新的数据集当中进行训练,但是我们只改变之前模型的分类器(全连 ...

  8. tensorflow对鸢尾花进行分类——人工智能入门篇

    tensorflow之对鸢尾花进行分类 任务目标 对鸢尾花数据集分析 建立鸢尾花的模型 利用模型预测鸢尾花的类别 环境搭建 pycharm编辑器搭建python3.* 第三方库 tensorflow1 ...

  9. Apache Tomcat目录结构与版本升级

    升级原因: 由于当前操作系统内的tomcat版本过低,存在大量高中危漏洞,存在一定的安全隐患.如下图所示,使用绿盟扫描器进行扫描爆出大量漏洞. 升级思路: 既然决定要升级,那么我觉得首先要做的就是自己 ...

  10. 题解 洛谷 P3571 【[POI2014]SUP-Supercomputer】

    由数据范围可得出,不可能一次一次去进行回答询问,只能离线处理,然后\(O(1)\)解决. 考虑\(DP\)解决,先给出\(DP\)方程: \(f_i=max(j+ \lceil \frac{s_{j+ ...