Git checkout 远程分支和 git pull 覆盖本地修改

Git checkout 远程分支和 git pull 覆盖本地修改

同事给我分享了他的代码。他把一个 test 分支通过 git push origin test 命令提交到远程仓库。应该怎么样才能够把这个代码下载到本地电脑上呢?
author
Wonderhows March 15, 2022

同事给我分享了他的代码。他把一个 test 分支通过 git push origin test 命令提交到远程仓库。应该怎么样才能够把这个代码下载到本地电脑上呢?

查看分支

首先确认远程分支是否存在此分支。可以使用 -r 参数直接查看远程分支,也可以使用 -a 参数查看所有的分支名称。具体命令如下:

# 仅查看远程分支
git branch -r

# 查看所有所有分支
git branch -a

Checkout 远程分支

回想一下本地使用分支的情况下,如果需要切换分支,我们会:

git checkout test

但是这样使用,会从当前分支切换到 test 分支。如果 test 分支不存在的话,则会提示分支不存在错误。

根据 git 版本的不同,这里我们有两种方式来 Checkout 远程分支。

git-2.23 之后

具体步骤如下:

# 获取所有的远程修改
git fetch origin

# 查看所有分支名称
git branch -a

# checkout test分支
git switch -c test origin/test

git-2.23 之前

# 获取所有的远程修改
git fetch origin

# checkout test 分支
git checkout -b test origin/test

由此可见,在切换分支之前需要获取远程仓库的修改。在确定远程分支包含所需要的分支名之后,再 checkout 到本地。根据 git 版本的不同,可以使用 git checkout 命令,也可以使用 git switch 命令。

git pull 冲突

在更新代码时,我们经常使用 git pull 把远程仓库中的代码更新到本地仓库。这是一个非常便捷的命令。 git pull 本质是一个 git fetch + git merge 功能的合集。但是当你本地修改了文件之后,使用 git pull 更新时会产生冲突。如何避免这种冲突呢?遇到这种冲突时如何处理? 当冲突报错时,处理本地冲突的常见办法有两种:

  • 一种是暂存本地分支内容
  • 另外一种是恢复本地内容

暂存本地分支

暂存本地分支能够让本地workspace保持干净,从而不会产生冲突。具体命令如下:

# 获取远程所有的更新
git fetch --all

# 暂存本地数据
git stash

# 拉取新内容
git pull

# 还原修改
git stash pop

清除本地所有修改

清除本地所有的修改,能将当前内容与远程分支对齐,这样就避免了冲突。但是这将把所有的本地修改都清除了。所以在使用之前,可能需要对修改进行备份,以备不时之需。 具体操作命令如下:

# 获取远程所有的更新
git fetch --all

# 清除本地修改, master 修改为你所需要拉取的分支名称
git rest --hard origin/master

# 拉取新内容
git pull
comments powered by Disqus