一、创建Git版本库与提交文件
(1)为了方便Git管理,在使用Git进行代码提交与修改前,先添加个人用户名与email:
$ git config --global user.name "Andy";
$ git config --global user.email "Andy@email.com";
(2)添加完用户名与email后,查看用户名与邮箱信息命令如下:
$ git config user.name ;
$ git config user.email ;
(3)创建Git代码仓库文件夹,并进入仓库文件夹
//我的文件夹如下
$ cd E:/git/gitRepository
(4)在仓库文件夹下创建git的管理文件
$ git init
(5)添加文件管理,建立新文件
① 查看当前仓库文件夹下有哪些非隐藏文件
$ ls
但是.git管理文件是被隐藏的文件,所以我们想要查看当前文件夹下所有文件,需执行以下命令
$ ls -a
② 在仓库文件夹下创建一个demo.java文件
$ touch demo.java // 执行完后可以执行 ls -a 查看是否创建成功
③ 创建完成后查看当前文件状态
$ git status
④ 将创建的文件添加进版本库
查看文件状态是发现demo.java 文件属于nothing added to commit but untracked files present (use "git add" to track) 状态时,需将
demo.java文件添加进版本管理库。
添加单个文件进版本管理库
$ git add
添加全部未被添加文件
$ git add .
⑤ 添加完文件后,即可以对该文件进行提交了
$ git commit
可以使用-m 给本次提交信息加上备注 (建议加备注)
$ git commit -m "add by Andy demo.java"
⑥ Git流程图
二、git版本库记录查看与修改
(1)创建文件demo.java
查看创建的文件 $ ls
在创建文件中添加点内容,博主添加了:test
(2) 查看文件修改状态
① 创建文件
$ touch demo.py
② 查看修改但未提交信息 $ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: demo.py
**** 注意:当版本库中存在垃圾文件时,可以使用命令清除:$ git clean -f
③ 将创建文件添加进版本管理库分支
$ git add demo.py
④ 提交添加文件demo.py
$ git commit -m "add by Andy"
⑤ 查看Git版本库日志
$ git log
通过日志可以查看版本库的代码提交记录。
*****注意 进入日志查看后,可按 “Q键” 退出日志查看,返回到命令行输入界面。
⑥ 假如我们修改创建的demo.py文件,在文件中加入内容 test=1;
查看文件状态 $ 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: demo.py
文件修改后在此输入 $ git add demo.py
再次查看文件状态 $ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: demo.py
则可看到我们修改的文件。
再次输入命令 $ git commit -m "modify Andy" 将修改的文件提交。
⑦ 查看demo.py文件修改内容 $ git diff
再次修改demo.py文件内容,增加 test2 = 2;
执行 $ git diff 会出现如下信息
diff --git a/demo.py b/demo.py
index ea12b68..f01cc26 100644
--- a/demo.py
+++ b/a.py
@@ -1 +1,3 @@
-test=1;
\ No newline at end of file
+test=1;
+
+test2 = 2;
\ No newline at end of file
⑧ 修改后再次提交 $ git add demo.py
提交后查看修改记录 $ git diff --cached
diff --git a/demo.py b/demo.py
index ea12b68..f01cc26 100644
--- a/demo.py
+++ b/demo.py
@@ -1 +1,3 @@
-test=1;
\ No newline at end of file
+test=1;
+
+test2 = 2;
\ No newline at end of file
⑨ 查看 unstaged ($ git diff);查看staged($ git diff --cached) ;查看staged & unstaged ($ git diff head)
以下是三种情况下的代码对比:
# 对比三种不同 diff 形式
$ git diff head # staged & unstaged
@@ -1 +1,3 @@
-a = 1 # 已 staged
+a = 2 # 已 staged
+b = 1 # 已 staged
+c = b # 还没 add 去 stage (unstaged)
$ git diff # unstaged
@@ -1,2 +1,3 @@
a = 2 # 注: 前面没有 +
b = 1 # 注: 前面没有 +
+c = b # 还没 add 去 stage (unstaged)
$ git diff --cached # staged
@@ -1 +1,2 @@
-a = 1 # 已 staged
+a = 2 # 已 staged
+b = 1 # 已 staged
三、git版本库记录代码还原(reset)
(1) reset回到add之前
将add 到 stage 的文件还原回到add之前
$ git reset demo.py
$ git reset demo.py
Unstaged changes after reset:
M demo.py
查看文件状态$ git status -s
M a.py
(2) 修改已经commit提交的版本
# "--no-edit": 不编辑, 直接合并到上一个 commit
$ git commit --amend --no-edit
# "--oneline": 每个 commit 内容显示在一行
$ git log --oneline
输出结果:#合并到change5 上
111fcba (dev2) change5
每个 commit 都有自己的 id 数字号, HEAD 是一个指针, 指引当前的状态是在哪个 commit. 最近的一次 commit 在最右边,
我们如果要回到过去, 就是让 HEAD 回到过去并 reset 此时的 HEAD 到过去的位置。
回到版本之前,通过 -- hard ID,ID为提交版本对应的ID
b852351 chaged4
e19a442 change3
16ba841 change2
6825872 change1
如:回到版本change3
$ git reset --hard e19a442
(3)rest是还原整个版本库,还原单个文件使用:checkout
例如:单个文件回到版本16ba841 change2之前
$ git checkout 16ba841 -- demo.py
四、分支管理(branch)
(1)查看当前所有分支
$ git branch
* (HEAD detached at e19a442)
dev
dev2
master
(2) 建立分支
$ git branch dev3
(3)切换分支
$ git checkout dev3
Switched to branch 'dev3' # 提示已经切换成功
(4)合并分支
将dev3 分支中修改的文件合并到主分支master中
先切换回主分支
$ git checkout master
在master主分支中合并
$ git merge dev3
(5)冲突合并
当两个人同时对dev3 与 master分支进行了修改,在合并的时候就会出现冲突。
我们在对master进行合并时会有如下冲突提示:
Auto-merging demo.py
CONFLICT (content): Merge conflict in demo.py
Automatic merge failed; fix conflicts and then commit the result.
此时我们打开文件可以查看到冲突标记:
<<<<<<< HEAD
# add by master
=======
# add by dev3
>>>>>>> dev
此时则需要我们手动合并,再次提交
(6)临时修改暂存(stash)
将手头上的事情临时暂存起来
$ git stash
恢复暂存
$ git stash pop