Git安装
提示:本文的操作都是在Windows平台下运行的:
一、安装Git
直接从官网下载Git安装程序,https://git-scm.com/downloads。按照默认的安装即可。其中有一步会选择使用编辑工具,本人默认选择的是vim,建议使用vim。
安装完成之后在你的开始界面会有如下三个启动:
1、其中Git CMD和Windows下面的命令提示符非常相似,基本上很鸡肋用不到。
2、Git Bash 是下面主要用到的程序,和Linux下面的vim操作命令很相似。
3、Git的图形化操作界面。
二、设置全局变量以及邮箱
此步骤相当于定义你的用户名和联系方式,以后提交代码时,用的都是你现在设置的名字以及邮箱,具体操作在命令行输入:
git config --global user.name "your name"
git config --global user.email "email@emailstation.com"
三、创建版本库
1.创建文件夹
在创建版本库之前首先需要新建一个本地的文件夹,此文件就相当于你的本地代码存储空间:
mkdir foldername #文件夹名字
cd foldername #进入文件夹
pwd #显示当前路径
若你本来就有文件夹,不需要在新建,则直接进入到现有的文件夹:
注意:使用Git Bash,比如说我要进入e盘下面的project_git文件夹
cd /e/project_git #进入文件夹
pwd #显示当前路径
一定要注意:文件路径确保不要包含中文!!!!!!
2.初始化仓库
创建好目录之后,接下来需要将创建的目录转换为Git可以管理的目录。
代码如下:
git init #初始化仓库
Initialized empty Git repository ........
运行完之后,大致会给你显示为一个空仓库,这时你会发现,你新建的目录下多了一个 .Git的文件夹,这就是你的仓库管理跟踪的文件夹,一般情况下不要手动改里面的文件,除非你已对其足够了解。若没有出现此文件夹也不要惊慌,很可能是由于你的目录默认是隐藏的,在Git Bash窗口输入:
ls -ah #显示隐藏文件夹
四、Git的基本使用
1.添加文件
在你上面创建的目录下面新建一个文件夹,并编写某些内容
上面是我编写的内容,接下来在Git Bash上输入以下代码:
git status
$ git status #查看目前你的Git状态
On branch master #你分支的名字,目前在主分支
No commits yet #还没有提交记录
Untracked files: #你修改文件的信息
(use "git add <file>..." to include in what will be committed)
helloGit.txt
nothing added to commit but untracked files present (use "git add" to track)
下面我们尝试对该文件进行提交,提交需要两个步骤:
86135@YYW MINGW64 ~/project_git (master)
$ git add helloGit.txt #添加文件到待处理目录
86135@YYW MINGW64 ~/project_git (master)
$ git commit -m "add my first git file to master" #上传文件
[master (root-commit) a137293] add my first git file to master
1 file changed, 2 insertions(+)
create mode 100644 helloGit.txt
经过上述两步,你就可以将自己所作的更改提交上去,这时再次运行查看状态,你会发现,你所做的更改已经没有了:
86135@YYW MINGW64 ~/project_git (master)
$ git status
On branch master
nothing to commit, working tree clean
注意:上述部分都是在你的Git目录文件夹下操作的,否则Git无法识别到。不是.git!!!
2.版本回退
代码管理很重要的一步!!
试想以下,如果你修改了某一部分的代码,而且你已经进行过保存,而且无法撤回了。这种情况很多很多。。。。。。,但是突然你不想更改了,你想回到你原来的代码上去,你要如何复原代码?待Git为你解决。
下面模拟以下基本的操作步骤:
首先在你上面新建的文件下,新增一些内容如下:
然后对其尝试添加并提交:
86135@YYW MINGW64 ~/project_git (master)
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: helloGit.txt
no changes added to commit (use "git add" and/or "git commit -a")
86135@YYW MINGW64 ~/project_git (master)
$ git add helloGit.txt
86135@YYW MINGW64 ~/project_git (master)
$ git commit -m "append new row line"
[master fad6d2a] append new row line
1 file changed, 2 insertions(+), 1 deletion(-)
目前,我们已经提交了两版文件,接下来为了显示Git的强大功能,我们在提交一版
重复以上操作:
接下来我们利用git查看以下提交记录:
86135@YYW MINGW64 ~/project_git (master)
$ git log #查看日志
commit e9010020ca80b87fdb7c013c252bbbf042733051 (HEAD -> master)
Author: dong-hening <dhn13503224345@163.com>
Date: Sun Mar 20 11:55:07 2022 +0800
append new row line
commit fad6d2a18bd7a877d979f16860aae1b9701a2e75
Author: dong-hening <dhn13503224345@163.com>
Date: Sun Mar 20 11:45:49 2022 +0800
append new row line
commit a1372934e13cf3465af8d4080bced3fff342d1f3
Author: dong-hening <dhn13503224345@163.com>
Date: Sun Mar 20 11:38:08 2022 +0800
add my first git file to master
若嫌输出信息太多,则在git log 后加 --pretty=oneline参数
接下来进行版本回退:
在Git中,用HEAD表示当前版本,也就是最新的提交1094adb…(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD,上上一个版本就是HEAD,如有100个版本,当然不可能写100个,写为HEAD^100.
86135@YYW MINGW64 ~/project_git (master)
$ git reset --hard HEAD^ #进行版本回退到指定提交记录
HEAD is now at fad6d2a append new row line
接下来打开你的文件查看内容:
它已经回退到你原来的版本。
现在再来看一下你的Git状态:
$ git log
commit fad6d2a18bd7a877d979f16860aae1b9701a2e75 (HEAD -> master)
Author: dong-hening <dhn13503224345@163.com>
Date: Sun Mar 20 11:45:49 2022 +0800
append new row line
commit a1372934e13cf3465af8d4080bced3fff342d1f3
Author: dong-hening <dhn13503224345@163.com>
Date: Sun Mar 20 11:38:08 2022 +0800
add my first git file to master
现在只有你的两次记录。
现在问题来了,最新的版本没有了!!!。现在你想回到最新的某个版本,怎么办???下面有两种解决方案:
1、命令窗口还没关闭
若窗口还没有关闭,则你可以一直往上面翻啊翻,找啊找,找到你的想回到版本的id号上面去。比如说:
我想回到这里:
输入:
$ git reset --hard e90100 同上
HEAD is now at e901002 append new row line
在回头来看你的文件:
已经到了你的新版本了。
2、窗口关闭了
窗口关闭了怎么办?这样你就找不到你的id号了。下面看看Git的强大功能
$ git reflog #查看历史上的记录
e901002 (HEAD -> master) HEAD@{0}: reset: moving to e90100
fad6d2a HEAD@{1}: reset: moving to HEAD^
e901002 (HEAD -> master) HEAD@{2}: commit: append new row line
fad6d2a HEAD@{3}: commit: append new row line
a137293 HEAD@{4}: commit (initial): add my first git file to master
这里记录了你的所有操作记录。你可以轻松找到任何一个版本!
3.撤销更改
如果你想撤销某一些你做的更改,如果错误发现的计时,则你可以手动在文件内删除某一行。若你在文件内无法找到,则git同样可以做到修改的功能。
下面。在你的文件内多加一行,如下:
想用git status查看一下状态:
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: helloGit.txt
no changes added to commit (use "git add" and/or "git commit -a")
他告诉你可以用restore操作来丢弃工作区的修改,我告诉你除了restore也可以用checkout来实现同样的更改…
如下:
$ git restore helloGit.txt #撤销更改1
86135@YYW MINGW64 ~/project_git (master)
$ cat helloGit.txt #查看文件
echo 'myfirst git file'.
echo 'hello world'.
echo 'hello git'.
echo 'for commit to commit'.
86135@YYW MINGW64 ~/project_git (master)
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: helloGit.txt
no changes added to commit (use "git add" and/or "git commit -a")
86135@YYW MINGW64 ~/project_git (master)
$ git checkout -- helloGit.txt #撤销更改2
86135@YYW MINGW64 ~/project_git (master)
$ cat helloGit.txt
echo 'myfirst git file'.
echo 'hello world'.
echo 'hello git'.
echo 'for commit to commit'.
86135@YYW MINGW64 ~/project_git (master)
上面的两句代码应用于还没就进行过 git add 的,也就是你还没有放到你的暂存区,目前还在你的工作区内。
假如你已经进行过 git add 怎么办???。解析来验证一下:
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: helloGit.txt
no changes added to commit (use "git add" and/or "git commit -a")
86135@YYW MINGW64 ~/project_git (master)
$ git add helloGit.txt
86135@YYW MINGW64 ~/project_git (master)
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: helloGit.txt
这里看,他告诉你可以用git restore --staged 来进行,我告诉你也可以用git reset来进行操作。如下:
$ git reset head helloGit.txt #恢复某个文件
Unstaged changes after reset:
M helloGit.txt
86135@YYW MINGW64 ~/project_git (master)
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: helloGit.txt
no changes added to commit (use "git add" and/or "git commit -a")
unbelievable!!!
第二种方法:
86135@YYW MINGW64 ~/project_git (master)
$ git add helloGit.txt
86135@YYW MINGW64 ~/project_git (master)
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: helloGit.txt
86135@YYW MINGW64 ~/project_git (master)
$ git restore --staged helloGit.txt #同上,恢复某个文件
86135@YYW MINGW64 ~/project_git (master)
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: helloGit.txt
no changes added to commit (use "git add" and/or "git commit -a")
和上面的效果是一样的。接下来同样用checkout -- 或者是 restore 来丢弃你的更改。不过需要注意的是:这里你的代码是没有进行过commit的,若进行过commit,xdm,版本回退吧。若已经提交到了远程库,那就没办法了。
3.删除文件
现在为了操作方便,我们在文件夹内新增一个文件,delete.txt。并且去add并且commit它。然后用git查看一下目前的状态。
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
delete.txt
nothing added to commit but untracked files present (use "git add" to track)
一般情况下你可以直接删除掉这个文件。
$ git add delete.txt
86135@YYW MINGW64 ~/project_git (master)
$ git commit -m "add one delete file"
[master db37205] add one delete file
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 delete.txt
86135@YYW MINGW64 ~/project_git (master)
$ rm delete.txt #删除文件
86135@YYW MINGW64 ~/project_git (master)
$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: delete.txt
no changes added to commit (use "git add" and/or "git commit -a")
如代码,git已经知道了你删除了某些文件,现在你有两种选择:
一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
86135@YYW MINGW64 ~/project_git (master)
$ git rm delete.txt #真正的删除文件
rm 'delete.txt'
86135@YYW MINGW64 ~/project_git (master)
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: delete.txt
可以看到,文件已经彻底删除了,已经从版本库中删除了。
二是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本
86135@YYW MINGW64 ~/project_git (master)
$ git restore delete.txt #恢复删除的文件
86135@YYW MINGW64 ~/project_git (master)
$ git status
On branch master
nothing to commit, working tree clean
可以看到你的胡汉三又回来了!
注意:从来没有被添加到版本库就被删除的文件,是无法恢复的!!!!!!!!!
命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容
总结
上面主要介绍了一些git’安装和操作的基本功能。
主要是一些本地的功能,当前还没有链接到远程仓库!
留做笔记,以后回顾学习。
下一篇文章,一起学习一下远程链接和分支管理。