模拟一个git完整命令流程
有一个名为 example.txt 的文本文件
Hello, this is some text.
1、做一些修改并查看文件的差异:
# 修改 example.txt 文件
echo "Hello, this is some updated text." > example.txt
查看文件的差异
git diff
git diff 命令将显示你修改的内容,类似于:
diff --git a/example.txt b/example.txt
index 08f1df5..82ea587 100644
--- a/example.txt
+++ b/example.txt
@@ -1 +1 @@
-Hello, this is some text.
+Hello, this is some updated text.
2、暂存修改并再次查看差异
暂存修改单个文件
git add example.txt`
暂存修改全部文件命令
git add ./
查看暂存区与最新提交(HEAD)之间的差异
# 查看暂存区与最新提交(HEAD)之间的差异
git diff --staged
显示如下内容:
diff --git a/example.txt b/example.txt
index 08f1df5..82ea587 100644
--- a/example.txt
+++ b/example.txt
@@ -1 +1 @@
-Hello, this is some text.
+Hello, this is some updated text.
3、提交修改并查看提交历史
# 提交修改
git commit -m "Update example.txt with new text"
# 查看提交历史
git log --oneline
显示
cfc3e85 (HEAD -> main) Update example.txt with new text
6d68a12 Initial commit
4、git revert 撤回提交
使用 git revert 撤销最新的提交,需要vi编辑撤回的注释
# 使用 git revert 撤销最新的提交
git revert HEAD
# 确认撤销后的提交信息,按 i 进入编辑模式,输入撤销提交的注释信息,然后按 Esc,输入 :wq 保存退出。
Git 将创建一个新的提交,该提交会撤销之前的提交。你可以在 git revert 后编辑提交信息,如果不需要更改,默认会使用撤销提交的注释信息。
查看撤销提交后的提交历史和文件内容:
# 查看提交历史
git log --oneline
显示:
81c40b1 (HEAD -> main) Revert "Update example.txt with new text"
cfc3e85 Update example.txt with new text
6d68a12 Initial commit
查看文件
# 查看 example.txt 文件内容
cat example.txt
显示文件已经撤回
Hello, this is some text.
还可以使用 git reset 命令进行撤回,详情介绍在5
5、commit后不需要撤回,直接push
Git push
如果要撤回push的代码
撤销上次提交
git revert HEAD
撤回指定的hash)
git revert e3fa6b3
撤销后,需要重新git push
# 查看提交历史
git log --oneline
查看提交历史,可以看到撤回的记录
6、git reset 撤回销命令
git reset 是不会保留提交历史记录的,git revert是有完整记录的
1、保留修改内容在暂存区
回退到哪个hash
git reset --soft hash值
在 git reset --soft 模式下,
执行 git reset --soft HEAD^
可以撤销上一个 commit,并保留修改内容在暂存区(staging area)。
这意味着之前的 commit 中的修改将回到暂存区,你可以修改这些代码并重新提交,将修改后的代码作为一个新的 commit 提交
2、不保留修改内容在暂存区(git reset 或 git reset --mixed)
在 git reset 或 git reset --mixed 模式下,
执行 git reset HEAD^ 或者简写成 git reset HEAD~1,
可以撤销上一个 commit,并将更改内容退回到工作目录(working directory),不保留在暂存区。
这意味着之前的 commit 中的修改将回到工作目录,并不在暂存区,你可以对代码进行修改,并重新选择要暂存的更改,然后使用 git add 将更改添加到暂存区,再次进行 commit。
选择建议:
如果你需要撤销已经推送到远程仓库的提交,并且希望保持仓库的一致性,应该使用 git revert。
如果你需要撤销未推送的提交或者回退到之前的状态,并且明确了操作的影响,可以使用 git reset。
但请注意,git reset 可能会修改历史记录,所以要谨慎操作。
7、git merge
如果确保没有冲突,可以直接使用该命令merge最新代码到对应分支
**注意:**如果有冲突或冲突过多,建议使用可视化文件对比idea工具,进行merge,并在可视化文件对比中进行冲突的解决。
8、git merge --abort 取消merge
遇到同事间多人开发代码冲突,可以取消merge,让别人先进行merge后,在进行自己代码merge,解决冲突