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的理解方面,在大量的博文中,我做了如下的总结:在格物的...…

• 数据库继续阅读