git命令小结
git命令 | 执行操作 |
---|---|
git init | 将当前目录变成git可以管理的仓库 |
git config --list | 查看已有配置信息 |
git clone url | 拷贝一份远程仓库到本地 |
git add . | 将所有修改文件加入暂存区 |
git status | 查看上次提交之后的修改 |
git commit -m 'message' | 将暂存区内容添加到仓库中 |
git commit --amend | 撤销上一次提交 |
git checkout dev | 切换分支 |
git diff | 比较文件在暂存区和工作区的差异 |
git rm 文件名 | 将文件从暂存区和工作区移除 |
git rm --cached 文件名 | 将文件从暂存区移除 |
git branch -a | 查看本地分支和远程分支 |
git merge | 用来合并到当前分支 |
git log | 查看历史提交记录 |
git pull | 是从远程获取最新版本到本地并自动merge,简写形式 |
git push origin HEAD:refs/for/分支名 | 将本地分支版本上传到远程并合并,HEAD指针指向本地分支,reds/for通过gerrit代码评审 |
git remote | 查看当前的远程仓库有哪些 |
git fetch 仓库名 | 更新指定仓库的代码到本地仓库(不改变工作区) |
git reset --soft commitID | 某个分支的版本回退,保留源码只回退本地仓库不回退暂存区,如果还需要提交直接commit |
git reset --hard commitID | 源码也会回退到某个版本,commit和index都回退到某个版本 |
git reset HEAD^ 文件名 | --mixed默认可省略,保留源码即工作区不变,将文件的commit和index信息回退到上一版本,即不希望下一次commit提交包含上次add到暂存区的添加 |
git stash | pull代码前将修改存放到暂存区之后pop,切换分支可能用到 |
使用git status可以查看文件的状态,一般有3种状态:
1、Untracked files
即未跟踪的状态,这是文件的初始状态,也就是在工作区中的状态,就是说git不知道你这个文件的信息,没有生成快照
2、Changes to be committed
即文件在暂存区中生成了快照等待被提交(commit)
3、Changes not staged for commit
即文件生成过快照,但是又有了新的修改,并且没有生成新的快照
一、状态转换:
1)Untracked files --> Changes to be committed
使用:git add 文件名 或者 git add .
含义:将工作区的某个文件、某些文件、或者是所有文件,所作出的修改(新建、删除也算的),添加至暂存区,此时文件就可以被git commit了。
2)Changes to be committed --> Changes not staged for commit
使用:当某个文件已经git add过了,此时如果再进行修改,使用git status查看文件状态的时候,就处于Changes not staged for commit,意思是修改的部分没有生成快照,不能提交。
3)Changes to be committed --> Untracked files
使用:git rm --cached 文件名
含义:将文件从暂存状态转换为未暂存状态
二、撤销
1、场景:将该文件在工作区中的修改,全部撤销,返回到最近一次git commit或者git add时的状态
git checkout -- 文件名
1)如果,文件没有被git add过,即没有生成过快照,那么使用此命令就撤销到了和版本库一致的状态了
2)如果,文件被git add过后,又修改了,即曾经生成过快照,那么使用此命令撤销到之前git add后的暂存区时的状态。
2、场景:撤销暂存区的修改,将文件重新放回工作区
git reset HEAD 文件名
git reset既可以用在版本回退,也可以用在撤销暂存区的修改,将文件重新放回工作区,HEAD代表此前的最新版本;
接下来就可以使用1)中的方法,将工作区中的修改撤销了。
3、提交到本地分支上的回退
如果,修改的文件已经使用了git commit提交到了本地分支,那么可以采用版本回退,回到之前的版本
1)使用,git reset --hard HEAD回退到上一个版本(HEAD为当前版本、HEAD为上一个版本、HEAD^^为上上个版本,以此类推)。
2)或者使用 git log --pretty=online 查看版本号记录
git reset --hard 版本号
4、提交到远程分支,就只能强行覆盖了,要么是远程分支覆盖本地、要么是本地覆盖远程
远程分支覆盖本地:https://blog.csdn.net/qq_36898043/article/details/81449752
本地覆盖远程不推荐使用,一般是回滚到之前的commit历史记录,然后再push到远程分支
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)