git 常见问题
收集 git
常见问题
# remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
翻译:远程:对密码身份验证的支持已于 2021 年 8 月 13 日删除。请改用个人访问令牌。
这是由于 GitHub 目前已不支持密码形式通过命令行操作了,改成访问令牌的形式了
所以我们需要先生成一个个人访问令牌并复制
具体操作可以查看官方文档:Creating a personal access token - GitHub Docs (opens new window)
接下来就需要将密码更新为令牌了
# 方法一:
mac: 在钥匙串应用中,右上角查找 github
, 在结果中双击 github.com
, 勾选显示密码,用复制的令牌替换原来的密码,搞定
或者右键删除,再执行 push
时需要输入用户名和密码,用户名就是 GiuHub
的用户名,密码就是复制的令牌
windows: 打开控制面板 >> 用户账户 >> 凭据管理器 >> Windows 凭据 >> 删除对应的 git 凭据 (opens new window)
# 方法二:
在本地更新来源的 URL: git remote set-url origin https://<token>@<git_url>.git
拉取一次:git pull https://<token>@<git_url>.git
# git 中 fatal: Authentication failed 的问题
# 方法一:
git config --global --replace-all user.email "输入你的邮箱"
git config --global --replace-all user.name "输入你的用户名"
2
这个方法在 mac
上行的通,但是如果是 windows
好像不太好使
# 方法二:打开控制面板 >> 用户账户 >> 凭据管理器 >> Windows 凭据 >> 删除对应的 git 凭据 (opens new window)
# 方法三:
git config --system --unset credential.helper
# git pull 报错:Auto Merge Failed; Fix Conflicts and Then Commit the Result.
# 出错场景
协同开发时,我们从远程服务器上 pull
下代码的时候,出现以下提示信息:
Auto Merge Failed; Fix Conflicts and Then Commit the Result.
# 原因分析
分析 git pull
的原理,实际上 git pull
是分了两步走的:
- 从远程 pull 下 origin/master 分支
- 将远程的 origin/master 分支与本地 master 分支进行合并
以上的错误,是出在了第二步,本地与远程文件合并时存在冲突
# 解决方法
方法一:如果我们确定远程的分支正好是我们需要的,而本地的分支上的修改比较陈旧或者不正确,那么可以直接丢弃本地分支内容,运行如下命令 (看需要决定是否需要运行 git fetch
取得远程分支):
git reset --hard origin/master
# 或者
git reset --hard ORIG_HEAD
2
3
方法二:我们不能丢弃本地修改,因为其中的某些内容的确是我们需要的,此时需要对 unmerged
的文件进行手动修改,删掉其中冲突的部分,然后运行如下命令:
git add filename
git commit -m "message"
git push origin master
2
3
方法三:如果我们觉得合并以后的文件内容比较混乱,想要废弃这次合并,回到合并之前的状态,那么可以运行如下命令:
git reset --hard HEAD
# git warning: LF will be replaced by CRLF in 解决办法
# 出错场景
在使用 git
的时候,每次执行
git add "目录"
或者
git add .
都会提示这样一个警告消息:
warning: LF will be replaced by CRLF in XXXXXXXXXXXXXX.
# 原因分析
CRLF -- Carriage-Return Line-Feed
回车换行,就是回车 (CR, ASCII 13, \r
) 换行 (LF, ASCII 10, \n
).
这两个 ACSII
字符不会在屏幕有任何输出,但在 Windows
中广泛使用来标识一行的结束。而在 Linux/UNIX
系统中只有换行符。
也就是说在 windows
中的换行符为:CRLF
, 而在 linux
下的换行符为:LF
使用 git
来生成一个 rails
工程后,文件中的换行符为 LF
, 当执行 git add .
时,系统提示:LF
将被转换成 CRLF
# 解决方法
删除生成的 .git
文件
rm -rf .git
git config --gobal core.autocrlf false
2
这样系统就不会去进行换行符的转换了
最后重新执行
git init
git add .
2
但我在实践中发现:直接运行 git config --gobal core.autocrlf false
, 不用删除生成的 .git
文件也可以,当然也不用执行 git init
# nothing added to commit but untracked files present
# 问题
Untracked files:
../target/
../zblog.iml
nothing added to commit but untracked files present
2
3
4
大致的意思是说文件被追踪,但是没有被添加 git
中。
# 解决方案
# 1. 不想提交文件
添加 git
忽略文件 .gitignore
将不想提交的文件写入到 .gitignore
文件中。记得要把 .gitignore
也添加进来
主要步骤:
git status
列出当前目录所有还没有被git
管理的文件和被git
管理且被修改但还未提交 (git commit
) 的文件。git status On branch master Your branch is up-to-date with 'origin/master'. Untracked files: (use "git add <file>..." to include in what will be committed) /target/ zblog.iml nothing added to commit but untracked files present (use "git add" to track)
1
2
3
4
5
6
7
8将要忽略的文件写入到
.gitignore
vim .gitignore
追加如下内容(根据自己的提示添加)
/target/ zblog.iml
1
2
PS: 注意实际路径可以用 * 模糊操作
# 2. 想提交文件
git status
列出当前目录所有还没有被git
管理的文件和被git
管理且被修改但还未提交 (git commit
) 的文件。git status On branch master Your branch is up-to-date with 'origin/master'. Untracked files: (use "git add <file>..." to include in what will be committed) /target/ zblog.iml nothing added to commit but untracked files present (use "git add" to track)
1
2
3
4
5
6
7
8将这些文件或文件夹 add 进去
git add /target/. git add zblog.iml
1
2
PS: git add
一次可以添加多个文件,如:git add a.html b.html c.html
# fatal: Not possible to fast-forward, aborting.
使用命令:git pull --rebase
git - Fatal: Not possible to fast-forward, aborting - Stack Overflow (opens new window)
- 01
- 搭配 Jenkins 实现自动化打包微前端多个项目09-15
- 02
- 自动化打包微前端多个项目09-15
- 03
- el-upload 直传阿里 oss 并且显示自带进度条和视频回显封面图06-05