0%

Git 指令速查

提交 commit

指定要提价的单个文件

1
git commit [指定的文件名] -m "此次提交的注释"   # 若不添加文件,则默认将暂存区的所有文件提交
1
git commit -am "此次提交的注释"

简化了操作,直接完成了 git add 和 git commit 的操作,但是注意,该操作只限定于对已经被追踪的文件,若有新的未被追踪的文件,则无法使用该命令。

查看不同

查看当前仓库中的文件和上一次提交的不同的地方

1
git diff

查看执行 git add之后,暂存状态(还未git commit提交)和上次提交不同的地方

1
git diff --cached 

查看对已经执行git add后的文件进行修改后与上次提交之间的不同。

1
git diff HEAD

在文件 git add 之后,又进行了修改,文件会有两个状态,分别是未add和未commit,此时使用git diff 查看到的不同是未add的和上次的区别,想要查看两次的区别,使用git diff HEAD,可以查看。

查看与某个指定版本的差异

1
git diff hash值 

以上所有的 git diff 指令均可添加文件名进行指定文件的查询

日志记录

查看简略的日志记录

1
git log --oneline

简略的日志记录,但是展示了完整的版本号信息

1
git log --pretty=oneline

带时间线的图形化显示

1
git log --graph 

查看所有分支的所有操作记录(包括删除的分支记录)

1
git reflog

版本回退

1
2
git add 2.py 添加一个新文件
git commit --amend --no-edit 提交

参数解释:
–amend 参数:将这次改变放到上次的 commit 中
–no-edit 参数:不修改之前的 commit 评论,仍然使用之前的评论

结果: 替换了上次commit的版本,仍然使用之前的评论,版本号被修改,之前的版本号消失。

如果使用 git commit --amend -m "xxx" 命令,则表示将此次的提交合并到上次的提交记录中,且修改上次的提交注释,其他的信息不变(使用的还是上次的版本号)。

回退暂存区的内容,用于在 git add 之后反悔,使用 git reset 返回到 add 之前,可以添加文件名,若没有文件名,则默认还原所有的。

1
git reset [暂存区文件名]

回到最近一次commit的版本

1
git reset --hard HEAD  

回到HEAD指向的commit的版本的前一个版本,效果等同于 git reset --hard HEAD~2

1
git reset --hard HEAD^ 

回到相应版本号所相应的版本

1
git reset --hard commit_id 

回退到对应的版本之后,此时使用 git log 只能查看到当前回退所在的版本之前的日志,回退版本之后的日志无法查看,此时可以使用 git reflog 查看所有操作的日志

文件的版本回退

1
2
3
4
5
git checkout 版本号 -- 文件名
注意:
-- 前后都有一个空格
命令只会对指定文件进行版本的回退,而不是整个git仓库的文件
git reset是将整个仓库的版本回退到某个记录,但是git checkout则是将某个单独的文件的版本回退到某个版本

分支

创建分支方式一

1
git branch 分支名 

查看所有分支的情况,分支之前的*,表示当前所处在的分支

1
git branch

创建分支方式二

1
git checkout -b 分支名 # 使用该方式创建的分支可以在创建完成后直接进入到该分支下。

切换分支

1
git checkout 分支名

注意:若当前分支中有 git add 之后,没有进行提交的文件,此时是不能切换分支的

修改分支名称

1
git branch -m new_branch_name

修改当前分支的名称,GitHub现在不再使用master作为默认的主分支,改为使用main。且在初始化的时候,会提示执行 git config --global init.defaultBranch branch_name 修改默认的分支名。

删除分支

1
git branch -d 分支名 

注意:使用该命令时,当前所在的分支一定不能是要删除的分支

合并分支

1
git merge --no-ff -m 需要被合并的分支名

参数解释:
–no-ff :需要和 -m 参数一起使用,表示需要设置合并分支的消息,此时会新建一个节点,表示为合并的节点,不添加该参数时表示不添加合并信息,此时的节点信息为合并的分支的最新节点的信息。

注意:合并的对象,若想将分支b的内容合并到分支a中,则需要在分支a中使用git merge b进行。

冲突

当合并的两个分支都对同一个文件做了修改,合并的时候就会提示冲突,此时 git 的处理方式是:提示有冲突的文件,在该文件中使用git的标志标示出来,由用户决定保留的内容,之后再由用户手动commit,完成本次的合并提交。

合并之后,冲突的分支中的内容不变(本来分支中的内容就不会变),虽然此时和主分支中冲突文件的内容不同,因为解决冲突的问题,版本管理器也就认为这两个文件是一样的了。

暂存,临时修改

1
2
3
4
5
6
临时修改:git stash

git stash 将当前的工作区 存起来
此时可以切换到别的分支,或者创建新的分支来完成别的工作

再切换到当前分支,使用git stash pop 就可以继续之前的工作了

删除存储的文件

同时删除工作区和索引中的文件

1
git rm 文件名

仅从索引中删除文件

1
git rm --cached 文件名

此方式删除后,本地文件还存在,只是不希望这个文件被版本控制。此删除方式多用在修改 .gitignore 文件时,因为修改 .gitignore 文件后,若被忽略的文件在之前已经被添加到仓库中,文件忽略是没有效果的。