0


Git Worktree 高级使用,这样清爽多了|新技能

git clone --bare git@github.com:FraserYu/amend-crash-demo.git .bare

我们还要在当前目录下创建一个

.git

文件,文件内容是以

gitdir

的形式指向我们的

.bare

文件夹 (如果不理解 gitdir 的含义,请回看 Git Worktree 大法真香 )

echo “gitdir: ./.bare” > .git

然后我们要编辑 .bare/config 文件,并修改

[remote "origin"]

内容,和下面内容保持一致(也就是添加第 6 行内容),这确保我们创建 worktree 切换分支,可以显示正确的分支名称

vim .bare/config

-----------------------------------------------

[remote “origin”]

url = git@github.com:FraserYu/amend-crash-demo.git

fetch = +refs/heads/:refs/remotes/origin/

接下来我们就可以创建 worktree 了,首先我们要为 main 分支创建 worktree,因为 main 分支 HEAD 的指向的 commit-ish 就是你创建其他 worktree 的 commit-ish

git worktree add main

--------------------------------

Preparing worktree (checking out ‘main’)

HEAD is now at 82b8711 add main file

通常我们不会直接在 main 分支上直接工作,而是创建其它类型的分支,继续创建名为

feature/JIRA234-feature3

的 worktree

git worktree add -b “feature/JIRA234-feature3” feature3

------------------------------------------------

Preparing worktree (new branch ‘feature/JIRA234-feature3’)

HEAD is now at 82b8711 add main file

查看当前文件夹的内容,你会发现只有

main

feature3

两个文件夹(因为

.bare

.git

是隐藏文件夹/文件),这样是不是相当清爽呢?

ls -l

-------------------------------------------

total 0

drwxr-xr-x 10 rgyb staff 320 Nov 23 21:44 feature3

drwxr-xr-x 10 rgyb staff 320 Nov 23 21:36 main

ls -al

-------------------------------------------

total 8

drwxr-xr-x 6 rgyb staff 192 Nov 23 21:44 .

drwxr-xr-x 3 rgyb staff 96 Nov 23 21:14 …

drwxr-xr-x 12 rgyb staff 384 Nov 23 21:36 .bare

-rw-r–r-- 1 rgyb staff 16 Nov 23 21:29 .git

drwxr-xr-x 10 rgyb staff 320 Nov 23 21:44 feature3

drwxr-xr-x 10 rgyb staff 320 Nov 23 21:36 main

接下来就可以尽情的在我们的各种分支上,彼此互不影响的进行

add

/

commit

/

pull

/

push

操作了

echo “feature3 development” > feature3.yaml

git add feature3.yaml

git commit -m “feat: [JIRA234-feature3] feature3 development”

------------------------------------------------------------------

[feature/JIRA234-feature3 aeaac94] feat: [JIRA234-feature3] feature3 development

1 file changed, 1 insertion(+)

create mode 100644 feature3.yaml

git push --set-upstream origin feature/JIRA234-feature3

通过上一篇文章 worktree 的四个命令,多分支协同开发不再是问题:

git worktree add

git worktree list

------------------------------------------------------------------------------------------------

/Users/rgyb/Documents/projects/amend-crash-demo/.bare (bare)

/Users/rgyb/Documents/projects/amend-crash-demo/feature3 aeaac94 [feature/JIRA234-feature3]

/Users/rgyb/Documents/projects/amend-crash-demo/main 82b8711 [main]

git worktree remove

git worktree prune

总结

通过借助 bare repo 的特性,我们可以非常整洁的将所有 worktree 只管理在当前项目目录下,多分支协同开发,就像这样:

.

└── amend-crash-demo

├── feature3

│ ├── README.md

│ ├── config.yaml

│ ├── feat1.txt

│ ├── feature3.yaml

│ ├── file1.yaml

│ ├── hotfix.yaml

│ ├── main.properties

│ └── main.yaml

└── main

├── README.md

├── config.yaml

├── feat1.txt

├── file1.yaml

├── hotfix.yaml

├── main.properties

└── main.yaml

3 directories, 15 files

如果你有磁盘管理强迫症,这绝对是个好办法。

如果你想更好的理解整个过程,你需要在操作本文命令的同时,查看 Git 相关的文件信息

有什么问题,留言区交流

参考

最后

笔者已经把面试题和答案整理成了面试专题文档

image

image

image

image

image

image

档**

[外链图片转存中…(img-ugG9q2Z1-1714292417750)]

[外链图片转存中…(img-6eturU0S-1714292417751)]

[外链图片转存中…(img-jMejvj0A-1714292417752)]

[外链图片转存中…(img-erPB70lj-1714292417752)]

[外链图片转存中…(img-na7yQyly-1714292417753)]

[外链图片转存中…(img-nZl9kI9q-1714292417753)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录


本文转载自: https://blog.csdn.net/peixianchacha/article/details/138282446
版权归原作者 peixianchacha 所有, 如有侵权,请联系我们删除。

“Git Worktree 高级使用,这样清爽多了|新技能”的评论:

还没有评论