【git】解决本地仓库与远程仓库不一致问题

目录

方法1:(未验证)

方法2:(验证过)

方法3:常规

1.将远程仓库代码拉取到本地作为本地的一个新的分支 temp

2.将这个temp的分支与我们的主分支对比查看有什么不同,有那些冲突

3.将新的temp分支与本地主分支合并

4.重新提交本地主分支到远程仓库

5、删除分支

方法4、未进行commit时

 1、存储当前分支下的所有改动

2、查看现有stash

3、应用指定的stash到工作区,但不删除该stash

4、扩展:

4.1释放最近一次保存的内容,并且将该次保存的内容出栈(即将栈顶出栈,释放最近一次保存的内容后将该次保存内容删除)

4.2存储指定的文件修改

4.3查看某一个压栈修改了哪几个文件

4.4查看指定存储的修改内容

4.5 删除所有缓存的stash


忘记pull代码到远程仓库,使用pull报错:error: Your local changes to the following files would be overwritten by merge:

如果不想刚刚写的代码被覆盖掉,可以这样解决:

方法1:(未验证)

如果你想保留刚才本地修改的代码,并把git服务器上的代码pull到本地(本地刚才修改的代码将会被暂时封存起来)

git stash
git pull origin master
git stash pop

如此一来,服务器上的代码更新到了本地,而且你本地修改的代码也没有被覆盖,之后使用addcommitpush 命令即可更新本地代码到服务器了。

方法2:(验证过)

如果你想完全地覆盖本地的代码,只保留服务器端代码,则直接回退到上一个版本,再进行pull

git reset --hard
git pull origin master

注:其中origin master表示git的主分支。

方法3:常规

1.将远程仓库代码拉取到本地作为本地的一个新的分支 temp

git fetch origin master:temp 

 拓展:

  git branch 不带参数:列出本地已经存在的分支,并且在当前分支的前面加“*”号标记。

  git branch -r 列出远程分支,例如:

  git branch -a 列出本地分支和远程分支,例如:

  

  git branch -m | -M oldbranch newbranch 重命名分支,如果newbranch名字分支已经存在,则需要使用-M强制重命名,否则,使用-m进行重命名。

2.将这个temp的分支与我们的主分支对比查看有什么不同,有那些冲突

git diff temp

3.将新的temp分支与本地主分支合并

git merge temp

如果有不能自动合并的冲突文件,则需要自己打开并修改。冲突文件的基本格式是<<<<<<<到=======是在当前分支合并之前的文件内容,=======到>>>>>>> 是在其它分支下修改的内容需要在这个两个版本中选择一个,然后把标记符号也要一起删除。

手动解决完冲突就可以push到远端分支了。
 

4.重新提交本地主分支到远程仓库

git push -u origin master

5、删除分支

git branch --delete temp
# 命令删除本地分支

# 这个好像也可以
git branch -D temp  //删除本地temp分支

扩展:

利用“git push origin --delete branch”命令删除远程分支;

利用“git branch --delete --remotes”命令删除追踪分支。

方法4、未进行commit时

通常我们会遇到这样的场景,自己在实现一个功能但又没做完,这时候又需要修改bug,我们不想现在就提交自己的修改增加太多无用的日志记录,但不交以后又无法回到这个状态。这时可以使用git stash命令,将本地的工作区的内容保存并回到前一次commit后的状态。

 下面的这个是一个小整理,先看下面的1-2-3-4这个部分之后,再看这个命令

# 保存当前未commit的代码
git stash

# 保存当前未commit的代码并添加备注
git stash save "备注的内容"

# 列出stash的所有记录
git stash list

# 删除stash的所有记录
git stash clear

# 应用最近一次的stash
git stash apply

# 应用最近一次的stash,随后删除该记录
git stash pop

# 删除最近的一次stash
git stash drop

 1、存储当前分支下的所有改动

git stash save -m "标识注释"

2、查看现有stash

git stash list

3、应用指定的stash到工作区,但不删除该stash

git stash apply 对应stash的名字  # 上面的标识

# 或者
 git stash apply stash@{0}


删除则是将apply换成drop

拓展:

默认情况下,git stash会缓存下列文件:

        添加到暂存区的修改
        Git跟踪的但并未添加到暂存区的修改

但不会缓存以下文件:

        在工作目录中新的文件
        被忽略的文件

4、扩展:

4.1释放最近一次保存的内容,并且将该次保存的内容出栈(即将栈顶出栈,释放最近一次保存的内容后将该次保存内容删除)

git stash pop

4.2存储指定的文件修改

git stash push .../.../ .../.../ .../.../

     /.../...为你想要存储的修改的文件路径,当你修改了很多文件,但是你只想存储部分修改的文件,即可在git stash push 后面添加路径,如果是多个文件,在这些文件路径之间添加空格即可

4.3查看某一个压栈修改了哪几个文件

当存储的修改过多时,你可能会忘记某次存储修改了什么文件,想要查看某次存储修改了哪些文件可以使用git stash show stash@{0}命令,stash@{0}为最近存储的修改,想要看其他的存储只需要改stash@{0}的数字,如stash@{5}.如上图我是先使用git stash list 查看存储列表,然后使用git stash show stash@{0}命令查看第一个修改,可以看到在最近的一次修改存储中我只修改了一个文件test.txt。

git stash show stash@{0} 

4.4查看指定存储的修改内容

如果想查看某次存储修改的所有内容,而不是仅仅查看修改了什么文件,例如查看最近一次存储修改的所有文件和内容,可以使用git stash show -p stash@{0}命令查看。

git stash show -p stash@{0}

4.5 删除所有缓存的stash

git stash clear

猜你喜欢

转载自blog.csdn.net/legend818/article/details/130065179