¶提交 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 | git add 2.py 添加一个新文件 |
参数解释:
–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 | 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 | 临时修改:git stash |
¶删除存储的文件
同时删除工作区和索引中的文件
1 | git rm 文件名 |
仅从索引中删除文件
1 | git rm --cached 文件名 |
此方式删除后,本地文件还存在,只是不希望这个文件被版本控制。此删除方式多用在修改 .gitignore 文件时,因为修改 .gitignore 文件后,若被忽略的文件在之前已经被添加到仓库中,文件忽略是没有效果的。