Git 使用教程,使用中遇见的各种问题及解决办法。持续更新!
缘由: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 branchName
删除当前分支外的所有分支:
git branch | xargs git branch -d
删除分支名包含指定字符的分支:
git branch | grep 'dev*' | xargs git branch -d
该命令将会删除分支名包含'dev'字符的分支
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 的文件也适用
5. 回退已经提交到远程仓库的代码
- git log查看提交记录
- 复制需要回退到的commit-hashcode
- git push --force同步回退代码到远程分支
- git log查看提交记录, 确认是否回退成功
git reset --soft [commit-hashcode]
commit-hashcode应该是要回退到的提交commit-hashcode,而不是当前想要撤销的提交记录commit-hashcode
git push --force
git log
使用git push --force同步回退代码到远程分支, git log查看提交记录, 确认是否回退成功, 这个时候我们看远程分支上之前的提交已经撤销了。修改暂存到了本地。
6. 保持当前分支, 并将当前分支合并到远程的其他分支
例如保持当前分支为 VX-XXXXX-feature_xxx_interface 的情况下,将该分支的更改合并到远程的 xxx-team_202xxxxx分支。可以使用以下步骤:
将本地分支的更改合并到远程的 xxx-team_202xxxxx 分支
git push origin VX-XXXXX-feature_xxx_interface:xxx-team_202xxxxx
这条命令将把本地的 VX-XXXXX-feature_xxx_interface 分支的更改合并到远程的 xxx-team_202xxxxx分支,而不会改变当前所在的分支。
7. 解决The following untracked working tree files would be overwritten by checkout错误
别用git clean, 谁让你用git clean谁就是个害人精!!!这命令要慎用,因为执行了这个命令之后,会将未跟踪的文件删除掉
可以使用git checkout -- [file]命令
或者按照下面执行:
1.执行git reflog
2.git reset --hard 6e8d3e3(指定commit的sha码)
如果效果还不理想的话,采用终极命令
git fsck --lost-found
五、git其他普通操作
1. git clone指定分支/tag版本下的代码
git clone --branch test git地址
git clone --branch tags git地址
例: git clone --branch test https://github.com/xxx-projects/xxx.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"
六、git config查看配置
- config 配置有system级别 global(用户级别) 和local(当前仓库)三个 设置先从system-》global-》local 底层配置会覆盖顶层配置 分别使用--system/global/local 可以定位到配置文件
1. config 配置指令
git config
2. 查看系统config
git config --system --list
3. 查看当前用户(global)配置
git config --global --list
4. 查看当前仓库配置信息
git config --local --list
Computer science and software engineering have always been my passion
作者:游弋在冷风中
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.