git
Git checkout 远程分支和 git pull 覆盖本地修改
同事给我分享了他的代码。他把一个
test
分支通过 git push origin test
命令提交到远程仓库。应该怎么样才能够把这个代码下载到本地电脑上呢?
同事给我分享了他的代码。他把一个 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