git常用命令

在这里插入图片描述

一、查看和创建分支
git log //查看所有的提交历史

git log “file” //查看某文件的所以提交历史

git log -p “commit-id” “file” //某一文件以diff的形式给出

详细可参考:git log 详细用法

git show “commit-id” “file” //某文件的指定commit-id下的diff

git show “commit-id” //指定commit-id下的所有文件diff

PS:git show命令同git log -p输出类似,只不过它只显示一个commit的内容,如果不指定commit hash, 它默认输出HEAD指向commit的内容.

git status //查看分支状态

git checkout xxxx //切换分支

git checkout -b xxx //创建并切换分支

git checkout -b 本地分支名 远程分支名 == git checkout --track 远程分支名 //创建并切换分支,并将该分支设置为跟踪远程分支

详细链接:Git跟踪远程分支

git branch xxxx / /创建分支

git branch //查看本地分支

git branch -r //查看远程分支

git branch -a //显示所有分支(带*表示当前所在分支)

git branch -d xxx //删除分支

二、提交和修改
git add xxx //提交文件到暂存区

git commit -s //提交并写详细注释

git commit --amend //修改add 和commit提交记录,不会新建分支(commit改变,change-id不变)

git remote -v //查看所有远程仓库

git merge dev //在当前分支合并dev分支

git merge -m “Merge from dev” dev //-m可以加上merge时要添加的描述性语句

git rebase 分支名 //参考链接:merge和rebase的区别 和 Git中分支merge和rebase的适用场景及区别

git rebase master //将master最新的commit作为基(将当前分支所有提交增加到master分支的最新提交后面)

git rebase -i [startpoint] [endpoint] //压缩合并多次提交,-i是–interactive(交互),[startpoint] [endpoint]则指定了一个编辑区间,如果不指定[endpoint],则该区间的终点默认是当前分支HEAD所指向的commit(注:该区间指定的是一个前开后闭的区间)。

注意: ( rebase 和 merge的使用场景)

  1. 不要在公共分支使用rebase

  2. 本地和远端对应同一条分支,优先使用rebase,而不是merge

漫画讲解 git rebase VS git merge

三、版本回退
reset三种模式
git reset --hard HEAD^ //清空工作区、暂存区的内容(没有commit的修改会被全部擦除)

git reset --soft HEAD^ //保留工作目录、index暂存区的内容,把重置 HEAD 所带来的新的差异放进暂存区(为了弥补git reset --hard HEAD^缺点)

git reset HEAD //只保留Working Tree工作目录的內容,把重置 HEAD所有差异都混合(mixed)放在工作目录中,reset不加参数,默认使用的mixed

git reset HEAD^ //回退所有内容到上一个版本

git reset HEAD^ file1 // 回退指定文件到上一个版本

git reset 052e //回退到指定版本

HEAD 说明:

HEAD 表示当前版本
HEAD^ 上一个版本
HEAD^^ 上上一个版本
也可以使用 ~数字表示:

HEAD~0 表示当前版本
HEAD~1 上一个版本
HEAD^2 上上一个版本
reset三种模式的区别和使用场景:Git Reset 三种模式

git diff //显示已写入暂存区和已经被修改但尚未写入暂存区文件的区别

git diff --stat //显示摘要而非整个 diff

git diff --cached //查看已写入暂存区的改动

git diff HEAD //查看已写入暂存区与未写入暂存区的所有改动

git clean -n //可以在删除前先查看有哪些文件将被删除

git clean -f //删除当前工作目录下的未跟踪文件,但不删除文件夹

git clean -df //删除当前工作目录下的未跟踪文件以及文件夹

git clean -xdf //删除未跟踪的文件

cherry-pick(commit-id不同,change-id相同)
git cherry-pick commitid //指定提交应用到当前分支

git cherry-pick 分支名 //指定分支的最新提交应用到当前分支

git cherry-pick //将两个提交应用到当前分支上,生成的是两个对应分支的新提交

blame
git blame 文件名 //查看文件每一行修改作者

git blame 文件名 | grep “查找词” //只查文件中某一部分由谁所写

git blame 文件名 -L a,b //只查文件中某一部分由谁所写

-L 参数表示后面接的是行号(Line), a,b代表查询文件的第a行到第b行之间的文件内容情况。

a, 则代表从第a行到文件结尾

,b则代表从文件开头到第b行。

四、代码提交案例
日常大型项目中,在远程git服务器上默认是有mater分支的,但是在多人协同开发时,最好是新建一个自己的远程分支,然后再将远程自己的分支合并到master分支中。

创建远程分支
创建本地分支并切换
git checkout -b 分支名
例如:git checkout -b dev,这条命令把创建本地分支和切换到该分支的功能结合起来了,即基于当前分支master创建本地分支dev并切换到该分支下。

提交本地分支到远程仓库
git push origin 本地分支名
例如: git push origin dev ,这条命令表示把本地dev分支提交到远程仓库,即创建了远程分支dev。

删除远程分支

git push --delete origin dev

同步远程分支代码到本地分支
git fetch //这将更新git remote 中所有的远程repo 所包含分支的最新commit-id, 将其记录到.git/FETCH_HEAD文件中
git fetch remote_repo //这将更新名称为remote_repo 的远程repo上的所有branch的最新commit-id,将其记录。
git fetch remote_repo remote_branch_name //这将更新名称为remote_repo 的远程repo上的分支: remote_branch_name
git fetch remote_repo remote_branch_name:local_branch_name //这将更新名称为remote_repo 的远程repo上的分支:remote_branch_name ,并在本地创建local_branch_name 本地分支保存远端分支的所有数据。

git merge //将branch分支合并到当前分支
例如:git merge origin/master //将远程分支合并到当前分支

//这两个命令可以加上–no-ff 表示 不要Fast-Foward合并,这样可以生成merge提交,然后需要再加上-m参数,表示对提交的说明

本地分支代码提交到远程自己的分支
git push origin 远程分支名

git push origin tangzhiqiang //将本地分支的代码提交到远程分支tangzhiqiang中

远程自己分支合并到master分支
git checkout master

git pull origin master

git merge tangzhiqiang

git status //查看状态,有冲突就解

git push origin master

参考链接:

https://blog.csdn.net/qq_34609889/article/details/88733153

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值