Git 2 - Git Basics

1 add

  • github 上建立新的 repository,命名 demo
  • git clone 到本地 github 目录
  • 将自己之前的项目 copy 到该 demo 目录下
  • 运行 cat .gitignore

注意: .gitignore的目录并不一定要是根目录,比如在 try 文件夹下建立一个 .gitignore 来设置 try 文件夹中的忽略文件:$ cat try/.gitignore 即可。其 ignore 的内容为

rd.txt
/rd/

如果此前这些文件已经被 track ,则使用 git rm --cached 删除 staged 区的对应文件。

  • git add .
  • git status 查看,除去被 ignore 的文件,其他文件都是 staged 状态,说明 gitignore 生效
  • 修改其中一个被跟踪的文件 readme.md,再查看,则之后修改的文件状态为 modified (changes not staged for commit)

注意:add 的意思是 add this content to the next commit(即 add 后会进入 staged 状态)

2 commit

  • 将 git add .,之后git commit -m "inital"
  • git status,此时nothing to commit, working directory clean
  • 之后 push 之前再 commit 就需要使用 git commit --amend.可以修改提交说明,修改后,按Esc进入命令行,:,wq或wq!(强制执行)。之后可以查看本次的 commit 信息:master 分支, ccced2c 是 SHA-1 校验和。
$ git commit --amend
[master ccced2c] first commit
158 files changed, 17500 insertions(+)
create mode 100644 .classpath
create mode 100644 .gitignore
  • 直接 commit ,无需 add 。使用$git commit -a -m 'added'

3 查看修改

  • git diff (查看 working directory 与 staged 区的不同)
  • $git diff --staged(查看 staged 区与 commit 区的不同)

4 删除文件(指从 staging 区删除,也就是不再 track)

  • 工作区和 staging 区都删除
xueyuan@EF-XUEYUAN /D/github/demo (master)
$ git rm try.md
rm 'try.md' xueyuan@EF-XUEYUAN /D/github/demo (master)
$ git diff xueyuan@EF-XUEYUAN /D/github/demo (master)
$ git diff --staged
diff --git a/try.md b/try.md
deleted file mode 100644
index e69de29..0000000
  • 只 staging 区删除,工作区不删除(忽略 gitignore 时经常使用)
xueyuan@EF-XUEYUAN /D/github/demo (master)
$ git rm --cached try.md
rm 'try.md' xueyuan@EF-XUEYUAN /D/github/demo (master)
$ git diff xueyuan@EF-XUEYUAN /D/github/demo (master)
$ git diff --staged
diff --git a/try.md b/try.md
deleted file mode 100644
index e69de29..0000000

注意:$git rm log/\*.log 中的“\”

5 重命名

$git mv file_from file_to

6 查看 commit 历史

$git log 所有历史

$git log -p -2 最后两此提交作比较

$git log --stat 查看每次提交的简略统计数据(修改文件数,修改行数)

限制输出数量如:

$git log --since=2.weeks

其他如下:

xueyuan@EF-XUEYUAN /D/github/demo (master)
$ git log --pretty=oneline
c38bac265c1337835cad91f9bf0cb2d2aa91a103 second commit
62ff73d37c185377cf1911a3e5fe2f58225f0136 first commit xueyuan@EF-XUEYUAN /D/github/demo (master)
$ git log --pretty=format:"%h - %an, %ar : %s"
c38bac2 - xueyuan, 9 minutes ago : second commit
62ff73d - xueyuan, 3 hours ago : first commit xueyuan@EF-XUEYUAN /D/github/demo (master)
$ git log --pretty=format:"%h %s"--graph
c38bac2 second commit--graph
62ff73d first commit--graph

7 撤销操作

(1)重提交

$git commit --amend

$git commit -m 'initial commit'
$git add forgotten_file
$git commit --amend

这样第二次提交取代第一次,一共只有一次提交

(2)Unstaging a Staged File

$git reset HEAD CONTRIBUTING.md

$git add .
$git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: README.md -> README
modified: CONTRIBUTING.md
$git reset HEAD CONTRIBUTING.md
Unstaged changes after reset:
M CONTRIBUTING.md
$git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: README.md -> README
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: CONTRIBUTING.md

(3)Unmodifying a Modified File

恢复到last committed (or initially cloned, or however you got it into your working directory)

$git checkout -- CONTRIBUTING.md

$git checkout -- CONTRIBUTING.md
$git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: README.md -> READMEc

注意:所有(包括被删除的分支,和--amend的提交)被 commit 到 Git 的都可以被恢复。

8 远程仓库

  • 查看远程仓库:$git remote -v
  • 添加远程仓库:$git remote add pb https://github.com/paulboone/ticgit
  • 抓取本地库没有的信息:
    • $git fetch pb(需手动合并)
    • $git pull pb(自动合并到当前分支,常用)
  • 推送数据到远程仓库:$git push [remote名] [branch名]

    注意:如果 push 前有他人已经推送了更新,则你的推送会被驳回。此时必须先把他人的更新抓取到本地,并入自己的项目,再推送。
  • 查看远程仓库信息:$git remote show [remote-name]
  • 删除远程仓库:$git remote rm [remote-name]
  • 重命名远程仓库:$git remote rename [old] [new]

pro git 读书笔记 2的更多相关文章

  1. Pro Git 读书笔记

    一. 起步 1. 集中式版本控制缺点:中央服务器的单点故障. 分布式版本控制优点:客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来. 这么一来,任何一处协同工作用的服务器发生故障,事后 ...

  2. Pro Git读书笔记 - 分支

    Git 分支介绍. 几乎所有的版本控制系统都以某种形式支持分支. 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线. 在很多版本控制系统中,这是一个略微低效的过程--常常需要完全创 ...

  3. Pro Git读书笔记 - Git 常用命令

    在工作目录中初始化新仓库 要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行git init 检查当前文件状态 要查看哪些文件处于什么状态,可以用git status命令 将工作文件 ...

  4. pro git 读书笔记 3 Git 分支

    分支 新建分支:git branch 分支名 切换到该分支:git checkout 分支名 补充:以上两条语句等价于一句:git checkout -b 分支名 转换分支的时候最好保持一个清洁的工作 ...

  5. pro git 读书笔记 1

    Git 1 - Getting Started Git 的特点 Git 存储每个版本的快照:其他 VCS(版本控制系统) 存储两个版本的变化之处 好处参考 Git 分支章节 Git 几乎所有操作都是本 ...

  6. 《Pro Git》笔记3:分支基本操作

    <Pro Git>笔记3:Git分支基本操作 分支使多线开发和合并非常容易.Git的分支就是一个指向提交对象的可变指针,极其轻量.Git的默认分支为master. 1.Git数据存储结构和 ...

  7. Pro Git 学习笔记

    Pro Git 学习笔记 文档地址:Pro Git原文地址:PRO GIT 学习笔记 git常见命令 1.Git起步 初次运行Git前的配置 用户信息 git config --global user ...

  8. 《Pro Git》笔记2:Git基础操作

    第二章 Git基础 Git基础包括:版本库的创建和获取,文件添加修改提交等基本操作,状态查询,远程版本库管理和同步,打标签. 1.取得项目的Git版本库 基于Git的工作流要以Git版本库为基础,即可 ...

  9. 《Pro Git》笔记1:起步

    第一章 起步 1.关于版本控制 版本控制用于记录和追踪目录结构和文件内容变化,能够追溯过去的任何修改和变化,并恢复到任何历史状态. 版本控制系统可以按照发展过程分成以下几类: 目录备份.记录版本变化最 ...

随机推荐

  1. 【Python】【demo实验18】【练习实例】【统计输入字符串中,数字的个数、英文字母的个数及其他符号的个数】

    原题: 输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. (本题暂时不支持中文字符及汉字) 我的代码: #!/usr/bin/python # encoding=utf-8 # -* ...

  2. PHP中各种强大的函数

    获取时间   data(https://www.cnblogs.com/mrluotong/p/5895375.html):strtotime() <?php echo "今天:&qu ...

  3. c++学习笔记之引用

    引用是 C++ 的新增内容,在实际开发中会经常使用:C++ 用的引用就如同C语言的指针一样重要,但它比指针更加方便和易用,有时候甚至是不可或缺的. 同指针一样,引用能够减少数据的拷贝,提高数据的传递效 ...

  4. tensorflow零起点快速入门(2)

    指定设备与矩阵乘法 使用tf.device("/gpu:0")用于指定设备进行运算. 在使用jupyter notebook的时候,可能会出现使用异常,需要使用config=tf. ...

  5. mysql+canal+kafka+elasticsearch构建数据查询平台

    1. 实验环境 CPU:4 内存:8G ip:192.168.0.187 开启iptables防火墙 关闭selinux java >=1.5 使用yum方式安装的java,提前配置好JAVA_ ...

  6. Java程序员转行大数据的优势

    大数据时代,中国IT环境也将面临重新洗牌,不仅仅是企业,更是程序员们转型可遇而不可求的机遇. 国内大多数大型互联网公司的程序员被称作研发工程师,但实际上国内几乎没有研发项目,只能叫做开发.开发程序员的 ...

  7. Centos7:MyCat安装,配置及使用

    解压缩 使用,默认端口8066 ./mycat start //启动 ./mycat stop //停止 ./mycat restart //重启

  8. ES6基础之——get 与 set

    class Chef{ constructor(food){ this.food = food; thid.dish = []; } //getter get menu(){ return this. ...

  9. 描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理

    Session用于保存每个用户的专用信息. 每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) . 她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右) ...

  10. jeesite 跳开登录页面直接访问

    把控制层的${adminPath}改为${frontPath} 访问时吧/a改为/f 也可以在jeesite配置文件内配置两个的值 http://localhost:8181/cxfvp/a?logi ...