Git本地仓库基本操作
设置姓名和邮箱
设置使用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表示updategit add -A
将文件的修改,文件的删除,文件的新建(相当于add .与add -u的合集),添加到暂存区,A表示all- 其他
可以使用git add -h命令来查看
$ git add -h
usage: git add [<options>] [--] <pathspec>...
-n, --dry-run dry run
-v, --verbose be verbose
-i, --interactive interactive picking
-p, --patch select hunks interactively
-e, --edit edit current diff and apply
-f, --force allow adding otherwise ignored files
-u, --update update tracked files
--renormalize renormalize EOL of tracked files (implies -u)
-N, --intent-to-add record only the fact that the path will be added later
-A, --all add changes from all tracked and untracked files
--ignore-removal ignore paths removed in the working tree (same as --no-all)
--refresh don't add, only refresh the index
--ignore-errors just skip files which cannot be added because of errors
--ignore-missing check if - even missing - files are ignored in dry run
--chmod (+|-)x override the executable bit of the listed files
--pathspec-from-file <file>
read pathspec from file
--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.txt,git 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 418ee0fgit reflog
如果你版本回退之后发现,还是最新的那个版本好一点,但此时通过git log已经找不到那个版本号了,
可以使用git reflog

显然,版本回退之前的最新版本号为14a5f92
然后使用git reset --hard 14a5f92
打开readme.txt,因为版本回退而去掉的修改又回来了

Git本地仓库基本操作的更多相关文章
- Git本地仓库基本操作-1
code[class*="language-"], pre[class*="language-"] { color: rgba(51, 51, 51, 1); ...
- Git本地仓库与远程github同步的时候提示fatal: remote origin already exists 错误解决办法
Git本地仓库与远程github同步的时候提示fatal: remote origin already exists 错误解决办法 1.git在本地的电脑创建了仓库,要远程同步github的仓库.使用 ...
- Git - Git本地仓库与GitHub远程仓库关联
前言 Git本地仓库与GitHub仓库的关联逻辑如下 创建Key 在本地仓库下,新建Key文件夹,然后打开Key文件夹,单击鼠标右键,选择Git Bash Here. 输入命令:ssh-keygen ...
- 创建Git本地仓库
一.获取Git仓库 安装好Git后即可创建Git本地仓库,开始项目的版本管理.有两种方法取得Git项目仓库:1.在现有项目或目录下导入所有文件到Git中:2.从一个服务器克隆一个现有的Git仓库. 1 ...
- Git本地仓库和远程仓库冲突解决
场景描述: 在本地创建了一个git repo,并且执行了,git init命令,创建了.gitignore文件,或者README.md文件: 在远程创建了一个git repo,创建时也初始化了.git ...
- Git本地仓库
原文:http://www.cnblogs.com/wilber2013/p/4189920.html Git基本概念 在Git中,我们将需要进行版本控制的文件目录叫做一个仓库(repository) ...
- git本地仓库与github远程仓库链接协议问题
前提条件:有github账号,本地安装了git,能上网. 环境:ubuntu14.0.4LTS 首先在你得在github上创建一个仓库new repository,然后再本地创建一个文件夹mkdir ...
- Git本地仓库push至GitHub远程仓库每次输入账户密码问题解决(亲测可行)
在使用git push命令将本地仓库内容推送至GitHub远程仓库的每一次git都要让我们输入GitHub的用户名和密码.这着实让我们心烦.我们会有疑问,我明明设置了公钥呀!怎么还需要输入账户和密码? ...
- GitHub创建仓库,并与git本地仓库关联
登录后头像右上角点击: 起名再create 后 会跳转到下面页面: 先在git上复制执行第一条指令,创建一个readme文档 然后再用第二条初始化仓库 第三步将readme文档添加至暂存区 然后提交一 ...
随机推荐
- 06 Vue生命周期钩子
生命周期钩子 表示一个vue实例从创建到销毁的这个过程,将这个过程的一些时间节点赋予了对应的钩子函数 钩子函数: 满足特点条件被回调的方法 new Vue({ el: "#app" ...
- 汉王JAVA笔试题
汉王JAVA笔试题 1,jsp中动态include与静态include的区别? (1)动态包含总是会检查文件中的变化,适合用于包含动态页面,并且可以带参数. (2)静态包含不会检查所含文件的变化,适用 ...
- java 基本语法(十七)Lambda (四)构造器引用与数组引用
1.构造器引用格式:类名::new 2.构造器引用使用要求:和方法引用类似,函数式接口的抽象方法的形参列表和构造器的形参列表一致.抽象方法的返回值类型即为构造器所属的类的类型 3.构造器引用举例: / ...
- Mysql基础(八):MySQL 表的一对一、一对多、多对多问题
将实体与实体的关系,反应到最终数据库表的设计上,将关系分为三种:一对一,一对多(多对一)和多对多,所有的关系都是表与表之间的关系; 一对一 一对一:一张表的一条记录只能与另外一条记录进行对应,反之亦然 ...
- Docker基础使用
Docker篇 CentOS 安装Docker - 菜鸟教程 安装须知: 1.Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更 ...
- 毕业三年从月薪6K到20K
首先,声明这不是标题党,是一个真实的北漂故事! 为什么写这篇文章呢?第一,有感而发,感恩遇到的人和事,其次,希望对读这篇文章的你有所帮助 毕业那年 时间追溯到17年6月30号,那天毕业典礼,之 ...
- OSCP Learning Notes - Exploit(7)
Pre-Exploit Password Attacks Tools: 1. ncrack Ncrack 0.6 ( http://ncrack.org )Usage: ncrack [Options ...
- 牛客练习赛 66C公因子 题解
原题 原题 思路 考场想复杂了,搞到自闭-- 实际上,因为差值不变,我们可以先差分,求\(\gcd\),便得到答案(考场时想多了,想到了负数.正数各种复杂的处理,但是不需要),最后处理一下即可 代码 ...
- react : umi 引入 antd 踩坑
首先要明确一个问题. 不管是 antd 还是 dva 还是别的什么东西,他们都是 umi 的插件——只要这个项目是使用 umi 脚手架生成的. 所以第一步应该是 .umirc.js (config.j ...
- python学完可以做什么?Python就业方向最全面的解析
乔布斯说过:“每一个人都应该学习如何编程,因为编程会教会你如何思考.”下一个时代是人机交互的时代,学习编程不是要让你成为程序员,而让你理解这个时代. 点击免费领取:全网最全python学习导图+14张 ...