代码库 - git管理工具

安装git

3种状态

分别为:工作区、暂存区、Git仓库。

命令查询(git status)

  • Changes not staged for commit:被修改,待添加到缓冲区(add)
  • Changes to be committed:暂存(缓冲)区,待提交(commit)
  • Untracked files:新建的文件,未被监管,首次添加

文件标注

  • M: 文件内容或者mode被修改了,最常见

  • U: 新增文件,未添加到暂存区

  • A: 新增文件,已添加到暂存区

  • D: 已经被删除的文件,一般显示在提交记录中

基本命令

  1. git init:初始化

  2. git clone 远程仓库链接:首次检出 clone

  3. git add 文件名:添加暂存(缓冲)区(状态A),.是所有文件,

  4. git commit -m: 提交 暂存区=>本地仓库,提交规则忽略加 --no-verify

    git commit -m "feat:提交日志信息"  // feat是提交类型,见下文
    git commit -m "feat:提交日志信息" --no-verify
    
  5. git pull:拉取,远程仓库→本地仓库

  6. git push:推送,本地仓库→远程仓库,
    语法:git push < remote > < branch >
    < remote > 表示远程仓库名字,一般默认名字为 origin;
    < branch > 表示要推送的分支,这里是 master 分支。所以完整的命令如下:

    git push origin master
    
  7. git checkout -b 分支名称:创建并切换

    • git branch testing:仅创建

    • git checkout testing:切换

  8. 本机全局 git 用户名设置:git config --global user.name “用户名”

  9. 本机全局 git 邮箱设置: git config --global user.email “email” ,

  10. 查看全局用户名、邮箱 或其他信息:git config --list

  11. 针对单个项目设置 git 提交信息:.git\config中配置,如下:

[user]
name = 666
email = 123666@163.com

git config --list:也可以打开全局配置文件gitconfig文件查看,如果没有针对项目设置信息,默认使用全局用户信息

进阶命令

更多命令查看官方总览 或者 其他第三方

  1. git branch -a:所有分支

  2. git branch -d 分支名称:删除本地指定分支

  3. git branch orgin --delete 分支名:删除指定远程分支

  4. git push --set-upstream origin 远程分支:推送至远程

  5. git branch --set-upstream-to=origin/远程分支名称:关联远程分支(不存在则创建)

  6. git branch -u origin/远程分支名称:本地关联远程已存在的分支

  7. git branch --unset-upstream:取消本地和远程分支的关联

  8. git branch -vv:查看本地/远程分支情况,映射情况, *为当前分支

  9. git branch:本地分支列表

  10. git branch -r:远程分支列表

  11. git branch --merged 当前分支:列出合并到当前的分支

  12. git branch --merged master:只列出已经合并到master的分支

  13. git log:详细操作信息(不含删除等)–pretty=oneline,简化信息

  14. git reflog:简化的所有分支所有信息,包括被删除的版本或者回退

  15. git merge a:a分支合并到当前分支

  16. git reset --hard 版本号:版本回退

  17. git -v:版本查看

  18. git push -f orgin 远程分支名:强制推送

  19. git status:查看文件状态,

  20. git stash:工作区暂存,跨分支工作

  21. git diff dev master --stat 或者 git log dev ^master:分支差异比较

    • 如果没有输出,通常为没有差异, 退出查看状态:英文q退出

    • git diff dev master --stat file.txt: 加文件名,能够查看 file.txt 这个文件在两个分支之间的差异摘要信息

  22. git log master..dev # since..until,包含了在dev分支而不在master分支中所有的提交,若无结果,说明一致

常用提交类型

严格程度根据项目提交要求定,甚至可以没有要求。严格情况下,不符合要求会导致提交(push)失败

  • 语法:git commit -m type: description
    • type : commit 的类别
    • description:提交信息描述,推荐以动词开头,如: 设置、修改、增加、删减、撤销等

type 常用类型

  • feat : 新功能
  • fix : 修复bug
  • add: 新功能
  • update: 更新
  • docs : 文档改变
  • style : 代码格式改变
  • refactor : 某个已有功能重构
  • perf : 性能优化
  • test : 增加测试
  • build : build工具发生变化, 如 grunt换成了 npm
  • revert : 撤销上一次的 commit
  • chore : 构建过程或辅助工具的变动

常见问题

commit取消
git commit -m 'initial commit'   // 正常提交
git add forgotten_file   // 又修改了文件,进行add添加
git commit --amend   // 执行后,i编辑信息,esc:wq保存,enter,正常push
  • git commit --amend之前可以是其他命令,编辑的信息替代initial commit 信息, 最终只会有一个提交——第二次提交将代替第一次提交的结果
暂存取消(取消add)
  • 语法:git reset HEAD < file >… 如取消暂存 readme.txt 文件

    git reset HEAD readme.txt
    
用户名邮箱配置

用户名一般在首次clone时自动弹出,后续不再弹出,如果后续要改动:

  • 配置用户名称:git config --global user.name “用户名”

  • 配置用户邮箱:git config --global user.email “邮箱”

  • 以上执行不能配置,可以直接删除本地git账户凭证,正常提交会再次弹出填写用户名和邮箱(控制面板-用户账户-凭据管理器,删除git相关凭据)

gitignore忽略上传

在.git文件所在的目录创建 .gitignore 文件。

# 忽略.class后缀的所有文件
*.class

# 忽略名称中末尾为ignore的文件夹
*ignore/

# 忽略名称中间包含ignore的文件夹
*ignore*/

# 忽略多层嵌套node_modules
**/node_modules/**
    
# 忽略指定文件
.env.local

gitignore文件不生效的解决办法

对于已经进行过git add操作的目录,如果新添加了.gitignore文件,则在进行git commit时,.gitignore文件不会生效的;
解决办法如下:

# 删除在暂存区中的缓存
git rm -r --cached .

# 重新提交
git add .
git commit -m 'update .gitignore'

冲突问题

冲突解决:选择指定内容,add、commit、push

  • Accept Current Change: 本地仓库代码;

  • Accept Incoming Change: 远程仓库代码;

  • Accept Both Changes: 两者都保存(合并);

  • Compare Changes: 打开本地和远程对比窗口;

本地分支间冲突特殊解决:冲突解决中的异常窗口,是系统让输入冲突日志信息,可不用输入,直接退出该模式,退出方式:按i键,再按ESC键,输入:wq,然后回车;

  • i:编辑,esc:退出编辑,:wq保存退出,回车执行

在这里插入图片描述

git推送验证
  1. commit 失败,一般有提交验证,简单的方法(偏方)是添加–no-verify,
git commit -m "xxxxx" --no-verify
  1. 在推送远程时,有时遇到换行方式问题,远程只能是LF,本地是CRLF(window)
  • 解决一:将本地换行方式也使用LF
// settings.json
{
  "files.eol": "\n",
  "prettier.endOfLine": "lf"
}
第一种为编辑器自带(可单独配置)
第二种为prettier插件格式化配置
作用于之后的创建的文件,之前的还是需要进行一次手动更改。
  • 解决二:git 推送时转换为LF,拉取时再转回CRLF,执行如下命令
git config --global core.autocrlf true

git 命令报错问题

1. git add . 失败
warning: LF will be replaced by CRLF in 文件.
The file will have its original line endings in your working directory

  • 解决:git config --global core.autocrlf false

2. git branch --set-upstream-to=origin/develop,本地关联远程失败
error: the requested upstream branch ‘origin/develop’ does not exist

  • 解决:git pull origin master --allow-unrelated-histories
  • git branch --set-upstream-to=origin/master master

3. 无权限/SSH 克隆失败:在git push origin master或者pull时失败

  • git config --global user.name “yourname”
  • git config --global user.email“your@email.com"
  • 删除.ssh文件夹(直接搜索该文件夹)下的known_hosts(手动删除即可,不需要git)
  • ssh-keygen -t rsa -C “your@email.com”(请填你设置的邮箱地址),(执行后再次输入地址)
  • 出现:Generating public/private rsa key pair.Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa): 回车
  • 系统会自动在.ssh文件夹下生成两个文件,id_rsa和id_rsa.pub,用记事本打开id_rsa.pub,复制全部内容
  • 登录远程仓库,在设置中添加一个新的SSH keys
  • ssh -T git@远程仓库地址,如github.com,或私有仓库地址,(提示输入yes,提示Welcome to xxxx成功)
  • 重新克隆远程仓库

4. The requested URL returned error: 500

  • 网络上的办法基本没啥用,大多数牛口不对马嘴,看起来有作用,实际就是偶然莫名其妙好了,
  • 多为网络波动,去网站上将账号登出,尝试重新登陆,登陆不上就是波动中,过段时间尝试能登陆上就好了

**5. 报错 remote:HTTP Basic:Access denied fatal:Authentication failed for ‘https://XXXXXXXXX’: **

  • 大致就是访问远程仓库访问失败,身份验证未通过
  • 产生原因:本机账户密码过期必须修改,而远程和本地都是关联的本机,登陆远程仓库发现以前的密码登陆不上,而是使用更改后的密码
  • 核心原因:账户密码问题(不管是什么原因,主要原因便是登陆的远程仓库密码更改,之前关联的账户和密码自然也就不存在)
  • 解决:网上有很多命令的方法,核心就是修改凭证,我使用简单粗暴的方法就是直接删除本地凭证,再执行命令时就会弹出登陆验证,输入更改后的信息,自动重新创建即可。
  • 删除本地凭证:控制面板-用户账户-管理windows凭据-普通凭据-对应的账户网址凭证,(一般会有两个,一个是网站凭证,一个是登陆这个网站的用户凭证,按理应该删除带用户的就行,我是都删了)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值