Git 版本控制器学习笔记

作者:袖梨 2022-06-30


Git 在Centos下的安装

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

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

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 , 可反复多次使用,添加多个文件
使用命令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 ..." to update what will be committed) # 使用 git add 将文件提交到版本库
#   (use "git checkout -- ..." 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 ..." 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
Date:   Mon Jan 26 20:46:23 2015 +0800
    addend GPL
commit 2000fb8ae0e7ddf26f56a5f613650ffde87a902a
Author: liangh
Date:   Sat Jan 24 20:21:38 2015 +0800
    modified reamdme file
commit 7f48743c960819cfa7a9984c9e72d43f142f66cc
Author: liangh
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

相关文章

精彩推荐