git 常见场景命令行总结
发布日期:2021-11-14 04:12:10 浏览次数:3 分类:技术文章

本文共 3252 字,大约阅读时间需要 10 分钟。

1.暂存工作区内容

git stash 保留当前工作区状态,只会储藏已经在索引中的文件;指定 --include-untracked 或 -u 标记,会存储未被索引的文件;--keep-index,不会储藏已暂存的东西;

git stash list 查看保留的工作状态

git stash pop  恢复工作区状态

(git stash pop恢复工作区的同时会删除stash中的内容;如果不想删除内容,可以使用git stash apply恢复工作区,然后再使用git stash drop删除stash中的内容,git stash apply 版本号 可以用来恢复指定版本的工作区内容)

2.rm误删除文件恢复

git reset HEAD file

git checkout -- file

3.版本切换

git reset --hard commit_id    撤销修改,但是不会保留修改

git reset --soft commit_id      保留修改,将改动放至缓存区

git reset --mixed commit_id   保留修改,不将改动放至缓存区

4.修改commit提交信息

git commit --amend #修改最后一次提交的commit信息

5.变基

rebase 可以把本地未push的分叉提交历史整理成直线,也可以与commit操作结合,更改commit信息

底层操作过程:先将HEAD指向目标分支和当前分支的共同祖先commit节点;对比当前分支指针与HEAD指针提取相应的修改并存为临时文件;将当前分支指针指向目标分支指针;将临时文件依序apply完以后再将HEAD指向当前分支

git rebase -i HEAD~n

6.挑拣commit提交

cherry-pick 可以用于将在其他分支上的 commit 修改,移植到当前的分支。当执行完 cherry-pick 之后,将会自动生成一个新的 commit 进行提交,也就是会有一个新的 commit ID。增加 -x 参数,表示保留原提交的作者信息进行提交

*可以一次将一个连续的时间序列内的 commit ,设定一个开始和结束的 commit ,进行 cherry-pick 操作;

git cherry_pick <start-commit-id>…<end-commit-id>   左开右闭

git cherry_pick <start-commit-id>^…<end-commit-id> 左闭右闭

*注意:cherry pick的commit id一定要按照时间顺序来,不然很容易出现问题

7.在不同分支挑拣文件

挑选某个分支上的某些文件至当前分支:git checkout <branch name> file1 file2 file3  

eg:git checkout feature f.txt 将feature分支的f.txt复制到当前分支

将当前分支上的某个文件至某个分支:git checkout --patch <branch name> file1 file2  

eg:git checkout --patch master f.txt  将当前分支上的f.txt粘贴至master分支

8.拉取远程分支至本地分支

git checkout -b 本地分支名 远程仓库名/远程分支名

9.合并分支

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

底层过程:git会查找两个分支末端所指的快照以及这两个分支的祖先,做三方合并;当两个要合并的快照其中一个为祖先时,将默认为fast-forward模式合并(简单的将指针向前推进),该模式下删除分支之后可能会丢失分支信息;为了保留完整信息,可以禁用Fast-forward模式:git merge --no-ff -m “merge with no-ff” <branch mane>  --no-ff 表示禁用Fast-forward,此时git会在merge时生成一个新的commit,因此需要使用-m 提交相关commit描述

10.拉取远程分支更新至本地

git pull <远程仓库名> <远程分支名>:<本地分支名>

git pull = git fetch + git merge(git pull 先从线上抓取东西下来fetch,然后更新进度合并merge)

git pull --rebase (先从线上抓取东西下来fetch,然后更新进度合并rebase)

*如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

11.提交代码至远程仓库

git push <仓库名>  <分支名>  将本地仓库所做更改提交至远程仓库某一分支

*首次push:git push -u origin master

12.比较两个版本代码之间的不同

git diff                      比较算入暂存区修改的当前文件与工作区文件之间的区别

git diff HEAD          比较当前最新commit与工作区的区别

git diff commit_id    比较某个commit与工作区的区别

git diff --cached        比较最新提交与暂存区的区别

git diff --cached commit_id   比较某个commit与暂存区的区别

13.Fork和分支的区别

Fork:不是Git操作而是GitHub操作,将原项目进行拷贝,新建一个Repository,在该Repository所做操作,对原来的项目的Repository没有任何影响。当想要向原项目合并时,需要提交merge Requests或pull Requests。

分支:Git操作,是一个项目仓库中的代码管理方式,一种方便多人协作的方式。在原项目的Resposity进行操作,操作历史会被记录。

14.添加自定义git命令

*修改global文件,需在.gitconf文件中添加自定义命令表示方式,等号右边的操作等同于等号左边的操作:

vim ~/.gitconf 

eg:添加内容

[alias]

  lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
  mycommit = log --author=cym

保存修改文件之后,在命令行中使用命令git lg与在命令行中使用命令log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit效果是一样的

*也可以修改某个项目的.gitconf文件,此时的自定义命令只对该项目起作用。项目的.gitconf文件在该项目主目录下的.git文件下名为config

eg:项目名为test  该项目的conf文件路径为:test/.git/config

15.查看某次提交的具体修改内容

git show <commit id>

16.仅查看自己的commit历史

git log --author=username

git log --name-only --author=username   #显示每次commit涉及的文件名

git log --stat --author=username    #显示每次commit涉及的文件名,及修改内容汇总

转载地址:https://blog.csdn.net/meng_dream_fly/article/details/102613475 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:php7.2 安装opcache扩展
下一篇:Postman 提交数组和json

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年03月22日 08时21分48秒