git常用命令及概念对比

查看日志

git config --list 查看git的配置

git status 查看暂存区和工作区的变化内容(查看工作区和暂存区有哪些修改)

git log 查看当前分支的commit 记录

git log -p commitID详细查看commitID的具体内容

git log -L :funcName:fileName 查看fileName文件中funcName函数的修改历史

git log --pretty=oneline 简易的查看commit 记录(直接用git log --oneline更方便一些)

git log --graph --pretty=oneline --abbrev-commit 查看分支合并图

git diff file.txt 比较工作区和暂存区内file.txt 的区别

git diff HEAD -- file.txt 比较查看版本库和工作区中的file.txt的区别

git diff --cached file.txt 比较暂存区和本地仓库

git reflog 用在回退时的场景, 当发生版本回退时,git log只能看到HEAD指针的祖先。而git reflog可以看到左右commit 记录

git show commitID 查看commitID这次提交的详细内容

本地仓库

git add file.txt 添加文件file.txt到暂存区 (也可以用git add . 将当前文件夹中所有修改都添加到暂存区)

git commit -m "xxx" 提交暂存区的内容到本地仓库 ,并添加评论"xxx", m是message的缩写

git commit --amend 上一次commit 被reviewer拒了后,做出修改后提交,要加--amend 参数

拉取远程仓库内容

git pull 用远程分支更新本地分支内容(类似于SVN中的update操作)

git pull origin master:dev 将远程库origin中的master 分支内容,更新到本地的dev分支上(如果是使用git pull origin master, 是将远程库origin中的master 分支内容,更新到当前分支上)

git clone与git pull的区别:git clone是复制一个远程库到本地,生成一个本地仓库。git pull是拉取远程库中的分支,合并到本地库中,git pull = git fetch +git merge

推送

git push -u origin master 将本地的当前分支master推送到远程(将本地库的内容推送到远程)(第一次运行,由于远程库是空的,要加-u参数,后续不用加该参数)

git push origin master 将本地的master分支推送到origin主机的master分支。如果master不存在,则会被新建。

git push origin v1.0 将v1.0这个标签推送到远程

git push origin --tags 将本地的标签一次性全部推送到远程

git push origin :ref/tags/v0.9 删除远程上的标签v0.9

git clone git@github.com:someoneAccount/repoName 克隆远程库repoName到本地

分支

git branch 查看本地所有分支

git branch -a 查看远程和本地的所有分支

git branch -d dev 删除dev分支

git branch -D 分支名 用-D参数来删除一个没有被合并过的分支

git checkout -- file.txt 用暂存区内的file.txt替换到工作区内的file.txt(如果暂存区是空的,就用版本库中file.txt替换掉工作区的file.txt)

git checkout xxx 切换到xxx分支

git checkout -b dev 创建一个新分支dev,并切换到该分支(该命令相当于两个命令:git branch dev和git checkout dev)

存贮

git stash 将当前分支的工作现场储藏起来,等以后回复现场后继续工作

git stash list查看当前分支保存起来的工作现场

git stash pop 恢复工作现场(相当于两个命令:git stash apply 和git stash drop)

git stash apply stash@{0} 恢复0号工作现场

git clean 清除untracked files

标签

git tag v1.0 给当前分支打上标签v1.0

git tag 查看所有标签

git tag v1.0 commitId 给commitId这个提交打上标签v1.0

git show v1.0 查看v1.0这个标签内容

git tag -d v0.1 删除v0.1这个本地的标签

合并

git rebase master

将当前分支的修改,在master分支上重新实现一下(rebase叫做变基, 就是把当前分子的根基改变一下)

git rebase master

git merge master

将master分支合并到当前分支,合并的步骤是将master 的多次提交合并成一次新的提交,然后再将这个新的提交实现在当前分支上。

git merge master

git merge dev 将dev分支合并到当前分支

git merge --no-ff -m "comments xxxx" dev 以no-ff的形式合并dev分支到当前分支

759365b8544a497c8f424c2dee85e29d.png

复制一个特定的提交到当前分支

用途:修复bug用:在某一个分支上已经修复了bug,将该提交内容commitId应用到当前的分支

git cherry-pick commitId

撤销操作

git restore

git restore --staged file 撤销git add操作,就是把文件从缓存区移动到工作区.(针对暂存区的操作)

git rm

git rm file.txt 然后git commit 从版本库中删除file.txt(本地工作区内删除,直接用rm file.txt即可)

git reset

回滚到对应的commit-id,相当于是删除了commit-id以后的所有的提交,并且不会产生新的commit-id记录,如果要推送到远程服务器的话,需要强制推送-f

git reset HEAD file.txt 清空暂存区(适用情况:写了一些胡话,已经提交到暂存区,要撤销), 其实是拉去本地仓库中最近一次提交(HEAD指针指向)到暂存区,工作区内容没有改变。

git reset --hard HEAD^ 回退到上一个版本(撤销git commit,同时也撤销git add和 工作区内容)

git reset --soft HEAD^ 撤销git commit,但不撤销git add (工作区内容依旧保持)

git revert

是反做撤销其中的commit-id,然后重新生成一个commit-id。本身不会对其他的提交commit-id产生影响,如果要推送到远程服务器的话,就是普通的操作git push就好了

git revert commit_id

修正提交

在Git中,amend命令是一个强大的功能,它允许您修改最近的提交。如果您忘记添加文件或在提交消息中犯了一个拼写错误,这将非常有用。

修正最后一次提交

要修改您的最后一次提交,请对项目中的文件进行所需修改,然后按照常规提交(使用git add)的方式将这些更改添加到暂存区。一旦更改已经暂存,运行以下命令:

git commit --amend

这将使用你的默认文本编辑器打开你的最后一次提交的提交信息。您可以更改消息或保持原样。保存文件并退出编辑器以完成修正操作。

未进行更改的修复操作

如果您发现在修改提交信息或已经暂存了某些更改后没有要提交的更改,则可以使用--no-edit选项对提交进行修正而不更改提交信息。运行以下命令:

git commit --amend --no-edit

 仅修复文件

如果您已经对文件进行了更改,但想使用与上一次提交相同的提交消息,则可以使用--no-edit选项对提交进行修正而不更改提交信息。运行以下命令:

git commit --amend --no-edit

​​​​​​​​​​​​​​

更换仓库

git remote -v 查看远程库信息(也可以用git remote 查看简易的远程库信息)

git remote rm origin 删除远程库

git remote add origin git@github.com:yourAccount/repoName 将远程仓库repoName与本地仓库相关联,并将远程仓库命名为origin

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值