首页 > 技术文章 > Git 使用教程,使用中遇见的各种问题及解决办法。持续更新!

wangchengxu 2020-12-25 14:23 原文

缘由:Git使用中遇到了一些问题

  • 包括Git普通操作及错误处理

一、Git修改提交代码用户名及邮箱

1. 修改提交代码的用户名以及提交邮箱(使用命令修改git的用户名和提交的邮箱)

  • 修改全局命令分别为:
git config  --global user.name 你的目标用户名
git config  --global user.email 你的目标邮箱名
  • 修改当前的 project的命令为:
git config user.name 你的目标用户名
git config user.email 你的目标邮箱名

使用命令修改提交代码的用户名以及提交邮箱,一劳永逸

2. 修改提交代码的用户名以及提交邮箱(修改.git/config文件)

  • 进入工程.git文件夹
  • vim config, 在config文件末行添加用户名及邮箱
[user]
         name = xxx
         email = xxx@xxx

二、Git 分支查看与切换/删除

1. 查看所有分支

git branch -a

2. 查看当前使用分支(结果列表中前面标*号的表示当前使用分支)

git branch

3. 创建一个叫做“feature_x”的分支,并切换过去

git checkout -b feature_x

4. 删除分支

git branch -d 分支名

5.切换分支

git checkout 分支名
git checkout 分支名 --

6. 除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的

git push origin <branch>

三、Git合并分支操作及合并错误解决办法

1. 在新建分支上提交代码并提交远程仓库,先新建分支,在新建分支上提交代码到远程仓库

git checkout -b 分支名
git status
git add .
git commit -m 'xxx'
git pull
git push origin 分支名:远程仓库名

可以直接新建分支和远程仓库进行提交,如下例:
git checkout -b test
git push origin test:test

2. 合并两个分支的内容

git checkout 此次提交代码的分支名 --
git status
git add .
git commit -m 'xxx'
git checkout 此次需要合并的分支名      
git merge 此次提交代码的分支名

以上就完成了两个分支的合并

3. Git合并分支出现|MERGING,解决办法

  • 输入以下命令可以正常跳转回master分支,并取消合并
git reset --hard head
  • 正常流程是手动修正合并冲突后, 然后提交修改
git commit -m '修正合并'
git pull
git push

四、Git pull/push错误

1. 解决git push error: failed to push some refs to ... 错误

  • 出现错误的原因是github中的README.md文件不在本地代码目录中,也就是说我们需要先将远程代码库中的任何文件先pull到本地代码库中,才能push新的代码到github代码库中。
  • 先将远程代码库中的任何文件先pull到本地代码库
git pull --rebase origin master
  • 再次进行上传
git push -u origin master

2. Git分支变为master | REBASE 1/1且代码乱码

  • 使用git rebase --abort 进行代码回退
git rebase --abort

3. error: failed to push some refs to 'https://xxx.git'解决办法

  • 出现原因:git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去。
  • 方法1(强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容)
git push -f
  • 方法2(先把git的东西fetch到你本地然后merge后再push)
git fetch
git merge
这2句命令等价于git pull

4. 提示有未提交的更改,无法pull

  • 使用 git checkout . 进行未提交代码的回退,然后再执行 git pull 即可成功
git checkout .      # 撤销对所有已修改但未提交的文件的修改,但不包括新增的文件
git checkout [filename]     # 撤销对指定文件的修改,[filename]为文件名

已经add/ commit 的文件不适用个方法

git reset --hard [commit-hashcode]  

[commit-hashcode]是某个 commit 的哈希值,可以用 git log 查看, 以上命令可以回退到任意已经提交过的版本。已经 add / commit 但未 push 的文件也适用

五、git其他普通操作

1. git clone指定tag版本下的代码

git clone --branch  tags  git地址

例: git clone --branch v1.1.0 https://github.com/xxx-projects/xxx.git

2. git diff查看指定文件修改信息

git diff test

以上命令表示查看test文件的修改信息

3. git log查看工程的git提交记录

git log

4. git commit -m 时提示代码有错误或不规范的地方(一般是启用了代码检查,如eslint)

  • 方法1 提交的时候执行git commit --no-verify -m "提交备注" 即可以跳过代码检查,继续进行pull和push
git commit --no-verify -m "忽略代码检查"
git pull
git push
  • 方法2 创建编辑 .eslintignore文件
在项目的根目录创建一个.eslintignore文件,该文件里面写取消检测的文件夹或者是文件
例如:取消整个src文件夹下的所有文件的代码检测,就可以在.eslintignore文件写一个src即可

5. 每次git pull 和git push 提示输入账号和密码

  • 按要求输入账号密码后执行以下命令,将下次弹框的账号和密码保存起来,永久使用
git config --global credential.helper store
  • 如果需要清除该账号和密码,使用如下命令
git config --global credential.helper reset
  • 临时存储(默认15min),使用如下命令
git config --global credential.helper cache

6. 生成ssh公钥

ssh-keygen -t rsa -C "xxx@xxx.com"

Computer science and software engineering have always been my passion

推荐阅读