Git 版本控制器学习笔记

Git 在Centos下的安装

yum install git
git --version # 查看版本号
安装完成后请设置您的用户名及邮箱,因为对于git来说,需要知道是谁提交的代码等。

git config --global user.name "liangh"  # 设置全局用户名
git config --global user.email "liangh.zhu@gmail.com" # 设置用户邮箱
 这里设置的全局的用户名及邮箱,也就是说对于所有的版本都使用这个,你也可以根据不同的版本库设置不同的用户名及邮箱。这里不多说

Git 初始化及简单操作

上面设置完成后,就可以创建一个版本库(repository)了,先创建一个目录

mkdir GitStudy # 创建目录
cd GitStudy  # 切换到此目录下
git init   # 初始化版本库
touch readme.md # 创建一个文件
然后在文件中写入

git is a version control system.
git is free software.
下面将readme.md文件加入到版本中

git add readme.md
使用命令git commit 告诉git,把文件提交到仓库

git commit -m "add a readme file"
git commit命令,-m后台输入本次提交的说明,可以输入任意内容,这个说明最好写好。这样方便后面人知道你做了哪些改动

也可以使用git add同时添加多个文件

git add file1.txt
git add file2.txt
git add common/*
git commit -m "add more files"
小结

总结一下今天学习的内容

初始化一个Git仓库,使用git init命令
添加文件到Git仓库,分两步

使用命令git add <file>, 可反复多次使用,添加多个文件
使用命令git commit,完成

接上面,我们已经成功的提交了一个readme.md的文件,现在我们因为需要对remdme.md文件做修改,修改内容如下:

Git is a distributed version control system.
Git is free softwar.
 在修改成功后,我们想知道目前版本库中是什么样一个状态,就可以使用git status来查看。

# git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed) # 使用 git add 将文件提交到版本库
#   (use "git checkout -- <file>..." to discard changes in working directory) # 使用 git checkout 丢弃文件
#
# modified:   readme.md  # 修改的文件
#
no changes added to commit (use "git add" and/or "git commit -a") # 文件修改请使用 git add 提交并且使用 git commit 添加描述
可以看到 readme.md 文件被修改过了,但是还没有提交修改,这里有一个问题就是,虽然git告诉我们哪个文件修改了。如果我们忘记修改了什么而现在想要知道,就可以使用git diff命令查看修改的内容是什么

# git diff
diff --git a/readme.md b/readme.md
index 46d49bf..53d4271 100644
--- a/readme.md
+++ b/readme.md
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed  version control system.
 Git is free software.
然后我们提交文件

git add readme.md
这里是没有任何输出的,在执行git commit之前我们再使用git status查看一下状态

# git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
# modified:   readme.md
#
git status告诉我们已经提交了修改的文件,可以进行下一步操作

git commit -m 'modified readme file'
提交后我们可以看看目前仓库的状态

# git status
# On branch master
nothing to commit (working directory clean)  # 目前没有提交,并且工作目录是干净的

小结

要随时掌握工作区的状态,使用 git status 命令查看
如果 git status 告诉我们有文件被修改过,可以使用 git diff 查看修改的内容

接上节,我们已经知道了如何修改文件并提交,现在我们再修改一次readme.md文件

Git is a distributed version control system.
Git is free software distributed under the GPL.

然后再次提交

git add readme.md
git commit -m "append GPL"
 我们目前对readme.md做了三次修改,如果对于文件做了N多修改之后。我们记不住每次都修改了哪些内容。所以想要知道每次都修改的内容可以使用git log 命令来查看

# git log
commit f6a7d7a5ef23e8cf9356970721ccb96055c6801a
Author: liangh <liangh.zhu@gmail.com>
Date:   Mon Jan 26 20:46:23 2015 +0800
    addend GPL
commit 2000fb8ae0e7ddf26f56a5f613650ffde87a902a
Author: liangh <liangh.zhu@gmail.com>
Date:   Sat Jan 24 20:21:38 2015 +0800
    modified reamdme file
commit 7f48743c960819cfa7a9984c9e72d43f142f66cc
Author: liangh <liangh.zhu@gmail.com>
Date:   Fri Jan 23 22:36:03 2015 +0800
    write a readme file
从上面的描述我们可以看到我们都做过哪些修改。而如f6a7d7...6801a类似开头的字符串是每次提交后的版本号,git log的按从近到远的顺序显示的。如果这样显示不友好。可以使用git log --pretty=oneline来查看。
对于每提交一个版本。Git都会将它们自动串成一条从近到远的时间线,这个可以使用一些可视化的工具可以看到。

现在我们如何让readme.md(其它文件)加到上一个版本或指定的版本呢,在Git中,使用HEAD来表示当前版本,也就是最新的版本,比如我们想回到上一个版本,可以使用HEAD^,上上一个版本HEAD^^,以此类推,如果是往上100个版本,那就写100个^了,显然这样是不行的。我可以写成HEAD~30返回到30个版本,HEAD~100返回到100个版本。
具体的操作命令如下:

git reset --hard HEAD^ # 返回一个版本
以此可以回到第一个版本。然后可以使用git log查看,如果我们想返回到某一个版本呢。这里就需要使用到commit_id(版本号)了

git reset --hard f6a7d7a
这样就回到了相应的版本,如果你已经回到了readme.md的第一个版本,这时你又不记得commit_id是多少,通过git log也看不到了。可以使用git reflog查看。这样就可以随便的返回到任意一个版本了

小结

返回版本之前可以使用git log来查看历史提交版本,以便确定退到哪一个版本
要返回之前最新的版本可以使用git reflog来查看commit_id,以便确定退到哪一个版本
HEAD指向当前版本,可以使用^符号选择回到哪一个版本。命令为git reset --hard HEAD^/commit_id

时间: 2024-09-24 03:53:23

Git 版本控制器学习笔记的相关文章

tortoisegit git分支的学习笔记

做自己的产品,分支还是很重要的.例如,我发布了一个app,但是有bug,又想做新功能,怎么办呢?如果只在一个git上开发的话,bug会越来越多,原来bug没改完,新功能开发,又会产生新的bug.这样的话,bug永远改不完,版本发布会一拖再拖.   正确的做法,主分支,开发新功能,创建的分支改bug,定期的将分支合并到主分支,对外发布的版本都新分支,改bug的版本,属于稳定版的.发版本成阶梯状.下面介绍一下用tortoisegit创建git分支的方法,个人觉得比较简单.   1,clone二个版本

git常用命令学习笔记

 1.安装: $ sudo apt-get install git $ sudo apt-get install gitk#此为安装官方的图形界面,不需要的可以不安装 2.cd到需要管理的代码.文件所在的第一级目录 3.初始化: $ git init 4.添加当前目录所有内容: $ git add . 5.查看状态: $ git status 6.添加commit: $ git commit -am "first commit." 7.版本对比: $ git diff 8.查看历史记录

Git与GitHub学习笔记(三).gitignore文件忽略和删除本地以及远程文件

一.Git提供了文件忽略功能.当对工作区某个目录或者某些文件设置了忽略后,git将不会对它们进行追踪 HELP:如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件 问题:最近在github做一个项目,每次成生成的log日志文件和本地IDE的.idea/workspace.xml,每次提交说没有跟踪文件,更郁闷的的我的项目有在本地虚拟机,有时候会出现没有权限跟踪文件. 今天特意解决下问题: 这里有详细的学习:https://git-scm.com/book/zh/v2/G

Git与GitHub学习笔记(七)Windows 配置Github ssh key

前言 SSH是建立在应用层和传输层基础上的安全协议,其目的是专为远程登录会话和其他网络服务提供安全性的保障,用过SSH远程登录的人都比较熟悉,可以认为SSH是一种安全的Shell.SSH登录是需要用户名和密码的,要实现无密码登录,就需要创建SSH 密钥(ssh key),SSH 密钥可以认为是和另一台电脑通信时的唯一的识别证,SSH 密钥对可以让我们方便的登录到 SSH 服务器,而无需输入密码.GIT源代码管理就是使用此种安全机制,本文本将介绍SSH KEY的生成过程. >>>不知道配置

Git与GitHub学习笔记(一)如何删除github里面的文件夹?

按照以下步骤即可(本地删除) 1. git pull you git url2. git checkout 3. rm -r dirName4. git add --all5. git commit -m"remove dir"6. git push you git url7. input your name 8. input your password

Git与GitHub学习笔记(四)合并远程分支

  在这里的前提: 1.你已经fork 源作者的项目到你自己的仓库了 2.git clone 自己仓库fork的项目,注意地址,这里是自己的账号下的地址,而不是源作者的项目地址哦 3.在本地修改代码,git push origin master 提交到自己的主分支(自定义别的分支),  提交一个新的分支   提交分支代码:  填写好信息之后:点击按钮直接提交就可以了  这时候在源仓库可以看出自己提交非分支请求了:  默认第一个分支   添加合并注释后直接提交就可以了 比较文件不同的地方   观看

Git与GitHub学习笔记(五)一次提交失败的记录

代码已经跟踪了,添加注释说明,但是总是添加不了 error: pathspec 'live-page'' did not match any file(s) known to git. 重复了好多遍,最后发现代码还是没有提交 D:\wamp64\www\study-line>git commit -m 'add live-page' error: pathspec 'live-page'' did not match any file(s) known to git. D:\wamp64\www

Git与GitHub学习笔记(二)提交的一些笔记

1.合并分支的使用一定要切换到master分支上去合并:git merge company2.切换分支的时候一定要提交干净本地分支的代码,才可以切换分支,否则提示错误信息: 3.这时候我们做的就是提交干净本地的代码,再次切换即可以 4.下来我们要合并一个远程的分支home分支到master主分支上去, 发现上面的做法是错误的,下面我们更正后再次合并 5.好了,我们总算合并了,但是代码到哪里去了来,告诉你,代码这会是跑到你本地来了,而远程仓库的master还是没有代码的,代码还是在本地仓库(sta

Git与GitHub学习笔记(六)使用 Github Pages 管理项目文档

前言 你可能比较熟悉如何用 Github Pages 来分享你的工作,又或许你看过一堂教你建立你的第一个 Github Pages 网站的教程.近期 Github Pages 的改进使得从不同的数据源来发布您的网站更加的方便,其中的来源之一就是你的仓库的 /docs 目录. 文档的质量是一个软件项目健康发展的标志.对于开源项目来说,维护一个可靠而不出错的知识库.详细说明所有的细节是至关重要的.精心策划的文档可以让增加项目的亲切感,提供一步步的指导并促进各种方式的合作可以推动开源软件开发的协作进程