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到远程分支

posted @   双城孙宇  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示