Git 工作常用命令

概念:

  • 修改区(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

git remote rm ‘远程仓库别名’ 删除某个远程仓库