前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git 常用及特殊命令笔记

Git 常用及特殊命令笔记

作者头像
Hopetree
发布2022-09-26 17:48:29
2810
发布2022-09-26 17:48:29
举报
文章被收录于专栏:tendcode

Git 作为个人和公司代码管理的最佳选择方案,熟悉各种常用的 git 命令操作显得尤为重要,这篇博文就作为自己的一个关于 git 常用和不常用命令的笔记,整理走一波!

远程到本地

克隆分支

  • 克隆远程项目到本地 常规克隆(默认克隆主分支),不指定目录名称则使用项目名称:
代码语言:javascript
复制
# git clone <repo> [dirname=repo_name]
git clone https://github.com/Hopetree/izone.git
  • 克隆指定分支到本地:
代码语言:javascript
复制
# git clone -b <branch> <repo> [dirname=repo_name]
git clone -b dev https://github.com/Hopetree/izone.git
  • 克隆指定的深度(就是提交的历史)

指定深度可以减少克隆的时候下载文件的大小,如果只需要克隆最后一次提交,可以设置 --depth=1 这样可以有效减少历史提交的二进制文件的大小,使得克隆代码更小,花费的时间也会更短

代码语言:javascript
复制
git clone --depth=1 https://github.com/Hopetree/izone.git

本地到远程

tag 操作

  • 推送本地 tag 到远程
代码语言:javascript
复制
git push origin --tags

本地操作

文件改动的增加和清除

  • 添加改动文件 添加所有改动文件(不包括 .gitignore 忽略的文件):
代码语言:javascript
复制
git add *

添加 .gitignore 中忽略的文件:

代码语言:javascript
复制
git add -f .env
  • 删除所有未添加文件的改动(使 git status 恢复到 clean 状态)
代码语言:javascript
复制
git checkout .
  • 删除某个文件的当前修改(未提交)
代码语言:javascript
复制
# git checkout -- <filename>
git checkout -- readme.md
  • 删除某个文件的当前修改(已提交)
代码语言:javascript
复制
# 首先要取消文件的暂存状态,执行取消暂存命令,然后执行删除修改的命令
# git reset HEAD -- <filename>
git reset HEAD -- readme.md
git checkout -- readme.md

分支的操作

  • 本地已存在分支之间的切换
代码语言:javascript
复制
# git checkout <branch>
git checkout dev
  • 本地从远程分支拉取新建分支并切换到新分支
代码语言:javascript
复制
git checkout -b dev origin/dev
  • 删除本地分支
代码语言:javascript
复制
# git branch -d <branch>
git branch -d dev
# 当分支上面还有未完成的提交时,需要强制删除
git branch -D dev

远程操作

查询

  • 查询远程分支
代码语言:javascript
复制
git branch -r
  • 更新远程分支列表(当远程添加了新分支,但是本地没有查询到的时候)
代码语言:javascript
复制
git remote update origin -p
git branch -r

远程分支的增删

  • 删除远程分支
代码语言:javascript
复制
# git push origin --delete <branch>
git push origin --delete dev

一个提交合入到多个分支

要将A分支的一个commit合并到B分支,可以进行如下操作

  1. 切换到A分支:git checkout A
  2. 找到A分支提交的 commitID,如46d64dfr
  3. 切换到分支B:git checkout B
  4. 执行合入 git cherry-pick 46d64dfr,A 提交的 commit就会合入B分支

Tag 操作

创建 tag

  • 本地创建 tag
代码语言:javascript
复制
# git tag -a <tag_name> -m 'tag 注释'
git tag -a v1-1.0 -m 'tag 注释'
  • 推送本地 tag 到远程仓库
代码语言:javascript
复制
# 推送本地所有tag
git push origin --tags

# 推送单个tag
git push origin <tagname>

删除 tag

  • 删除本地 tag
代码语言:javascript
复制
# git tag -d <tag_name>
git tag -d v1-1.0
  • 删除远程 tag
代码语言:javascript
复制
# git push origin --delete tag <tag_name>
git push origin --delete tag v1.0

回退

  • 回退到某个历史提交
代码语言:javascript
复制
# git reset --hard <commit SHA>
git reset --hard 7ad2e20d94ebfae5391bee38628ecfccf15982ac
  • 回退之后强制提交
代码语言:javascript
复制
# git push -f origin <branch>
git push -f origin dev

常见报错及处理方式

  • clone和push报错

报错内容包含如下信息

代码语言:javascript
复制
fatal: Authentication failed for 'http://xxx'

这种错误一般都是跟用户账号有关,如果是clone的话,可以在clone命令中显式添加账号信息然后clone,命令如下:

代码语言:javascript
复制
git clone http://username:password@github.xxx.git

冷知识

  • .gitattributes 文件的使用

在github上,如果未指定语言,Linguist来自动识别你的代码应该归为哪一类,它是根据某种语言的代码量来决定是哪种语言的项目。如果识别有误,可以新建.gitattributes文件来进行设置。格式如下:

代码语言:javascript
复制
*.js linguist-language=python
*.css linguist-language=python
*.html linguist-language=python

统计某段时间内某个人代码提交量

代码语言:javascript
复制
git log --author="$(git config --get user.name)" --pretty=tformat: --numstat --since ==2019-8-1 --until=2019-9-1| gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' - 

参考:https://blog.csdn.net/yjaspire/article/details/80921000

阮一峰博客:http://www.ruanyifeng.com/blog/2019/12/git-undo.html

版权声明:如无特殊说明,文章均为本站原创,转载请注明出处 本文链接:https://cloud.tencent.com/developer/article/2123502 许可协议:署名-非商业性使用 4.0 国际许可协议

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年4月24日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 远程到本地
    • 克隆分支
    • 本地到远程
      • tag 操作
      • 本地操作
        • 文件改动的增加和清除
          • 分支的操作
          • 远程操作
            • 查询
              • 远程分支的增删
                • 一个提交合入到多个分支
                • Tag 操作
                  • 创建 tag
                    • 删除 tag
                    • 回退
                    • 常见报错及处理方式
                    • 冷知识
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档