Git 学习笔记–基本操作
- Git 与 SVN 不同,是分布式的版本控制系统,不需要主服务器即可工作,实际中为了方便各个工作者间同步工作,通常还是会设置主服务器。
- Git的设置及初始化:
- 设置全局用户信息:
luojiahu@ubuntu:~/learning/learngit$ git config --global user.name "luojiahu"
luojiahu@ubuntu:~/learning/learngit$ git config --global user.email "luojiahu@yeah.net"
- 初始化目录为Repository:
luojiahu@ubuntu:~/learning/learngit$ git init
Initialized empty Git repository in /home/luojiahu/learning/learngit/.git/
- 文件的提交:
luojiahu@ubuntu:~/learning/learngit$ git add ReadMe.txt
luojiahu@ubuntu:~/learning/learngit$ git commit -m "add a readme file."
[master (root-commit) 849bbd2] add a readme file.
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 ReadMe.txt
- 查看当前Repository的状态信息
luojiahu@ubuntu:~/learning/learngit$ 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")
- 查看详细的文件变化内容
luojiahu@ubuntu:~/learning/learngit$ git diff ReadMe.txt
diff --git a/ReadMe.txt b/ReadMe.txt
index e69de29..38b41f6 100644
--- a/ReadMe.txt
+++ b/ReadMe.txt
@@ -0,0 +1 @@
+add some content.
- 查看提交日志,可以通过—pretty=oneline 限制为显示单行
luojiahu@ubuntu:~/learning/learngit$ git log
commit f2adaa19be7976661aa65228ca20ca02a83c1999
Author: luojiahu <luojiahu@yeah.net>
Date: Tue Aug 28 08:09:00 2018 -0700add GPL
commit 356f51ac350dca07602a5b7f4d0b6fbf7d8eb27f
Author: luojiahu <luojiahu@yeah.net>
Date: Tue Aug 28 08:07:16 2018 -0700add some content.
commit 849bbd2050a94e8cec1403ebdac5f1d56ad914b8
Author: luojiahu <luojiahu@yeah.net>
Date: Tue Aug 28 07:45:18 2018 -0700add a readme file.
luojiahu@ubuntu:~/learning/learngit$ git log --pretty=oneline
f2adaa19be7976661aa65228ca20ca02a83c1999 add GPL
356f51ac350dca07602a5b7f4d0b6fbf7d8eb27f add some content.
849bbd2050a94e8cec1403ebdac5f1d56ad914b8 add a readme file.
- Git版本的回退:
在Git中,用HEAD表示当前版本,上一各版本是HEAD^,上上个为HEAD^^,以此类推… 版本号太大是可以用类似HEAD100~表示。
可以通过git reset命令实现版本的回退,不添加—hard 参数仅仅回退当前工作版本,添加—hard 修改实际文件内容。
luojiahu@ubuntu:~/learning/learngit$ git reset HEAD^
Unstaged changes after reset:
M ReadMe.txt
luojiahu@ubuntu:~/learning/learngit$ git log
commit 356f51ac350dca07602a5b7f4d0b6fbf7d8eb27f
Author: luojiahu <luojiahu@yeah.net>
Date: Tue Aug 28 08:07:16 2018 -0700add some content.
commit 849bbd2050a94e8cec1403ebdac5f1d56ad914b8
Author: luojiahu <luojiahu@yeah.net>
Date: Tue Aug 28 07:45:18 2018 -0700add a readme file.
回退后又后悔了怎么办?可以通过 git reflog 查看每一步的操作命令
luojiahu@ubuntu:~/learning/learngit$ git reflog
849bbd2 HEAD@{0}: reset: moving to HEAD^
356f51a HEAD@{1}: reset: moving to HEAD^
f2adaa1 HEAD@{2}: commit: add GPL
356f51a HEAD@{3}: commit: add some content.
849bbd2 HEAD@{4}: commit (initial): add a readme file.
然后,通过git reset –hard commit_id 恢复至对应的版本,commit_id不必写全
luojiahu@ubuntu:~/learning/learngit$ git reset –hard f2adaa1
HEAD is now at f2adaa1 add GPL
- 工作区与版本库:
Git 中当前的工作路径即为工作区(Working Directory),在Working Directory 下的 .git目录即为版本库(Repository)。其中版本库又分为暂存区(Stage),Master分支,及HEAD指针等。git add 命令将修改的文件提交到Stage区,而git commit命令将暂存区的内容提交到当前的分支。
- Git 管理 “修改” 而不是 “文件”
git commit 只会将上次 git add 命令提交到 Stage 区的修改提交到当前分支,在最近一次 gti add 命令之后对文件做的修改将不会被提交。
- 撤销修改
- 当对工作区的修改,未添加到暂存区时,可以通过:git chechout – filename 命令恢复修改
- 当对工作区的修改已经添加到暂存区,可以通过:git reset HEAD ReadMe.txt 命令恢复暂存区,然后按照1中的步骤恢复工作区。
luojiahu@ubuntu:~/learning/learngit$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)modified: ReadMe.txt
luojiahu@ubuntu:~/learning/learngit$ git reset HEAD ReadMe.txt
Unstaged changes after reset:
M ReadMe.txt
luojiahu@ubuntu:~/learning/learngit$ 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"
luojiahu@ubuntu:~/learning/learngit$ git checkout -- ReadMe.txt
luojiahu@ubuntu:~/learning/learngit$ git status
On branch master
nothing to commit, working directory clean
删除文件
Git认为文件的删除也是一种修改操作,可以通过git rm命令实现文件的删除。如果发生误删,可以通过git reset HEAD filename + git checkout – filename 恢复文件。
luojiahu@ubuntu:~/learning/learngit$ git rm ReadMe.txt
rm 'ReadMe.txt'
luojiahu@ubuntu:~/learning/learngit$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)deleted: ReadMe.txt
luojiahu@ubuntu:~/learning/learngit$ git checkout -- ReadMe.txt
error: pathspec 'ReadMe.txt' did not match any file(s) known to git.
luojiahu@ubuntu:~/learning/learngit$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)deleted: ReadMe.txt
luojiahu@ubuntu:~/learning/learngit$ git reset HEAD ReadMe.txt
Unstaged changes after reset:
D ReadMe.txt
luojiahu@ubuntu:~/learning/learngit$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)deleted: ReadMe.txt
no changes added to commit (use "git add" and/or "git commit -a")
luojiahu@ubuntu:~/learning/learngit$ git checkout -- ReadMe.txt
luojiahu@ubuntu:~/learning/learngit$ ll
total 16
drwxrwxr-x 3 luojiahu luojiahu 4096 Sep 1 18:58 ./
drwxrwxr-x 3 luojiahu luojiahu 4096 Aug 28 07:42 ../
drwxrwxr-x 8 luojiahu luojiahu 4096 Sep 1 18:58 .git/
-rw-rw-r-- 1 luojiahu luojiahu 28 Sep 1 18:58 ReadMe.txt
Git 学习笔记–基本操作的更多相关文章
- Git学习笔记---协作的一般流程
一般的操作流程 1.pull 王小坤与另一个同事张大炮一起开发一个项目,张大炮昨天修改了数据库读写的api,优化了执行速度,并把read()函数改名成了Read(),下午下班之前把这些代码push到服 ...
- Git学习笔记与IntelliJ IDEA整合
Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...
- Git学习笔记(10)——搭建Git服务器
本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...
- Git学习笔记(四)
一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...
- git 学习笔记6--remote & log
git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...
- 【转帖】Git学习笔记 记录一下
本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...
- [转]Git学习笔记与IntelliJ IDEA整合
Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...
- GIT学习笔记(1):创建版本库
GIT学习笔记(1):创建版本库 创建版本库 1.创建合适目录并初始化为仓库 版本库即需要交由Git进行版本控制的目录,其下所有文件的修改.删除,Git都能跟踪还原. 说明:初始化后,当前目录下会多出 ...
- GIT学习笔记(5):变基
GIT学习笔记(5):变基rebase 变基 引入变基 在Git中整合来自不同分支的修改主要有两种方法:merge以及rebase. 整合分支最容易的方法是merge,他会把两个分支的最新快照以及两者 ...
随机推荐
- html的文件控件<input type="file">样式的改变
一直以来,<input type="file">上传文件标签默认样式都是让人不爽的,使用它多要给它整整容什么的,当然如果用ui插件还比较方便,不能就自己来操刀实践一下! ...
- MUI实现上拉加载和下拉刷新
编写存储过程分页(此处使用T-SQL) CREATE PROC [dbo].[Common_PageList] ( @tab nvarchar(max),---表名 @strFld nvarchar( ...
- java之Pattern.compile相关正则表达式
java之Pattern.compile相关正则表达式 1.验证邮箱地址是否正确:String check = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([ ...
- 设计模式:外观(Facade)模式
设计模式:外观(Facade)模式 一.前言 外观模式是一种非常简单的模式,简单到我们经常都会使用,比如对于类A和B,如果两者需要交互,经过一定的处理过程才能实现某一个具体的功能,那么我们可以将这 ...
- xtrabackup在线迁移mysql并搭建为主主同步
一.背景 工作中有需求数据库需要迁移,但是不能停服,不能锁库锁表影响业务的正常运行,所以使用XtraBackup 二.环境: 操作系统:CentOS Linux release 7.4.1708 (C ...
- 阶&原根
求阶的方法: 根据性质2,直接对ϕ(m)求出因子即可,从小到大依次判断是不是符合ad = 1(mod m)(d是ϕ(m)的因子) 求最小的原根的方法: 根据性质8,对ϕ(m)求出素因子,从1开始不断测 ...
- SOJ1029 Humble Numbers (枚举)
A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, ...
- UVa 10048 - Audiophobia(Floyd变形)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- thinkphp清除缓存
前台 //清除缓存 $(function(){ $("#cache").click(function(){ layer.confirm('你确定要清除缓存吗?', {icon: 3 ...
- [19/03/30-星期六] IO技术_四大抽象类_ 字节流( 字节输入流 InputStream 、字符输出流 OutputStream )_(含字节文件缓冲流)
一.概念及分类 InputStream(输入流)/OutputStream(输出流)是所有字节输入输出流的父类 [注]输入流和输出流的是按程序运行所在的内存的角度划分的 字节流操作的数据单元是8的字节 ...