项目场景:
项目场景:是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 [1] 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
就是说Git是一个开源项目版本管理文件,它保存文字效果很好,视频和图片可能会被损坏,但是还是可以保存的咯。
学习流程
1. 安装
没啥印象了,安装好久都没用过(只记得官网下载,傻瓜式安装就好了)
2.基本使用流程
安装后会自动配置环境变量啥的,然后找个位置右击就可以看到Git的两个功能,其中的Git Bash是Windows下的命令行工具。
创建一个文件夹作为Git的仓库
接着在命令行中去找到该目录的位置,试了一下,还挺好用的,只要有tab我就觉得好用
在创建版本库之前设置自己成为管理员
git config --global user.name "Along" #添加自己的名字
git config --global user,email "**.qq.com" #添加自己的email
git config user.email #查看
创建版本库
34886@along MINGW64 /e #cd到仓库
$ cd GitAlong/
34886@along MINGW64 /e/GitAlong
$ git init #创建初始化仓库
Initialized empty Git repository in E:/GitAlong/.git/
34886@along MINGW64 /e/GitAlong (master)
$ ls -a #显示当前目录所有文件
./ ../ .git/
34886@along MINGW64 /e/GitAlong (master)
$ touch demo1.py #创建一个文件
34886@along MINGW64 /e/GitAlong (master)
$ git status #当前git状态,没有文件
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
demo1.py
nothing added to commit but untracked files present (use "git add" to track)
34886@along MINGW64 /e/GitAlong (master)
$ git add demo1.py #添加文件到git上
34886@along MINGW64 /e/GitAlong (master)
$ git status #当前git状态,显示文件
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: demo1.py
文件的提交和修改
创建一个文件
34886@along MINGW64 /e/GitAlong (master)
$ touch demo1.py
添加文件到git
34886@along MINGW64 /e/GitAlong (master)
$ git add demo1.py
查看当前git状态,没提交,这是上次的demo1
34886@along MINGW64 /e/GitAlong (master)
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: demo1.py
当前文件的状态,以精简的方式显示文件状态。
34886@along MINGW64 /e/GitAlong (master)
$ git status -s
M demo1.py
提交文件到git上
34886@along MINGW64 /e/GitAlong (master)
$ git commit -m '初始化'
[master 12cb0ef] 初始化
1 file changed, 1 insertion(+), 1 deletion(-)
打印当前提交日志,提交了三次,所以打印了三条,
34886@along MINGW64 /e/GitAlong (master)
$ git log
commit 12cb0ef539c6579e3f79a3c500581fbb3f1a2555 (HEAD -> master)
Author: Along <3488694526@qq.com>
Date: Tue Apr 19 17:47:16 2022 +0800
初始化
commit 7b2ff15d5052cacb88f82d52d14c846266da8308
Author: Along <3488694526@qq.com>
Date: Tue Apr 19 17:44:04 2022 +0800
change2
commit 09a1c3e8fc750207fbd3ff74b036816ead38c3e9
Author: Along <3488694526@qq.com>
Date: Tue Apr 19 17:39:06 2022 +0800
change1
精简模式的M,新添加的未跟踪文件前面有 ?? 标记,
新添加到暂存区中的文件前面有 A 标记,
修改过的文件前面有 M标记。
M 有两个可以出现的位置,出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M 表示该文件被修改了并放入了暂存区。
34886@along MINGW64 /e/GitAlong (master)
$ git status -s
M demo1.py
对比修改了啥,--是删除,++是增加
34886@along MINGW64 /e/GitAlong (master)
$ git diff
diff --git a/demo1.py b/demo1.py
index 436ed2c..cd4a228 100644
--- a/demo1.py
+++ b/demo1.py
@@ -1 +1 @@
-我是初始化
\ No newline at end of file
+我已经被修改了
\ No newline at end of file
如果位于没放入暂存区,需要加命令才能查看两次修改的不同
34886@along MINGW64 /e/GitAlong (master)
$ git diff --cached
34886@along MINGW64 /e/GitAlong (master)
$ git diff
diff --git a/demo1.py b/demo1.py
index 436ed2c..c62d5e8 100644
--- a/demo1.py
+++ b/demo1.py
@@ -1 +1,2 @@
-我是初始化
\ No newline at end of file
+我已经被修改了
+我接着改
\ No newline at end of file
写完之后添加所以的文件
34886@along MINGW64 /e/GitAlong (master)
$ git add .
最后提交到git
34886@along MINGW64 /e/GitAlong (master)
$ git commit -m "change already"
[master 907d6c3] change already
1 file changed, 2 insertions(+), 1 deletion(-)
34886@along MINGW64 /e/GitAlong (master)
回到从前(日志,记录,相关文件都会变)
34886@along MINGW64 /e/GitAlong (master)
$ git log --oneline
d0007d2 (HEAD -> master) change already
12cb0ef 初始化
7b2ff15 change2
09a1c3e change1
34886@along MINGW64 /e/GitAlong (master)
$ git add demo1.py
34886@along MINGW64 /e/GitAlong (master)
$ git status -s
M demo1.py
34886@along MINGW64 /e/GitAlong (master)
$ git reset demo1.py
Unstaged changes after reset:
M demo1.py
34886@along MINGW64 /e/GitAlong (master)
$ git log --oneline
d0007d2 (HEAD -> master) change already
12cb0ef 初始化
7b2ff15 change2
09a1c3e change1
34886@along MINGW64 /e/GitAlong (master)
$ git reset --hard HEAD
HEAD is now at d0007d2 change already
34886@along MINGW64 /e/GitAlong (master)
$ git status -s
34886@along MINGW64 /e/GitAlong (master)
$ git reset --hard HEAD^
HEAD is now at 12cb0ef 初始化
34886@along MINGW64 /e/GitAlong (master)
$ git reset --hard HEAD^C
34886@along MINGW64 /e/GitAlong (master)
$ git reset --hard HEAD7b2ff15
fatal: ambiguous argument 'HEAD7b2ff15': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
34886@along MINGW64 /e/GitAlong (master)
$ git reflog
12cb0ef (HEAD -> master) HEAD@{0}: reset: moving to HEAD^
d0007d2 HEAD@{1}: reset: moving to HEAD
d0007d2 HEAD@{2}: commit (amend): change already
907d6c3 HEAD@{3}: commit: change already
12cb0ef (HEAD -> master) HEAD@{4}: commit: 初始化
7b2ff15 HEAD@{5}: commit: change2
09a1c3e HEAD@{6}: commit (initial): change1
34886@along MINGW64 /e/GitAlong (master)
回到从前(自身文件内容)
34886@along MINGW64 /e/GitAlong (master)
$ git log --oneline
12cb0ef (HEAD -> master) 初始化
7b2ff15 change2
09a1c3e change1
34886@along MINGW64 /e/GitAlong (master)
$ git checkout 12cb0ef -- demo1.py
34886@along MINGW64 /e/GitAlong (master)
$ git add demo1.py
34886@along MINGW64 /e/GitAlong (master)
$ git commit -m "back to change 1 and add comment for demo1.py"
[master 7f59424] back to change 1 and add comment for demo1.py
1 file changed, 2 insertions(+), 1 deletion(-)
34886@along MINGW64 /e/GitAlong (master)
$ git log --oneline
7f59424 (HEAD -> master) back to change 1 and add comment for demo1.py
12cb0ef 初始化
7b2ff15 change2
09a1c3e change1