Weaving Wong

总觉得该写点啥...

嗨,我是Weaving,一名机器学习爱好者.


分享读书、学习、生活感悟

Git学习笔记-操作指令备忘录

本文适用读者

对Git有基本的认识,或了解其大致原理,仅对操作比较生疏,本文适合作为工具书用于检索使用,也是博主用于备忘,偶尔翻阅

Git安装

# for ubuntu / debian
sudo apt-get install git

# for old_version ubuntu/debian
sudo apt-get install git-core

# for centos
sudo yum install git

# install from source_code
先从Git官网下载源码,然后解压,依次输入:
./config
make
sudo make install
这几个命令安装就好了。

# widows
直接去下面地址下载安装就好
https://gitforwindows.org/
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

git 使用

先设置用户名和邮箱

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

创建版本库

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

# 这样空的仓库建好了

添加文件

  • 由于git 只能跟踪文本文件的改动,因此建议使用utf8 格式书写代码和文档。
  • 不要使用windows 自带记事本进行书写
  • 不要使用doc书写文档(不是文本,属于二进制文件)
  • 推荐 sublime text ,notepad++
# 往readme.txt 中写一些内容,然后

$ git add readme.txt

提交文件

$ git commit -m "wrote a readme file"
# -m 后面是提交说明文档

[master (root-commit) eaadf4e] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

查看状态

#运行git status命令看看结果
$ 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 com

查看修改情况

$ git diff readme.txt 
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.

查看日志和提交版本

$ git log

回退版本

在Git中,用HEAD表示当前版本,也就是最新的提交1094adb…(注意我的提交ID和你的肯定不一样),

# 上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
$ git reset --hard HEAD^  # 表示回退到上一个版本
HEAD is now at e475afc add distributed

指定版本号回退 版本号不用写完整,只要不引起歧义

$ git reset --hard 1094a
HEAD is now at 83b0afe append GPL

若记不住版本号,或丢失版本号,也可以找回

 git reflog
e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
e475afc HEAD@{3}: commit: add distributed
eaadf4e HEAD@{4}: commit (initial): wrote a readme file

git暂存区

add 之后算是放进了暂存区,commit 才会清空add的暂存

管理修改

每次add 都会管理一次修改,commit 只会清空add过的修改

撤销修改

git checkout – file可以丢弃工作区的修改:

$ git checkout -- readme.txt

命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态。

删除文件

  • 确实要删除
git rm test.txt
rm 'test.txt'

$ git commit -m "remove test.txt"
[master d46f35e] remove test.txt
 1 file changed, 1 deletion(-)
 delete mode 100644 test.txt
  • 删错了
$ git checkout -- test.txt

# 一键还原

克隆

  • 我们一般主张建立远程仓库后克隆,然后就可以愉快的开展工作

    $ git clone git@github.com:michaelliao/gitskills.git
      
    Cloning into 'gitskills'...
    remote: Counting objects: 3, done.
    remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
    Receiving objects: 100% (3/3), done.
      
    # 还可以用https协议
    $ git clone https://github.com/michaelliao/gitskills.git
      
    # 然后就发现远程仓库的东西就进来了,然后就可以做自己的修改和文件的添加,最后上传
    # ok ,that's all.一个简单的流程就走完了。
    

参考

感谢廖雪峰老师的Git教程

国外网友制作的简易小抄

最近的文章

MOOC研究相关热点总结

知名的MOOC平台汇总 edX Coursera FutureLearn Udacity Udemy openlearning 清华学堂在线 UOOC在线 MOOC中国 中国大学MOOC 慕课网 网易云课堂 腾讯课堂相关会议与论文专业表达 blended learning environments. 混合学习环境 Gauging MOOC Learners’ Adherence to the Designed Learning...…

毕业设计继续阅读
更早的文章

mysql 学习笔记--关于SQL运行的理解

研究SQL有一段时间,在公司实习的阶段每天需要写大量的查询、汇总相关特征统计与构造方面的工作,刚刚开始的时候还有些不适应,毕竟语法不是很熟练。但是写的多了,渐渐发现找到感觉。自我感觉还行,不过对于其中的原理确实没有怎么深入理解,为此查阅了一些大佬分享的博文,外加买了一本网易出品的经典入门红皮书《深入浅出MySQL》,深感大有裨益。特此也是分享给路过的各位读者。明天给各位新开一篇总结一下书中关于SQL优化方面的一些学习笔记。回到对于SQL的理解方面,在大量的博文中,我做了如下的总结:在格物的...…

数据库继续阅读