一、基本概念
Git在管理项目时,文件有五种状态,分别是:未修改、已修改、已提交、已暂存、已推送;
而文件流转在几个工作区域,分别是:工作目录、暂存区域、本地仓库、远程仓库;
二、常用操作及命令
1)提交文件
1、提交的基本操作流程:
git add
git commit
git push
对应的文件状态及工作区域流转图:
2、追加提交
当commit完之后需要再次修改,追加到上一次提交时,无需回退版本,可以通过以下命令操作
1)git add .
2)git commit --amend
3)修改commit mesage
注:如果不修改commit message,可以使用
git commit --amend --no-edit
3、多commit之间操作
可以使用 git rebase -i [commit_id]
操作多个commit,其中commit_id
是操作的commit的父commit节点的id
?? 下面是具体的使用场景及操作的命令
现在有如下的提交历史:
commit_id - commit_message
----------------------------------------
<a76194b> - d
<d487196> - c
<b261836> - b
<0488d24> - a
<935b7cc> - init
-
调换a、c两个commit的的顺序
1)执行 git rebase -i 935b7cc (即 init节点的 commit_id)
-
2)弹出vi界面信息如下
pick 0488d24 a pick b261836 b pick d487196 c pick a76194b d
-
3)将a、c所在行调换,保存退出vi
pick d487196 c pick b261836 b pick 0488d24 a pick a76194b d
-
修改节点b的文件/修改节点b的commit_message
1)执行 git rebase -i 0488d24(即 a节点的 commit_id)
-
2)弹出vi界面信息如下
pick b261836 b pick d487196 c pick a76194b d
-
3)修改b所在行的pick为edit或者缩写e,保存退出vi
edit b261836 b pick d487196 c pick a76194b d
4)修改后执行 git commit --amend
5)修改commit_message
6)执行 git rebase --continue
-
删除b、c两个commit
1)执行 git rebase -i 0488d24(即 a节点的 commit_id)
-
2)弹出vi界面信息如下
pick b261836 b pick d487196 c pick a76194b d
-
3)修改b、c所在行的pick为drop或着缩写d,保存退出vi
drop b261836 b drop d487196 c pick a76194b d
-
合并节点b、c到a
1)执行 git rebase -i 935b7cc (即 init节点的 commit_id)
-
2)弹出vi界面信息如下
pick 0488d24 a pick b261836 b pick d487196 c pick a76194b d
-
3)将a、c所在行的pick改为squash或者s,保存退出vi
pick 0488d24 a squash b261836 b squash d487196 c pick a76194b d
4)修改合并后的commit_message,保存退出vi