赞
踩
下载地址: https://git-scm.com/download
命令:git init
$ git init
Initialized empty Git repository in C:/Users/Administrator/Desktop/git/.git/
查看隐藏目录,多出 .git 目录
$ ls -a
./ ../ .git/
git工作环境有三个区域:工作区、暂存区、本地仓库(版本库)
- 工作区:电脑看到的目录,不包括.git隐藏目录
- 暂存区:工作区将代码保存到版本库,中间必须经过暂存区。
- 本地仓库:存放不同版本的仓库,就是隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
git中文件的两种状态:未跟踪(untracked)、未暂存(unstaged)
- untracked:工作区新创建的文件,在未提交到版本库时,处于unstracked的状态。
- unstaged:工作区已经修改的文件,未提交到版本库时,处于unstaged的状态。
命令:touch <文件名>
$ touch file01.txt
$ ls
file01.txt
命令:git add <文件名>
$ git add file01.txt
查看暂存区文件命令:git status
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: file01.txt
file01.txt 已经出现在了暂存区文件列表上。
接着使用提交命令:git commit -m "注释"
,将暂存区文件存档到版本库中。
$ git commit -m "add file01.txt"
[master (root-commit) 17fc348] add file01.txt
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file01.txt
再次查看暂存区状态,已经被清空了。
$ git status
On branch master
nothing to commit, working tree clean
修改file01.txt
为
第一次修改文件
查看暂存区,显示not staged未暂存状态的文件列表
$ 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: file01.txt
继续完成提交
$ git add .
$ git commit -m "第一次修改文件"
[master 5271d12] 第一次修改文件
1 file changed, 1 insertion(+)
命令:git log
$ git log
commit 5271d12c285cd32af88fa29ce39773eb8779124b (HEAD -> master)
Author: zhenguo <2845612344@qq.com>
Date: Tue Jan 3 13:20:44 2023 +0800
第一次修改文件
commit 17fc348dad9fa0799002e2835dc880430979fcac
Author: zhenguo <2845612344@qq.com>
Date: Tue Jan 3 13:13:56 2023 +0800
add file01.txt
命令:git diff
首先修改file01.txt文件内容为:
第一次修改文件
第二次修改文件
不提交,运行git diff
命令查看和版本库差别
$ git diff
diff --git a/file01.txt b/file01.txt
index 3d9c6f2..5e9a754 100644
--- a/file01.txt
+++ b/file01.txt
@@ -1 +1,2 @@
-第一次修改文件
\ No newline at end of file
+第一次修改文件
+第二次修改文件
命令:git reset HEAD
刚刚文件修改之后还没有提交,使用git add . 添加到暂存区
$ git add .
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: file01.txt
modified: file01.txt 为绿色,表示已经添加到了暂存区
使用git reset HEAD
撤销暂存区的文件
$ git reset HEAD
Unstaged changes after reset:
M file01.txt
文件变成了了Unstaged 未暂存,再次查看暂存区文件
$ 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: file01.txt
modified: file01.txt 变成了红色。将本次修改提交到版本库
$ git add .
$ git commit -m "第二次修改文件"
[master 1f81f52] 第二次修改文件
1 file changed, 2 insertions(+), 1 deletion(-
命令:git log -5 --pretty=oneline
(一行一行的输出,一共输出五行)
$ git log -5 --pretty=oneline
1f81f52a867628ae34bac5331c87c7b71a636e65 (HEAD -> master) 第二次修改文件
5271d12c285cd32af88fa29ce39773eb8779124b 第一次修改文件
17fc348dad9fa0799002e2835dc880430979fcac add file01.txt
命令:git reset --hard HEAD^
回退到上一个版本(两个^可以回退到上上版本)
$ git reset --hard HEAD^
HEAD is now at 5271d12 第一次修改文件
$ git log --pretty=oneline
5271d12c285cd32af88fa29ce39773eb8779124b (HEAD -> master) 第一次修改文件
17fc348dad9fa0799002e2835dc880430979fcac add file01.txt
后退一个版本(后退30个版本,~后面改成30)
回退到指定版本:git reset --hard <commitID>
commitID可以只输前几位的标识符,就可退到对应的版本。
$ git reset --hard 17fc
HEAD is now at 17fc348 add file01.txt
$ git log --pretty=oneline
17fc348dad9fa0799002e2835dc880430979fcac (HEAD -> master) add file01.txt
现在已经后退到了创建文件的版本,使用git log已经完全看不到回退前的版本了,怎么在重新回到第二次修改的文件版本呢?
命令:git reflog
作用:查看git的操作日志
$ git reflog
17fc348 (HEAD -> master) HEAD@{0}: reset: moving to 17fc
5271d12 HEAD@{1}: reset: moving to HEAD^
1f81f52 HEAD@{2}: commit: 第二次修改文件
5271d12 HEAD@{3}: reset: moving to HEAD
5271d12 HEAD@{4}: commit: 第一次修改文件
17fc348 (HEAD -> master) HEAD@{5}: commit (initial): add file01.txt
从日志中看到,第二次修改对应的版本是 1f81f52…
使用git reset 回退
$ git reset --hard 1f81f52
HEAD is now at 1f81f52 第二次修改文件
$ git log --pretty=oneline
1f81f52a867628ae34bac5331c87c7b71a636e65 (HEAD -> master) 第二次修改文件
5271d12c285cd32af88fa29ce39773eb8779124b 第一次修改文件
17fc348dad9fa0799002e2835dc880430979fcac add file01.txt
命令:git checkout <文件名>
首先删掉工作区file01.txt文件,使用checkout
$ git checkout file01.txt
Updated 1 path from the index
$ ls
file01.txt
命令: git rm <文件名>
$ git rm file01.txt
rm 'file01.txt'
如果回退之前的版本,file01.txt又回来了
$ git reset --hard 5271
HEAD is now at 5271d12 第一次修改文件
$ ls
file01.txt
命令:git ls-files
$ git ls-files
file01.txt
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。