git 常用命令和问题

本文档多为个人学习生活中最常用到的命令汇总,和遇见的问题及解决方案,大部分在其他网络博客或文章中都有提及,只是每次碰到相同问题还是要重新查文档,很不方便,因此将遇到的问题汇总至本文档里。方便学习和查找。

推荐资料

git简易指南open in new window

常用git命令清单 阮一峰open in new window

设置全局用户名和邮箱

git config --global -l
git config --global user.name "xxx"
git config --global user.email xxx@163.com

设置当前项目用户名和邮箱

git config --local -l
git config --local user.name "xxx"
git config --local user.email xxx@163.com

新建本地仓库并链接远程仓库

git init
git remote add origin git@xxx.git
git branch --set-upstream-to=origin/master master

删除本地仓库

rm -rf .git

提交通用步骤

git add .
git commit -m "first commit"
git pull origin master
git push -u origin master

合并分支

// A想合并B, 先切换到A分支
git checkout A
git merge origin/B                

git 暂存管理

git stash                暂存  
git stash list           列所有stash
git stash pop            取出暂存

辅助查看命令

git --version         查看git版本
git config --list     查看配置信息
git status            查看状态
git diff              查看差异        
git log               查看日志
git remote            查看远程仓库名
git branch -a         查看远程所有仓库

commit 模版

fixed 修复问题

git commit -m"
  fix: 解决……的问题
  产生原因:
  解决方案:
  影响范围:
  Bug地址:
  to #12345678
"

简写:git commit -m"fix: 解决…问题 (fix #12345678)”

feat 新增需求

git commit -m "
  feat: 新增需求
  需求功能点:
  1. 
  2. 
  修改内容:
  影响范围:
"

提交类型

feat     新增功能
fix         修复bug
docs     修改文档
style     修改样式
refactor 代码重构
perf     性能优化
test     测试用例
chore     构建流程、增加依赖库、工具
revert      代码回滚
merge     代码合并
sync     同步主线或分支Bug

git 常见问题

error: unable to read SDK settings

# unable to read SDK settings for '/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk'
xcode-select --install

fatal: No such remote 'origin

git remote add origin git@xxx.git

fatal: remote origin already exists

git remote remove/rm origin
git remote add origin git@xxx.git

# or
git remote set-url origin xxxxx

fatal: refusing to merge unrelated histories

git pull origin master --allow-unrelated-histories

# 合并冲突后
git pull origin master

# 合并冲突后
git push --set-upstream origin master

fatal: Authentication failed for

问题场景: 电脑A有添加ssh,可正常使用ssh形式的链接拉取仓库代码;电脑B未添加ssh,想要拉去远端仓库,只能使用http像是链接;在使用http像是链接时需要输入用户名和密码,则很容易出现上述问题。

问题原因: 在使用http形式输入密码时出错,系统缓存了错误密码,且不再重复提示输入密码,而导致每次都提示认证失败。

Window解决: window系统解决方案可参考此文章:https://www.jianshu.com/p/b23cd00cffa6open in new window

Mac解决方案: 本人使用Mac电脑出现上述问题,上网搜索尝试过多种方案,都未成功,后来误打误撞,竟然解决了,这里贴下解决过程。

第一步:在git上创建项目令牌,此处已本人使用的企业版coding为例 git-02

第二步:使用项目令牌拼接如下格式url

const setting = {
  tokenname = '项目令牌用户名',
  token = '项目令牌密码',
  platform = 'e.coding.net',
  username = 'git用户名',
  repo = '仓库名称',
}
const remote = `https://${setting.tokenname}:${setting.token}@${setting.platform}/${setting.username}/${setting.repo}.git`;

第三步:git命令使用新url直接clone代码或者重新设置remote后pull、push代码均可正常使用。查看Mac钥匙串程序,可以看到如下凭证。 git-03