Git笔记(六)Git协作常用操作

本文最后更新于:8 个月前

虽然之前针对git的各版块进行了梳理,但是由于缺乏实际协作经历,所以在协作这一块不够熟悉。本文专门针对「日常开发协作」中经常涉及到的操作进行另一个归纳

Git笔记(六)Git协作常用操作

1. 拉取分支

背景:今天和同事协作开发一个比较小的项目,所以两人使用了同一个分支。同事在本地新建分支后,push到gitlab,然后我需要去gitlab拉取该分支。之前没有遇到,所以没有经验

解决方式:

  • 第一种,适用于本地还没有clone过的情况。
1
git clone -b <指定分支名> git@git.corp.kuaishou.com:ks-frontend/live/kuaishou-frontend-live-krn.git

以上命令会:拉取指定远程分支到本地,将HEAD指向该分支,并自动与远程同名分支建立追踪关系。

  • 第二种(推荐使用!),适用于本地已经clone过的情况
1
git checkout -b <本地分支名> origin/<远程分支名>

以上命令会:基于指定的远程分支创建一个本地的分支,并自动建立分支追踪关系,同时将HEAD指向本地新分支

不知道在运行上面这行命令之前,是否需要先 fetch 一次,实际使用时可以再判断一下

  • 第三种,(之前实际使用的)
1
git pull <remote name> <远程分支名>:<本地分支名>
  • 第四种,(了解一下即可)
1
git fetch origin <远程分支名>:<本地分支名>

运行以上命令,本地分支和远程分支不会自动建立追踪关系

第五种(最简单高效!!强烈推荐使用),使用VSCode的图形化工具

第一步,点击下图指示位置,打开分支栏

image-20230714113342864 image-20230714113536892

第二步,点击需要切换的分支,本地分支、远程分支均可。

如果是点击远程分支,它会自动完成:(1)拉取分支、(2)建立本地分支与远程分支的追踪关系、(3)工作区切换到该分支

2. fetch命令

Q:git fetch 下载的范围有多大? 当前分支?整个仓库的所有分支?

A:所有分支

git fetch会下载所有分支(远程主机名也可以不指定,缺省时为默认的remote)

1
git fetch <远程主机名> 

如果想要下载指定的某个分支,可以指定分支名

1
git fetch <远程主机名> <分支名>
1
git fetch -all	#这表示下载所有remote,而不是所有branch

3. pull命令

Tips:commit之前先pull,可以先保存到stash
1
git pull [<options>] [<repository> [<refspec>…]]
1
git pull	# 如果没有指定分支的追踪关系的话,就不能省略参数

4. branch命令

(1)查看分支

1
2
3
git branch 			# 列出所有本地分支
git branch -a # 列出所有本地、远程分支
git branch -r # 列出所有远程分支

(2)新建分支

1
2
3
4
git switch -c [new branch name]		# 基于当前分支,新建分支,并切换到新分支
git checkout -b [new branch name] # 同上
git checkout -b [branch name] [已有分支名] # 基于指定分支新建,其它同上
git checkout -b [branch name] orgin/[远程分支名] # 基于指定远程分支,建立本地新分支,并自动建立追踪关系?

(3)分支改名

1
git branch -m [old branch name] [new branch name]	# 修改分支名,连同它的配置和reflog

可以修改远程分支名吗?

不支持

但是可以通过以下方式间接实现:

1
2
3
4
5
git push -d origin [远程分支名]		# 删除远程分支

git branch -m [本地分支旧名] [本地分支新名] # 分支重命名

git push -u origin [远程新分支名] # 将当前分支推送到remote,建立新的远程分支,-u 表示建立追踪关系,origin泛指remote名

(4)删除本地分支

1
git branch -d [本地分支名]		# 删除本地分支

5. 本地分支与远程分支的追踪关系

(1)查看追踪关系

1
git branch -vv	# 查看当前分支 与远程分支的追踪关系
image-20230714103240323

如上,如果存在追踪关系,就会输出(蓝色字体部分)。如果不存在追踪关系则不显示

(2)建立追踪关系

1
git branch -u origin/<分支名>	# 将当前分支与指定的远程分支建立追踪关系
image-20230714103418153

(3)取消追踪关系

1
git branch --unset-upstream	<本地分支名>	# 取消当前本地分支 的远程追踪关系
image-20230714103811717

6. log输出的范围

log会输出当前分支所有的 commit历史。

注意:如果分支B 是基于 分支A 创建的话,分支B会继承分支A所有的commit历史,所以即使是一个新建的分支,可能也会有非常多的commit历史!!

7. clone后的状态

clone一个新仓库之后,在本地

  • 能够获得remote所有分支信息(但是对应的资源在不在不知道?)
image-20230714111609456
  • 在本地新建了一个与remote 默认分支同名的分支,并建立了追踪关系
image-20230714111809072

8. VSCode如何快捷查看、切换分支

vscode如何切分支 - 王玮-web - 博客园 (cnblogs.com)

image-20230714113030895 image-20230714113736890

9.查看远程分支最新commit

1
2
3
git fetch origin [远程分支名(不用再带origin了)]	
git checkout origin/[远程分支名]
git log -n 5 # 查看最近5条commit

Git笔记(六)Git协作常用操作
http://timegogo.top/2023/07/16/Git/Git笔记(六)Git协作常用操作/
作者
丘智聪
发布于
2023年7月16日
更新于
2023年7月19日
许可协议