git 日常使用总结

  1. add

    git add 文件名 #将工作区的文件添加到缓存区中

  2. checkout

    git checkout <name> #切换到分级

    git checkout -b <name> #创建并切换到分支

    git checkout -b totallyNotMain o/main #创建一个名为 totallyNotMain 的分支,它跟踪远程分支 o/main

    git checkout -- 文件名 #丢弃工作区的修改,意思就是,把 该文件在工作区的修改全部撤销,即让这个文件回到最近一次 git commit或 git add时的状态

  3. merge

    git merge <name> #将<name>合并到当前HEAD

    git merge --no-ff -m '注释说明' 自己的分支名 将自己的分支代码合并到开发分支上

  4. rebase

    git rebase <name> #将<name> rebase到HEAD节点下

    git rebase <target> <source> #将<source> rebase到<target>节点下

    git rebase -i[--interactive] <node>... 交互式rebase,可以排序、删减节点

  5. 分离HEAD

    cat .git/HEAD | git symbolic-ref HEAD#两个不同命令查看当前HEAD指向位置

    git checkout <node> #检出HEAD到指定节点

    git checkout HEAD^ #检出到HEAD的上一个节点

    git checkout HEAD~n#检出到HEAD的前的第n个节点

  6. 撤销变更

    git reset#在本地撤销变更,撤销后无记录

    git revert#撤销与远程有关联的变更,撤销后增加新的记录

  7. cherry-pick

    git cherry-pick <node>... #将一些提交复制到当前所在的位置

  8. restore

    git restore <文件名> #使在工作空间但是不在暂存区的文件撤销更改(内容恢复到没修改之前的状态)

    git restore --staged #将暂存区的文件从暂存区撤出,但不会更改文件的内容

    git restore [--worktree] a.txt # 从staged中恢复a.txt到worktree git restore --staged a.txt # 从repo中恢复a.txt到staged git restore --staged --worktree a.txt# 从repo中恢复a.txt到staged和worktree git restore --source dev a.txt# 从指定commit中恢复a.txt到worktree

  9. switch

    git switch <branchName>#切换分支

    git switch -c <branchName> # 创建并切换到分支

  10. 提交技巧,在历史记录中修改内容

    方法一:

    git git rebase -i#将提交重新排序,然后把我们想要修改的提交记录挪到最前

    git commit --amend#来进行一些小修改

    git rebase -i 来将他们调回原来的顺序

    方法二:

    git cherry-pick c2

    git commit --amend

    git cherry-pic c3

  11. tag

    git tag <name> [node] #给某节点打标签为<name>

    git tag v1.0 #打标签 git tag #查看所有标签 git show <tagname> #可以查看某个标签的详细信息 git tag <tagname> #用于新建一个标签,默认为HEAD,也可以指定一个commit id git tag -d <tagname> #可以删除一个本地标签

    注意:

    a.标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签

    b.要删除远程标签,首先从本地删除:git tag -d <tagname> , 然后,从远程删除git push origin :refs/tags/<tagname>

  12. bisect (用来查找哪一次代码提交引入了错误)

    git bisect start [终点] [起点]#"终点"是最近的提交,"起点"是更久以前的提交。它们之间的这段历史,就是查错的范围

    git bisect good #表记当前检查的提交正常

    git bisect bad #表记当前检查的提交异常

    git bisect reset#推出错误检查

  13. describe

    git describe <ref># 由于标签在代码库中起着“锚点”的作用,Git 还为此专门设计了一个命令用来描述离你最近的锚点(也就是标签),ref可以是任何能被 Git 识别成提交记录的引用

    它输出的结果是这样的:<tag>_<numCommits>_g<hash>

    tag 表示的是离 <ref> 最近的标签, numCommits 是表示这个 reftag 相差有多少个提交记录, hash 表示的是你所给定的 ref 所表示的提交记录哈希值的前几位。当 ref 提交记录上有某个标签时,则只输出标签名称

  14. push

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

    git push origin <tagname> #推送某个标签到远程

    git push <remote> <place> #切到本地仓库中的“main”分支,获取所有的提交,再到远程仓库“origin”中找到“main”分支,将远程仓库中没有的提交记录都添加上去,搞定之后告诉我

    git push origin <source>:<destination> #这个参数实际的值是个 refspec,“refspec” 是一个自造的词,意思是 Git 能识别的位置(比如分支 foo 或者 HEAD~1),指定了独立的来源和目的地,就可以组织出言简意赅的远程操作命令,如果你要推送到的目的分支不存在,Git 会在远程仓库中根据你提供的名称帮你创建这个分支

    git push origin :side #通过给 push 传空值 source,成功删除了远程仓库中的 foo 分支

    如果一定要修改公共历史,按如下步骤进行

    1. 在本地使用git rebase -i修改提交历史

    2. 使用git push --force-with-lease推送到远程仓库

    • 使用git push命令会报错,不允许推送

    • 使用git push -- force过于危险,有可能会覆盖其他人的推送

    • 使用git push --force-with-lease,在推送之前,将检查本地版本与对应分支的远程版本是否匹配,这样,你就可以确保在重写历史时,不会意外地擦除其他人推送的更改

  15. fetch

    git push <remote> <place>

    git fetch origin foo #Git 会到远程仓库的 foo 分支上,然后获取所有本地不存在的提交,放到本地的 o/foo

    git fetch origin :bar #如果 fetch 空 到本地,会在本地创建一个新分支

  16. branch

    git branch -u o/main foo #这样 foo 就会跟踪 o/main 了。如果当前就在 foo 分支上, 还可以省略 foo:git branch -u o/main

    git branch --set-upstream branch-name origin/branch-name #建立本地分支和远程分支的关联

    git branch dev #创建开发分支 git branch #查看分支 git branch -a #查看所有分支 git branch -v #查看分支,并带有提交码 git branch -d 分支名 #删除分支

  17. log

    git log --graph#命令可以看到分支合并图

    git log --oneline#查看日志

    git log 查看提交的日志

    gitk 以图形化的方式展现提交的日志

    git log -1 查看最近的一次提交

    git log -2查看最近的两次提交

    git log --oneline查看提交的日志,一行显示

    git log --oneline --graph查看提交的日志

    git log -1 -p查看最近的一次提交

    git reflog显示你所使用过的每一条命令

    git log --graph --pretty=oneline --abbrev-commit查看提交的日志信息

  18. remote

    git remote -v 查看远程库信息

  19. status

    git status查看文件的状态,所谓文件状态的变化就是文件在工作区,缓存区,版本库之间不断的迁移

    git status -u 查看状态

  20. config

    git config --global color.ui true #让git显示颜色

    git config --global user.name [username] 修改用户姓名

    git config --global user.email [email] 修改用户邮箱

    git config --list #查看所有配置

    git config --global alias.st status #设置status的别名为st,git st 等价于 git status,下同

    git config --global http://alias.co checkout

    git config --global alias.ci commit

    git config --global alias.br branch

    git config --global core.excludesfile '~/.gitignore' #配置全局忽略的文件,这样就不用每个项目都加gitignore

  21. diff

    git diff#来比较工作区与缓存区之间的差异

    git diff --cached #来比较缓存区与版本库之间的差异

    git diff HEAD#比较工作区与版本库之间的差异

    git diff 文件名 #查看某个文件在工作区与缓存区之间的差异

    git diff HEAD -- filename #可以查看工作区和版本库里面最新版本的区别

    git diff 远程开发分支名 自己的分支名 #查看自己的分支与远程开发分支有什么不同

    git diff origin/develop develop #查看开发分支有什么不同(develop:开发分支名)

  22. stash

    git stash / git stash save # 修改某个文件后,将它暂存起来

    git stash list#查看存储了哪些暂存工作

    git stash apply #恢复暂存起来的工作:

    git stash clear #清除暂存起来的工作:

常见问题解决:

  1. push遇到在输入密码是熟错后,就会报这个错误fatal: Authentication failed for,解决办法: git config --system --unset credential.helper 之后你在push就会提示输入名称和密码

  2. ssl证书失效,不验证设置

    git config --global http.sslVerify false

git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态
git stash #把所有没有提交的修改暂存到stash里面。可用git stash pop回复。

git reset --hard HASH #返回到某个节点,不保留修改,已有的改动会丢失。
git reset --soft HASH #返回到某个节点, 保留修改,已有的改动会保留,在未提交中,git status或git diff可看。

git clean -df #返回到某个节点,(未跟踪文件的删除)
git clean 参数
    -n 不实际删除,只是进行演练,展示将要进行的操作,有哪些文件将要被删除。(可先使用该命令参数,然后再决定是否执行)
    -f 删除文件
    -i 显示将要删除的文件
    -d 递归删除目录及文件(未跟踪的)
    -q 仅显示错误,成功删除的文件不显示

注:
git reset 删除的是已跟踪的文件,将已commit的回退。
git clean 删除的是未跟踪的文件

git clean -nxdf(查看要删除的文件及目录,确认无误后再使用下面的命令进行删除)
git checkout . && git clean -xdf

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

溜达小灰鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值