Git入门文章&Git基础命令(常用)&常见问题整理

4 篇文章 0 订阅

Git初识

git : 进行了版本的控制,分布式版本代码管理工具
gitHub :开源的代码分享的平台;每个gitHub账号都可以将自己的资源提交到gitHub上,gitHub充当一个服务器的角色;如果需要gitHub上的资源,直接从gitHub下载;

  • git : 分布式版本代码管理工具在这里插入图片描述

  • git工作原理

    • 工作区:我们能看到的,平时用来写代码的地
    • 暂存区:历史存储用的
    • 历史区:生成历史版本
      在这里插入图片描述

git的使用(全局配置)

git的全局的配置只需要配置一次就好(git第一次安装完成后,我们在全局环境下基本信息)

  • 1、配置全局基础信息
    • git config -l (查看全局配置信息) 【报错不用管,直接输入用户名和邮箱】
      git config --global user.name ‘xxx’
      git config --global user.email ‘xxx@xxx.xxx’
      -------------到目前为止输入git config -l要出来用户名和邮箱-------
  • 2、创建仓库,完成版本控制
    • 1、创建本地仓库 :让本地文件夹初始化一个git仓库;
      git init(会生成一个隐藏文件夹,不能删除,仓库里边的所有信息都在这里边)【mac的在终端输入shift+cmmand+. 直接显示】
      • git仓库分三个区: 工作区 暂存区 历史区
      • 工作区: 就是你电脑磁盘上的文件
    • 2、在本地工作区编写完成代码之后,把代码提交到暂存区
      git add xxx (把工作区指定的文件提交到暂存区)
      git add . (把工作区所有修改的文件提交到暂存区)
      git add -A (把工作区所有修改的文件提交到暂存区)
      git status (查看当前文件提交状态) 【红色代表在工作区;绿色代表在暂存区;看不见东西代表所有东西已经提交到历史区】
    • 3、把暂存区的内容提交到历史区
      • git commit -m’描述信息’ (描述信息是本次提交的一个描述)
      • git log 查看当前历史区提交的版本号
      • git reflog 包含回滚的历史信息
    • 4、github 网址:github 网址
      一个网站(一个开源的源代码管理平台),用户注册后,可以在自己的账户下创建远程仓库,用来管理自己的源代码(代码是基于git传到远程仓库中)
      我们所熟知的插件、类库的源码在这个平台上都有所托管(我们可以下载、查看
      • 1、在头像下的Settings
        • Profile:设置昵称、公开的邮箱、简介、头像
        • account:设置用户名(登录名)、
        • security:修改密码
      • 2、创建仓库
        • new repository
        • publice:创建一个开源的仓库
        • peivate:私有仓库作为团队内部开发
        • 填写信息
        • create repository
        • 仓库的settings
        • delete this repository(删除库)
        • Collaborators 设置仓库的管理者
      • 3、把本地仓库的代码提交到远程仓库
        • 本地仓库和远程仓库建立连接
        • git remote -v (查看本地仓库和远程仓库的连接状态)
        • git remote add origin git仓库地址 (让本地仓库和远程仓库建立连接) origin是随便起的连接名(可以改,不过一般大家都叫这个名字)
        • git remote rm origin (删除连接状态)
        • 向远程仓库提交代码(提交之前先拉取代码)
          • git pull origin master (拉取代码,把远程仓库代码拉取到本地)
          • git push origin master (推送代码,把本地代码推送到远程)
      • 4、git clone 远程仓库git地址 本地仓库名
        • 其实在真正开发的时候我们用的都是git clone
        • 小组成员基于 git clone 把仓库克隆到本地(一步就干三件事:git init、git remote add、git pull)

Git命令(常用)

  • 别忘打空格

重命名默认分支 master

基础命令

git --version (查看git版本)
git config -l (查看全局的基础信息)
git config --global user.name ‘xxx’ 绑定GitHub//git config --global user.name ‘Github名’
git config --global user.email ‘xxx@xxx.xxx’ 绑定GitHub邮箱 //git config --global user.email ‘邮箱名’
git init:初始化一个空的git仓库 【.git一开始隐藏,在查看打开隐藏的项目,.git这个文件不能删除,删除就不是仓库了】
git status 检查仓库中的文件状态【红色代表工作区,绿色暂存区,没有证明在历史区】
git add 文件名 (把指定文件提交到暂存区)
git add . (把全部文件提交到暂存区)
git add -A (把全部文件提交到暂存区)
git commit -m’注释’ (本文件提交到历史区,注释就是你这次提交的描述信息)
git log 查看历史版本信息
git reflog (查看历史版本信息)
git remote (查看所有远程主机)
git remote rm origin (移除远程主机,远程主机名字 origin)
git remote -v (查看远程仓库和本地仓库的关联状态)
git remote add origin 仓库地址 将本地仓库同步,连接到远程仓库
git remote rm origin 仓库地址 (删除连接状态)
git pull origin master :拉取远程仓库的代码到本地,使本地与远程仓库的代码同步 拉过来
git push origin master :将本地仓库的内容与远程仓库同步 推过去
git clone GitHub仓库地址 (将远程的仓库下载到本地)—相当于 (git init、git remote add 、git pull)
git clone :将远程仓库下载到(当前 git bash 启动位置下面的)指定文件中,如果没有会自动生成
git reset --hard HEAD^ :回退版本信息
(HEAD^:一个版本 HEAD~50 五十个版本)

git reset --hard HEAD^1
git reset --hard f65a9d11b629315659fdb

git stash:临时将工作区文件的修改保存至堆栈中
git stash list ; 列出储藏内的所有列表;
git stash pop:将之前保存至堆栈中的文件取出来
git stash apply: 还会保留历史堆栈中的记录
git stash drop stash@{0} 这是删除第一个队列

主干和分支

git branch:查看本地分支
git branch -a 查看所有分支(本地分支+远程分支)
git branch 分支名:创建新分支
git checkout 分支名:切换到分支
git checkout -b 分支名:创建并切换分支
git checkout -b dev(本地分支名) origin/dev(远程分支名): 拉取远程分支,并创建本地分支
git pull origin dev 把dev支干内容pull下来 orgin 默认的仓库名
git branch -D(d高版本小写也可以) 分支名:删除分支
当更改了分支的文件时,主干代码不会更新
git merge 分支名;把分支的代码合并到主干上;
git merge dev 把dev合并到当前右侧显示(主干或分支)下

发布版本

  • tag 常用于发布版本
    # 默认在 HEAD 上创建一个标签
    $ git tag v1.0
    # 指定一个 commit id 创建一个标签
    $ git tag v0.9 f52c633
    # 创建带有说明的标签,用 -a 指定标签名,-m 指定说明文字
    $ git tag -a v0.1 -m “version 0.1 released”
    # 查看所有标签
    # 注意:标签不是按时间顺序列出,而是按字母排序的。
    $ git tag
    # 查看单个标签具体信息
    $ git show
    # 推送一个本地标签
    $ git push origin
    # 推送全部未推送过的本地标签
    $ git push origin --tags
    # 删除本地标签
    # 因为创建的标签都只存储在本地,不会自动推送到远程。
    # 所以,打错的标签可以在本地安全删除。
    $ git tag -d v0.1
    # 删除一个远程标签(先删除本地 tag ,然后再删除远程 tag)
    $ git push origin :refs/tags/<tagname> 比如删除标签v1.3.0:git push origin :refs/tags/v1.3.0

版本切换 & 重设 & 撤销

  • checkout 可以撤销工作区的文件,reset 可以撤销工作区/暂存区的文件

reset 详解

  • git reset --soft (将当前分支的指针指向为指定 commit(该提交之后的提交都会被移除),但保持暂存区和工作区不变)
    • git reset --soft head~1 (表示回退1个版本)
  • git reset --hard origin/master # 将本地的状态回退到和远程的一样

commit提交规范

  • message 格式

    <type>[optional scope]: <subject>
    [optional body]
    [optional footer(s)]

  • eg: git commit -m “feat: 开发新功能”

  • type 用来描述本次提交的改动类型,可选值及对应含义如下:

    build:主要目的是修改项目构建系统(例如 glup,webpack,rollup 的配置等)的提交
    ci:主要目的是修改项目继续集成流程(例如 Travis,Jenkins,GitLab CI,Circle等)的提交
    docs:文档更新
    feat:新增功能
    merge:分支合并
    fix:bug 修复
    perf:性能, 体验优化
    refactor:重构代码(既没有新增功能,也没有修复 bug)
    style:不影响程序逻辑的代码修改(修改空白字符,格式缩进,补全缺失的分号等,没有改变代码逻辑)
    test:新增测试用例或是更新现有测试
    revert:回滚某个更早之前的提交
    chore:不属于以上类型的其他类型

  • 代码库中配套工具

  • 或者采用表情代替

常见问题整理

git上传配置

git上传忽略node_modules目录
  • 在项目的根目录,右键选择 Git Bash 进入命令行;
  • 输入 touch .gitignore
  • 生成 .gitignore 文件;
  • 在文件中输入过滤信息,过滤规则如下,需要可以自行搜索:
  • node_modules/ 表示过滤这个文件夹
  • *.zip 过滤zip后缀文件
  • demo.html 过滤该文件

解决git文件名大小写问题

  • 在windows下,一开始提交了一个planSetList.vue文件,后来把它重命名为PlanSetList.vue再次提交,GitLab库里的文件还是小写没有改动,原来git默认对文件名的大小写不敏感。
  • 解决方案
  1. 设置git库为大小写敏感(不建议)

    git config core.ignorecase true //默认为 true
    git config core.ignorecase false //在git本地库使用这条指令就可以识别大小写,修改完提交后再修改回来

  2. 使用git mv命令(仅当core.ignorecase为true时可用)

    改名工作区/暂存区的文件
    $ git mv [file-original] [file-renamed]
    $ git status
    $ git commit

git 在pull或者合并分支的时候有时会遇到下图这个界面

在这里插入图片描述
可以不管(直接下面3,4步),如果要输入解释的话就需要:

  1. 按键盘字母 i 进入insert模式;
  2. 修改最上面那行黄色合并信息,可以不修改 // 黄色内容为默认的合并信息;
  3. 按键盘左上角"Esc";
  4. 输入":wq",进行修改后保存退出,然后按回车键即可。
  • git commit 也可以进入类似这个窗口,添加多行修改内容,操作流程同上

git克隆项目报错cannot create directory at xxx,filename too long

  • filename too long解决方案
    • git config --global core.longpaths true 全局
    • git config core.longpaths true 当前仓库

利用git commit —amend —no-edit命令修改上一次变更内容

  • 在执行git commit --amend --no-edit之后,hash值由xxxx变成了xxxxxx,但是message内容并没有发生变化,并且最重要的是只有一条commit记录。
  • 如果要修改上一条的message,那么去掉–no-edit选项即可,git commit --amend -m “xxxx”。同理,commit记录同样只会有一条。
  • 示例
    • git reflog 中的记录在这里插入图片描述
    • git log 中的记录在这里插入图片描述

git修改历史提交 commit 信息

  • 修改最后一次commit的信息
    • git commit --amend 进入命令模式,然后按i进入编辑模式,我们修改好commit信息后,按Esc健退出编辑模式,然后:wq保存我们编辑的信息
    • 或者直接用指令
      修改最后一次提交的 commit 信息
      git commit --amend --message="moxify mesxgotest" --author="xaxhx<xxx@xx.com>"
      
      仅修改 message 信息
      git commit --amend --message="mxxxoda oxxxt"
      
      仅修改 author 信息
      git commit --amend --author="zhainanya <xxx@xx.com>"
      
    • 修改最近两个或者两次上的历史commit信息
      • 先查看你要修改的commit 信息
        • git log 查看当前历史区提交的版本号
        • git reflog 包含回滚的历史信息
      • 然后git rebase -i HEAD~2 或者两次以上 找到前几次之前提交的commit
      • 修改的commit id 对应的commit 信息,对应的pick改成e或者edit。按Esc健退出编辑模式,然后:wq保存我们编辑的信息
      • git commit --amend
      • git rebase --continue
      • git push
      #最近 2 条
      git rebase -i HEAD~2
      vi 下,找到需要修改的 commit 记录,```pick```修改为 ```edit```或 ```e```,```:wq```保存退出
      重复执行如下命令直到完成
      $ git commit --amend --message="xxxxxx" --author="zhainanay <zhainanay@xx.com>"
      $ git rebase --continue
      
      中间也可跳过或退出 rebase 模式
      $ git rebase --skip
      $ git rebase --abort
      

      生成密钥和查看密钥

      • 生成密钥
      ssh-keygen -t rsa -C  "上面的邮箱"
      注:执行上面命令后,连续回车3次
      
      • 查看密钥
      cd ~/.ssh
      cat id_rsa.pub
      
      • 检查秘钥
      ssh -T -v git@github.com
      

报错missing change id in commit message

  • 克隆代码库的时候没有安装commit-msg hook导致

  • 或者commit change id 位置不对

    	如果上面不行,试试这样  根路径打开git  Bash here 
    	1.删除hooks文件
    	
    	rm  .git/hooks 
    	
    	2.创建hooks目录
    	
    	 mkdir .git/hooks 
    	
    	3.安装hook
    	
    	scp -p -P 8235 {用户名}@icode.baidu.com:hooks/commit-msg $(git rev-parse --git-dir)/hooks 
    	
    	4.git reset --soft head~1 或者 git reset --soft origin/[branchname] 后重新commit)
    

    git在使用中出现 refusing to merge unrelated histories如何解决?

    因为他们是两个不同的项目,要把两个不同的项目合并,git需要添加一句代码,在git pull,
    这句代码是在git 2.9.2版本发生的,最新的版本需要添加–allow-unrelated-histories
    git pull origin master --allow-unrelated-histories

    需要Pull自己和公司的项目(不同github账号)

    • 需要pull自己和公司的项目,如果你不进行配置用户名和邮箱的话, 则会使用全局的, 这个时候会有一个是错误的.
    • 可以针对其中项目, 在项目根目录下进行单独配置
    • git config user.name “gitlab’s Name”
    • git config user.email “gitlab@xx.com”
    • git config --list
    • git config --list查看当前配置, 在当前项目下面查看的配置是全局配置+当前项目的配置, 使用的时候会优先使用当前项目的配置

配置快捷命令

- 快捷命令
```
git config --global alias.st status  //git status 简化 git st
git config --global alias.co checkout //git checkout 简化 git co
git config --global alias.ci commit //git commit 简化 git ci
git config --global alias.br branch //git checkout 简化 git br
git config --global alias.rg reflog 
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
```
- icode提交审核技巧
```
git config --global alias.gpush '!f() { : push ; r=$1; [[ -z $r ]] && r=origin; b=$2; t=$(awk "{ print \$2 }" $(git rev-parse --git-dir)/HEAD); t=${t#refs/heads/}; [[ -z $b ]] && b=$t; cmd="git push $r HEAD:refs/for/$b%topic=$t"; echo $cmd; echo; $cmd; }; f'
```

sourceTree的遴选(把旧分支提交的几个commit 转移到新分支上)

  • cherry-pick
    将指定的提交 commit 应用于当前分支(可以用于恢复不小心撤销(revert/reset)的提交)
$ git cherry-pick <commit_id>
$ git cherry-pick <commit_id> <commit_id>
$ git cherry-pick <commit_id>^..<commit_id>

强制回退

git reset --hard 514d05ac284xxxxxe13ff26ea1
git push origin HEAD --force

跳过husky钩子检查

 git push --no-verify

Git提交代码解决报错

  1. pre-commit 报错
    .git/hooks/pre-commit: line 2: ./node_modules/_pre-commit@1.2.2@pre-commit/h
    
    // 执行以下命令,回车即可
    npx husky install
    

常见的DOS命令-cmd

打开cmd的方式

1.找到文件夹路径,在文件资源路径的位置输入cmd,然后回车;在此文件夹中操作文件或是内容;
2.window+R: 快捷打开DOS窗口;
3.在搜索框中输入cmd,然后回车;

dos指令

• cd …/ 返回上一级
• cd + 文件夹: 打开对应的文件夹:该文件夹必须在该目录下,否则系统找不到该路径
• F: 区: 换区操作
• win+R 快速打开DOS窗口
• cd \ 返回到根路径
• mkdir + 文件名 创建一个文件夹
• cls 清空命令行

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值