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),就会出现如下错误

     遇到问题:

On branch master                                                                
Your branch and 'origin/master' have diverged,                                  
and have 1 and 2 different commits each, respectively.                          
  (use "git pull" to merge the remote branch into yours)                        
                                                                                
Changes to be committed:                                                        
  (use "git reset HEAD ..." to unstage)                                   

    执行如下命令即可:

        如果不执行git stash的话会报如下错误,是因为有未提交的修改,而rebase 在拉代码前要确保你本地工作区是干净的

error: cannot rebase: You have unstaged changes.                                
error: Please commit or stash them.

  #暂时保存修改

    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.拉取远程分支上面的代码

   

git pull origin master


7.1 git pull origin master后,报如下错误,本地修改与远程冲突:

error: Your local changes to the following files would be overwritten by merge
   #保存本地快照
   git stash  
   git pull origin master
   #恢复快照中代码  
   git stash pop 

如果不想保存本地修改,拉取远程代码:

git reset --hard 
git pull origin master

 

你可能感兴趣的:(git,git)