概念:
- 修改区(modified)
文件代码修改过,未进行 git add 操作的 存储区
列如:某个文件,git status .查看状态,显示的为红色,此时文件就是在 修改区
- 暂存区(stage)
文件新修改,经过 git add 添加操作 的存储区
此时 git status 查看状态,文件显示为绿色,存放于暂存区
文件操作
git reset HEAD 文件名或者文件路径 恢复到修改区(modified)
git restore –staged 文件名或者文件路径 恢复到修改区(modified)
将文件从可提交暂存区(stage change) 恢复到 修改修改区(modified)
- 这两个命令实质都是git add 的回退操作,比如 git reset HEAD . 就是将所有git add 的文件全部回退回来,将暂存区的文件全部回退到 修改区
git add 文件名 添加
将变化的文件添加到可提交的暂存区,其中 git add . 添加所有修改变化过的文件 (stage),或者是将新建立的文件,加入git版本跟踪且添加到可提交的 暂存区
git checkout — 文件名 还原
还原修改变化过的文件 (discard changes )
- git checkout . 还原当前所有修改过的文件(还原的是在 修改区,修改过的文件,而且是已跟踪的文件,就是 git 过的文件)
git commit -m ‘注释信息’ 提交
提交修改记录 -m 后面为提交注释,提交记录操作只针对暂存区文件(commit)
git pull 更新
拉取远程分支变化,可以理解为同步更新远程仓库的分支变化到本地(pull)
git push origin 分支名 推送
将本地分支修改记录,推送到远程代码库上,同步本地分支与远程分支的变化,可以理解为提交代码到仓库 (push)
遴选,摘取
git cherry-pick ‘ commithashID’ 提取commit 提交的内容,commitid,由git log 查看
- 提取某个comit 的内容,多用于bug修复,特性功能选取
- 更多详细内容
查看信息
git status 查看状态
查看本地文件状态,哪些在暂存区,哪些在非暂存区,
git log 查看本地当前分支提交的历史记录
git log 分支名 查看某个分支提交记录(通过 git branch -a 查看所有的分支名)
例如:git log origin 查看远程分支提交记录
git log 分支名 — graph 查看提交记录,并且显示分支合并图形树情况
git log -p 查看当前分支所有提交的详细信息
git show ‘commitid’ 查看指定某次提交comitId 的提交信息
冲突解决
git checkout –theirs 文件名/路径 使用他人的代码解决冲突
- git checkout –theirs xxx.txt 解决xxx.txt冲突(也可以直接是路径 git checkout –theirs ** 应用所有路径)
- git add xxx.txt 应用冲突
- git commit ‘mes’ 提交代码
git checkout –ours 文件名/路径 使用自己的代码解决冲突
注意 theirs 和ours 是相对的,自己要看好对应的指向,一般来说,
git merge : ours 指向当前代码
git rebase theirs 指向当前代码
分支操作
git branch -a 查看所有分支(包括远程)
git checkout 分支名 切换分支
git checkout -b 分支名 新建并切换分支
git fetch origin 分支名 拉取远程分支到本地
git branch -D 分支名 强制删除本地分支
git push origin –delete 分支名 删除远程分支
git submodule update –init –recursive 更新和初始化子模块
临时保存
git stash save ‘标记用的自定义信息’ 临时保存
用于在切换分支的时候,有未提交的信息,但是又要切换其他分支,则可以用这个命令临时保存修改记录
git stash apply ‘存储stash时写的标记信息/队列索引值’ 恢复临时保存
- 如果省略 索引值,则默认应用最后一次 stash 保存的
恢复被临时保存的文件修改记录 到暂存区
git stash list 查看所有的临时保存
查看所有的临时stash记录
还原操作
git checkout ‘ 文件名’ 还原单个修改过的文件
- git checkout . 还原所有修改过的
git clean ‘参数’ (未跟踪文件的删除)
-n 不实际删除,只是进行演练,展示将要进行的操作,有哪些文件将要被删除。(可先使用该命令参数,然后再决定是否执行)
-f 删除文件
-i 显示将要删除的文件
-d 递归删除目录及文件(未跟踪的)
-q 仅显示错误,成功删除的文件不显示
git reset ‘commitId’ 回退到具体的某次提交
git reset –hard HEAD^ ”扔掉本地的commit提交,回退到上次的远程提交,并清除本地提交的代码’,commit 未推送到远程
git reset –soft HEAD^ ”扔掉本地的commit提交,回退到上次的远程提交,不清除本地提交的代码’,commit 未推送到远程
加上--hard
标记后会告诉git要重置缓存区和工作目录的更改,就是说:先将你的暂存区清除掉,然后将你所有未暂存的更改都清除掉,所以在使用前确定你想扔掉所有的本地工作
打版本标签操作
git tag 标签名 打版本标签
git show 标签名 查看标签版本下的提交变动内容
git push origin 标签名 将版本标签提交到远程仓库(同步)
git push origin -tags 提交所有的标签到远程仓库
git tag -d 标签名字 删除指定的标签
远程仓库操作
git remote -v 列出远程分支
列出所有远程仓库分支,以及地址 即origin别名对应的仓库, git remote 系列针对的都是远程操作
给远程仓库,添加一个地址,比如:给同一个远程仓库origin 添加不同地址,同时分别向两个不同仓库推送
git remote set-url –add 远程仓库别名 url地址 设置远程仓库地址关联
git remote set-url –add origin http://www.github.com/xxxxx.xxx.git