1

我正在编写一个部署脚本,这就是它的作用:

# Fetches all branches and tags
git fetch origin
# Checkout the branch/tag
git checkout 2.1.0

如果 2.1.0 是标签

我想我有最新版本,因为标签不能改变,所以一切都很好。

如果 2.1.0 是一个分支

如果这是我第一次签出分支,我想一切都很好(我将获得最新版本的代码)。

如果分支已经被签出,该git checkout命令是签出远程分支还是本地分支?->我需要拉取最新版本的代码吗?

4

2 回答 2

2

不,您需要git pull或至少需要git merge origin/2.1.0.

实际上,git fetch将最新代码从远程拉到origin/branch本地。如果您没有同名的本地分支,那么git checkout 2.1.0将为您创建它,然后结帐到该分支。但是,如果您已经有一个,那么git checkout 2.1.0将正常结帐到本地分支。

确实,一个分支2.1.0origin/2.1.0或者一个标签2.1.0,它们都是指针,指向一个特定的提交。这里2.1.0指向分支的本地最新提交,2.1.0origin/2.1.0指向远程最新提交。

于 2013-05-30T11:22:21.930 回答
0

一旦你执行 'git fetch' fetch 下载所有分支及其内容(对象),这样你就可以继续离线工作。

如果您已经有名为 2.1.0 的本地分支,如果您没有本地分支,则将切换到 locat 分支,那么您可以使用 'git checkout -b [new_branch_name]' 来签出、创建并切换到您的新分支。

于 2013-05-30T11:19:26.173 回答