Git常见问题及解决方案
1.执行git commit -m "中文"后出现乱码,需要进行如下设置
git config --global i18n.commitencoding utf-8
2.修改项目后提交代码
- git add .
-
- git commit -m "最新提交"
- #查看状态
- git status
-
- git push
2.1 git add .有问题,想撤销,则
- #两种情况:
- git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了
- git reset HEAD XXX/XXX/XXX.java 就是对某个文件进行撤销了
2.2 git commit后想撤销,但是需要保留git add . 的操作
git reset --soft HEAD^
2.3 git push 报错,提交不上去
例如:报错内容如下
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
git push -u origin master -f
2.4.删除文件后需要 git add -A, 光 git add. 不行,区别如下:
git add 的几种参数区别
git add -A 保存所有的修改
git add . 保存新的添加和修改,但是不包括删除
git add -u 保存修改和删除,但是不包括新建文件。
2.5 有时候代码明明git commit成功了,但是pull后却提示Anything to update,git log也有日志提交记录,这可能是由于没有关联远程仓库的事情
- #新增远程仓库地址,如果不确定远程仓库地址是否存在,那也可以执行下面命令,存在会给予提示
- git remote add origin 远程仓库地址
-
- #关键的一步
- git pull origin master --allow-unrelated-histories
-
- #本地仓库也远程仓库关联
-
- git branch --set-upstream-to=origin/master master
如果不执行git pull origin master --allow-unrelated-histories,直接执行git branch --set-upstream-to=origin/master master,可能会出现如下错误
- $ git branch --set-upstream-to=origin/master master
- error: the requested upstream branch 'origin/master' does not exist
- hint:
- hint: If you are planning on basing your work on an upstream
- hint: branch that already exists at the remote, you may need to
- hint: run "git fetch" to retrieve it.
- hint:
- hint: If you are planning to push out a new local branch that
- hint: will track its remote counterpart, you may want to use
- hint: "git push -u" to set the upstream config as you push.
3.git在push/commit时需要设置user.name和user.email,否则会报错
- git config user.name "newName"
- git config user.email "newEmail"
-
- #查看设置的user.name和user.email
- git config user.name
- git config user.email
需要修改user.name和user.email见https://blog.csdn.net/feeltouch/article/details/89290949
4.删除远程分支
#当前目录在/e,切换到要删除的目录temp
cd temp
#切换到master分支
git checkout master
#查看所有分支
git branch -a
#删除分支
git push origin --delete temp
最后输入密码即可
5.下载git项目
git clone -b 分支名 git地址 下载后本地的项目名
6.如果在没有更新远程分支到本地,但是执行提交代码操作后(本文2),就会出现如下错误
遇到问题:
|
执行如下命令即可:
如果不执行git stash的话会报如下错误,是因为有未提交的修改,而rebase 在拉代码前要确保你本地工作区是干净的
|
#暂时保存修改
git stash
git rebase origin/master
git pull --rebase
#提交内容到远程分支
git push origin master
注意:git pull --rebase的命令作用如下:
a.把你 commit 到本地仓库的内容,取出来放到暂存区(stash)(这时你的工作区是干净的)
b.然后从远端拉取代码到本地,由于工作区是干净的,所以不会有冲突
c.从暂存区把你之前提交的内容取出来,跟拉下来的代码合并
6.1 git stash 遇到的坑
由于没有执行任何操作 如 git add和git commit 就执行 git stash【执行6的完整操作】 就会出现本地编写代码消失,导致工作重做
可以采取如下方法进行恢复本地代码
a 进入目录 项目名\.git\logs\refs
b 打开图片所示stash文件,
c 里面会出现如下字符串 eb0b60ad2c9a142b161e147dd5d2c4d24405a151
#确认是否是消失的代码
git show eb0b60ad2c9a142b161e147dd5d2c4d24405a151
d 是的话执行 git stash apply eb0b60ad2c9a142b161e147dd5d2c4d24405a151 进行恢复
7.拉取远程分支上面的代码
|
7.1 git pull origin master后,报如下错误,本地修改与远程冲突:
|
- #保存本地快照
- git stash
- git pull origin master
- #恢复快照中代码
- git stash pop
如果不想保存本地修改,拉取远程代码:
- git reset --hard
- git pull origin master