git常用命令总结,git基本命令ls、cat、mv、touch简述
git常用命令总结,git基本命令ls、cat、mv、touch简述详细介绍
本文目录一览: git的基本使用
Git 的一些基本使用方法:
安装 Git:首先需要在电脑上安装 Git。可以从 Git 的官方网站下载适合自己操作系统的 Git 安装包,然后按照提示安装。
初始化一个 Git 仓库:可以通过命令行进入到代码存储的目录,然后运行 git init 命令,创建一个新的 Git 仓库。
将文件添加到 Git 仓库:可以使用 git add 命令将需要管理的文件添加到 Git 仓库。例如,git add myfile.py 可以将 myfile.py 文件添加到 Git 仓库。
提交代码到 Git 仓库:可以使用 git commit 命令将添加到 Git 仓库的代码提交到本地仓库中。例如,git commit -m "Initial commit" 可以将代码提交到 Git 仓库,并添加提交消息 "Initial commit"。
查看 Git 仓库状态:可以使用 git status 命令查看 Git 仓库的当前状态,包括哪些文件已添加到仓库、哪些文件已修改但未提交等。
查看 Git 提交记录:可以使用 git log 命令查看 Git 仓库的提交记录,包括每次提交的时间、提交人、提交信息等。
分支管理:可以使用 git branch 命令创建和管理 Git 分支。例如,git branch feature 可以创建一个名为 "feature" 的新分支。
切换分支:可以使用 git checkout 命令切换 Git 分支。例如,git checkout feature 可以切换到 "feature" 分支。
合并分支:可以使用 git merge 命令将一个分支合并到当前分支。例如,git merge feature 可以将 "feature" 分支合并到当前分支。
推送代码到远程仓库:可以使用 git push 命令将本地 Git 仓库的代码推送到远程 Git 仓库。例如,git push origin main 可以将本地 Git 仓库的代码推送到名为 "origin" 的远程 Git 仓库的 "main" 分支中。
这些是 Git 的一些基本使用方法,还有更多 Git 的高级功能和命令,可以参考 Git 的官方文档和教程进行学习和实践。
Git 中 6 个基本常用命令
大家好啊,我是大田。
想更深刻了解 Git 常用命令,先来看看原理图:
我们使用 Git 操作的核心步骤就是:
先add代码到git缓存
然后commit到git本地仓库
最后push到远程Github代码仓库
备注:
workspace:当前工作区,需要经过 add、commit、push 才能上传到远程仓库
index:缓存区,标记你本地的哪些内容是被 git 管理的
repository:本地仓库,保存各个版本的提交
remote:远程仓库
1、克隆远程项目到本地
git clone url
2、克隆后,创建新分支,名字叫 dev
git checkout -b dev
3、加到缓存区
1)git add .:添加所有项目至缓存区
2)git add 目录名:添加指定目录到缓存区
3)git add 文件名:添加指定文件到缓存区
4、提交至本地仓库
git commit -m "注释信息"
5、推送本地仓库信息至远程仓库
git push origin master:将本地分支的更新内容,全部推送至远程仓库 master 分支
git push origin dev:将本地 dev 分支推送到远程,再由一个人统一加到 master 分支上
6、拉取远程仓库最新文件
git pull:拉取远程仓库所有分支合并到本地
git pull origin master:拉取远程master分支,合并到当前本地master分支
git fetch:仅做拉取操作,不做合并,合并需要自己再找其他方法
备注:一般都用 git pull
git常用命令是什么?
1、在当前目录新建一个Git代码库,:$ git init
2、新建一个目录,将其初始化为Git代码库,:$ git init [project-name]
3、下载一个项目和它的整个代码历史,:$ git clone [url]
4、显示当前的Git配置,:$ git config --list
5、编辑Git配置文件,:$ git config -e [--global]
6、设置提交代码时的用户信息,:$ git config [--global] user.name "[name]",:$ git config [--global] user.email "[email address]"
7、添加指定文件到暂存区,:$ git add [file1] [file2] ...
8、添加指定目录到暂存区,包括子目录,:$ git add [dir]
9、添加当前目录的所有文件到暂存区,:$ git add .
10、对于同一个文件的多处变化,可以实现分次提交,:$ git add -p
11、删除工作区文件,并且将这次删除放入暂存区,:$ git rm [file1] [file2] ...
12、停止追踪指定文件,但该文件会保留在工作区,:$ git rm --cached [file]
13、改名文件,并且将这个改名放入暂存区,:$ git mv [file-original] [file-renamed]
14、提交暂存区到仓库区,:$ git commit -m [message]
15、提交暂存区的指定文件到仓库区,:$ git commit [file1] [file2] ... -m [message]
16、提交工作区自上次commit之后的变化,直接到仓库区,:$ git commit -a
17、提交时显示所有diff信息,:$ git commit -v
18、使用一次新的commit,替代上一次提交
19、 如果代码没有任何新变化,则用来改写上一次commit的提交信息,:$ git commit --amend -m [message]
20、重做上一次commit,并包括指定文件的新变化,:$ git commit --amend [file1] [file2]
扩展资料:
git有以下功能:
1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
2、在自己的机器上根据不同的开发目的,创建分支,修改代码。
3、在单机上自己创建的分支上提交代码。
4、在单机上合并分支。
5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
6、生成补丁(patch),把补丁发送给主开发者。
7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
Git 常用命令速查:
git branch 查看本地所有分支。
git status 查看当前状态。
git commit 提交。
git branch -a 查看所有的分支。
git branch -r 查看远程所有分支。
git commit -am “init” 提交并且加注释。
git remote add origin git@192。168。1。119:ndshow。
git push origin master 将文件给推到服务器上。
git remote show origin 显示远程库origin里的资源。
git push origin master:develop。
扩展资料
git的简单介绍
git如C编程语言、C++、java等,编写计算机、手机或游戏机上的游戏。 目前流行的游戏编程语言为C++编程语言。
游戏编程接口为DirectX9.0、OpenGL和SDL(Simple DirectMedia Layer)等。现在手机上玩的游戏分为Android与IOS两种平台,分别是用java和object-c(或swift)。当然时下也流行一些跨平台的编程引擎,例如cocos2d-x、unity 3D等。
参考资料来源:Git-Git是什么
Git常用命令
1.1 配置环境
当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息。该用户信息和GitHub上注册的远程仓库的相关信息没有任何关系。
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --list
配置信息保存在用户目录下的.giitconfig文件中
1.2 获取Git仓库
要使用Git对我们的代码进行版本控制,首先需要获得Git仓库
获取Git仓库通常有两种方式:
执行步骤如下:
1、在电脑的任意位置创建一个空目录作为我们的本地Git仓库
2、进入这个目录中,点击右键打开Git bash 窗口
3、执行命令git init
可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地的命令形式为:
git clone 远程Git仓库地址
1.3 工作目录、暂存区以及版本库概念
版本库:.git隐藏文件就是版本库,版本库存储了很多配置信息、日志信息和文件版本信息等
工作目录(工作区):包含.git文件夹的目录就是工作目录,主要用于存放开发的代码
暂存区:.git文件夹中有很多文件,其中一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方
1.4 Git工作目录下文件的两种状态
Git工作目录下的文件存在两种状态:
Unmodified 未修改状态
Modified 已修改状态
Staged 已暂存状态
这些文件的状态会随着我们执行Git的命令发生变化
1.5 本地仓库操作
git status 查看文件状态
也可以使用git status -s使输出信息更简洁
git add 将未跟踪的文件加入暂存区,将已经修改的文件加入暂存区也是通过这个命令
git reset 将暂存区文件取消暂存
git commit -m “你的说明” 将暂存区文件提交到本地仓库
git rm 删除文件 说明:这种操作是直接将文件加入到暂存区里面,直接提交到本地仓库生效,而直接删除的话没有进入到暂存区,需要先把文件加入到暂存区之后,再提交到本地仓库。
将文件添加至忽略列表
一般我们总会有些文件无需纳入Git的管理,也不希望他们总出现在未跟踪文件列表。通常这些都是自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。在这种情况下,我们可以在工作目录中创建一个名为.gitnore的文件(文件名称固定),列出忽略的文件模式。下面是一个示例:#代表注释
由于windows无法创建不含文件名的文件,因此我们需要在bash窗口中用如下命令创建。
git log 查看日记记录
1.6 远程仓库操作
如果想查看已经配置的远程仓库服务器,可以运行git remote 命令。它会列出指定的每一个远程服务器的简写。如果已经克隆了远程仓库,那么至少可以看见origin,这是Git克隆的仓库服务器的默认名字
git remote -v 可以查看对远程仓库详细一点的说明
git remote show origin 可以查看对origin更详细的远程仓库的说明
运行git remote add 添加一个远程Git仓库,同时指定一个可以引用的简写
如果你想获得一份已经存在了的Git仓库的拷贝,这时需要用到 git clone 命令。Git克隆的是Git仓库服务器上的几乎所有数据(包括日志信息、 历史 记录等),而不仅仅是复制工作所需要的文件。当你执行git clone 命令的时候,默认配置下Git仓库中的每一个文件的每一个版本都将被拉取下来。
如果因为一些原因想要移除一个远程仓库,可以使用git remote rm
注意:此命令只是从本地移除远程仓库的记录,并不会影响到远程仓库
git fetch 是从远程仓库获取最新版本到本地仓库,不会自动merge
说明:如果使用fetch命令,拉取的文件会放到版本库里面,不会自动整合到工作区,如果需要整合到工作区,需要使用 git merge 远程仓库别名/远程仓库分支
git pull 是从远程仓库获取最新版本并merge到本地仓库
注意:如果本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库中拉取文件的时候会报错(fatal:refusing to merge unrelated histories),解决此我呢提可以在git pull 命令后加入参数 --allow-unrelated-histories
git push
1.7 Git分支
几乎所有的版本控制系统都是以某种形式支持分支。使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。Git的master是一个特殊分支。它跟其它分支没有区别。之所以每一个仓库都有mater分支,是因为git init默认创建它,并且大多数人都懒得去改动它。
# 列出所有本地分支
$ git branch
#列出所有远程分支
$ git branch -r
#列出所有本地分支和远程分支
$git branch -a
git branch 分支名称
git checkout 分支名称
git push 远程仓库别名 远程仓库分支
git merge 分支名称 说明:在当前分支下合并其他分支
注意:如果两个分支存在同样的文件名且同行的内容不一样,那么会产生矛盾,需要自己手动修改产生矛盾后的文件,然后添加到暂存区然后提交。
git branch -d 分支名称
如果要删除的分支中进行了一些开发动作,此时执行上面的删除命令并不会删除分支,可以将命令中的-d参数改为-D
如果要删除远程仓库中的分支,可以使用命令git push origin -d branchName
1.8 Git标签
像其他版本控制系统一样,Git可以给 历史 中的某一给提交打上标签,以示重要。比较有代表性的是人们会使用这个功能来标记发布结点(v1.0、v1.2等)。标签指的是某个分支某个特定时间点的状态。通过标签,可以很方便地切换到标记时的状态。
#新建一个tag
$ git tag [tagName]
$ git tag
#新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]
#删除本地tag
$git tag -d[tag]
#删除远程tag
$git push origin :refs/tags/[tag]
Git & Repo 最基本命令 菜鸟教程
前言:发现新来小伙伴,对git以及repo命令还不是特别熟悉,因此对git及repo最基本命令做了一下小结:
************************Repo*************************************
repo init -u? ssh://git@gitlab...manifest.git ?-b [分支]
repo sync
repo status
repo branch
repo manifest?
repo diff
repo help
************************ 查看 *************************************
1 、查看本地分支
git branch
2 、查看远程分支
git branch -r
3 、查看所有分支
git branch -a
4 、查看状态
git status
5 、查看提交日志
git log
************************ 创建 *************************************
本地创建新的分支
git branch [branch name]
切换到新的分支
git checkout [branch name]
创建 + 切换分支
git checkout -b [branch name]
************************ 删除 *************************************
删除本地分支
git branch -d [branch name]
删除 github 远程分支 ?
git push origin :[branch name]
************************ 推送 *************************************
将新分支推送到 github
git push origin [branch name]
提交分支数据到远程服务器
git push origin
:
例如:
git push origin?2.0.1.20120806:2.0.1.20120806
远程分支和本地分支需要区分好,所以,在从服务器上拉取特定分支的时候,需要指定远程分支的名字。
git checkout --track origin/2.0.1.20120806
注意该命令由于带有--track参数,所以要求git1.6.4以上!这样git会自动切换到分支。
************************ 分支合并 merge*************************************
git merge feature/login
git merge? damo_release_201020_feedingRank
************************tag*************************************
git tag 2.0.2
git push --tags
1、拉取远端指定的分支(本地不存在)
git fetch
git checkout -b 本地分支名 origin/远程分支名
2、创建本地分支,并推送到远端
(二) . 推送本地分支到远程仓库
git push --set-upstream origin 分支名
本地分支推送到远端:
repo forall -c git push ika damo_:damo_
本地分支与远端建立关联跟踪:
repo forall -c git branch --set-upstream-to=module/damo_? damo_
设置本地分支与远程分支的追踪:
git branch --set-upstream-to=origin/远程分支名 本地分支名
基于远端分支创建分支:
1、先fetch 远端的 ila_210120
repo forall -c git fetch ila ila_210120
2、基于远端的ila_210120创建? damo_ila_210120分支
?repo forall -c git checkout -b damo_ila_210120 ila/ila_210120
cherry-pick :(某一个 commit )
git cherry-pick f8857cbb08519b10981b0e2df999363ebfe8b6d3
push 推送到远端
git push ila damo_ila_210120_review
强推:
git push --force ila 201140_newGuide_oneCommit
合成一个 commit 流程 :
1、创建一个新分支:
2、reset到第一个commit:
3、重新commit:
reset 区别:
repo forall -c git reset --hard
repo forall -c git reset --soft f8857cbb08519b10981b0e2df999363ebfe8b6d3
?
1、 https://www.cnblogs.com/mmykdbc/p/9076063.html
2、 https://blog.csdn.net/top_code/article/details/51931916
3、 https://www.jianshu.com/p/bf7b09e234c8
4、 template 模板: https://blog.csdn.net/weixin_38019025/article/details/103951002
Control + C? 退出终端执行的任务
6 、电脑目录:
~/.
/Users/yuyahui
Git基本操作
安装完 Git 软件后,需要我们做一下全局的配置工作,如:用户名、邮箱等。
命令:git config
设置用户名命令:
设置邮箱命令:
其中, --global 指定为全局配置,不指定该参数,则为当前所在仓库配置。
查看配置:
在本地创建版本库,需要使用 git init 命令。
首先,我们需要新建一个存放版本库的文件夹,然后进入到该目录所在路径,执行如下命令,格式为:
最后查看文件夹,可以看到包含有 .git 子文件夹,说明创建版本库成功了。
也可以在执行 git init 命令时指定一个文件夹作为版本库。格式为:
克隆版本库是指从现有 Git 版本库中拷贝项目。
克隆版本库使用如下命令,格式为:
如果我们需要克隆到指定的目录,可以使用以下命令格式:
如:克隆远程仓库
添加一个或多个文件到暂存区:
添加指定目录到暂存区,包括子目录:
添加当前目录下的所有文件到暂存区:
查看在我们上次提交之后是否有对文件进行再次修改。 格式为:
-s参数可以帮助我们获得比较简短的显示结果。
如:我们在一个版本库中所在目录中增加一个 Unit1.pas 文件,然后执行如下命令:
显示暂存区和工作区的差异:
显示暂存区和上一次提交(commit)的差异:
显示两次提交之间的差异:
将暂存区内容添加到本地仓库中。
提交暂存区到本地版本库中:
message 可以用于描述提交的信息。
提交暂存区的指定文件到版本库区:
修改后直接提交:
-a参数设置修改文件后不需要执行 git add 命令,直接来提交。
如:我们在上面的命令基础上进行提交
接下来,我们对 Unit1.pas 文件进行修改,然后进行文件比较:
git reset 命令用于回退版本,可以指定退回某一次提交的版本。
git reset 命令语法格式如下:
可以使用 数字表示
git rm 命令用于删除文件。
如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit 的提示。所以,在 git 环境下一定要使用 git 的删除文件操作。
git rm 删除文件有以下几种形式:
将文件从暂存区和工作区中删除:
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f 。
如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可:
可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件:
git mv 命令用于移动或重命名一个文件、目录或软连接。
如果新文件名已经存在,但还是要重命名它,可以使用 -f 参数:
Git常用命令--(ls,cat,mv,touch)
描述:列出有关文件的信息(默认为当前目录)。如果没有指定-cftuvSUX或——Sort,则按字母顺序排序。
-a 列出所有文件,包括隐藏文件和以“.”开头的文件;
-d 列出目录本身;
-l 列出条目的详细信息;
-r 以反序排列;
-t 按时间排列;
-h 显示的文件大小按人类可读的方式;
-R 递归处理子目录 ;
-X 以文件名的后缀排序;
-S 按文件大小排序
ls
列出当前目录下的所有文件,这个用的最多。
ls -al
列出所有文件(包括隐藏文件和以“.”开头的文件),及其详细信息;
ls - lt
列出所有文件详细信息,并按时间排序,时间最近的靠前。
描述:连接和查看文本文件
-n 从1开始对所有输出行进行编号;
-b 和n相似,但是空行不编号;
-s 遇到连续空行时合并为一行;
cat file1
打印文件内容
cat file1 file2 > file3
合并文件1和2的内容输出到文件3,如果文件3存在则覆盖
cat -n file1 >> file2
把文件1的内容按行编号后追加到文件2
描述:用来移动文件或者重命名
-b 若需覆盖文件,则覆盖前先备份;
-f 如果目标文件存在,强制覆盖;
-i 若目标文件存在,询问是否覆盖;
-t 移动多个源文件到一个目录,使用中目标目录写在前,源文件在后
mv aa.txt bb.txt
将文件aa.txt改名为bb.txt;
mv aa.txt demo
将文件aa.txt移动到目录demo中;
mv aa.txt bb.txt dir1; mv -t ~/Desktop/demo-1/dir2 aa.txt bb.txt
先将文件aa.txt和bb.txt移动到目录dir1,然后再将文件aa.txt和bb.txt移动到目录dir2中;
mv dir1 dir2
如果目录dir2不存在,将目录dir1改名为dir2;如果dir2存在,将dir1移动到dir2
描述:用来新建一个文件,或者修改已存在文件的时间戳
-a 只更改存取时间;
-c 不建立任何文档;
-d 使用指定的日期时间;
touch aa.txt bb.txt
创建文件aa.txt和bb.txt
touch -c cc.txt
如果cc.txt不存在就不更改时间戳也不建立cc.txt
touch -r bb.txt
更新bb.txt的时间戳
Git命令和参数都很多,需要慢慢学。可以使用Git的 --help命令查看详细用法,如输入cat --help,查看cat命令的参数及使用方法。也可以使用网站explainshell.com,输入各种组合参数的命令来查询,每一个参数都会有解释。
git基本命令ls、cat、mv、touch简述
1. 命令含义:List directory contents,用来显示目录或具体文件列表。 2. 主要用法示例:
1. 命令含义:Print and concatenate files,打印、合并文件。 2. 主要用法示例:
1. 命令含义:Move or rename files and directories,移动或重命名文件和目录。 2. 主要用法示例:
1. 命令含义:用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的空白文件。 2. 主要用法示例:
该网站几乎能够查询所有Linux命令的含义,其界面如下图:
git切换分支的命令
作为程序员的我们应该都有一个感受,一旦进入某个项目,从开发,到发布生产,到hotfix,到后期维护,那基本都有你的份,正在开发某个feature,老板突然跳出来说让你做生产商的hotfix更是家常便饭,面对这种情况,使用Git的我们通常有两种解决方案:草草提交未完成的feature,然后切换分支到hotfixgitstash|gitstashpop暂存工作内容,然后再切换到hotfix第二种方式较第一种还好很多,可是面对下面这些场景,stash依旧不是很好的解决方案我们面对的场景正在main分支上跑很长时间的测试,切换到hotfix或feature,测试就会中断项目非常大,频繁地切换索引,成本非常高在几年前release的旧版本,设置和当前不一样,IDErestructure适配切换也会带来很大的开销切换分支,需要重新设置相应的环境变量,比如dev/qa/prod需要切换到同事的代码,帮助调试代码复现问题有的同学想到,gitclone多个repo不就可以了吗?这是解决上述问题的一个方法,但背后同样隐藏着很多问题:多个repo的状态是不好同步的,比如没办法快速cherry-pick,一个repocheckout的分支,另外一个repo需要重新checkoutgithistory/log是重复的,当项目历史非常长,.git文件夹下的内容是非常占用磁盘空间的同一个项目,多个repo,不易管理那如何做才能满足这些特殊场景,又不出现上述这些问题呢?git-worktree其实,这是Git2015年前就开始支持的功能,却很少有人知道它,git-worktree的使用非常方便,在终端输入:gitworktree--help就可以快速看到帮助文档说明:用简单的话来解释git-worktree的作用就是:仅需维护一个repo,又可以同时在多个branch上工作,互不影响上面红色框线命令有很多,我们常用的其实只有下面这四个:gitworktreeaddgitworktreelistgitworktreeremovegitworktreeprune在展开说明之前,需要和大家普及两个你可能忽视的Git知识点:默认情况下,gitinit或gitclone初始化的repo,只有一个worktree,叫做mainworktree在某一个目录下使用Git命令,当前目录下要么有.git文件夹;要么有.git文件,如果只有.git文件,里面的内容必须是指向.git文件夹的第二句话感觉挺绕的,下面用例子说明,就很容易明白了gitworktreeadd当前项目目录结构是这样的:.└──amend-crash-demo1directorycdamend-crash-demo运行命令gitworktreeadd../feature/feature2_amend-crash-demogit:gitworktreeadd../feature/feature2PreparingworktreeHEADisnowat82b8711addmainfile重新看目录结构.├──amend-crash-demo└──feature└──feature23directories该命令默认会根据HEAD所在的commit-ish创建一个名为feature2的分支,分支磁盘位置如上面结构所示cd../feature/feature2/会发现,这个分支下并不存在.git文件夹,却存在一个.git文件,打开文件,内容如下:gitdir:/Users/rgyb/Documents/projects/amend-crash-demo/.git/worktrees/feature2到这里,你再理解一下上面的知识点2,是不是就清晰许多了呢?接下来,你就可以在feature2分支上做一切你想做的内容了,和mainworktree互不干扰一般情况下,项目组都有一定的分支命名规范,比如feature/JIRAID-Title,hotfix/JIRAID-Title,如果仅仅按照上面命令新建worktree,分支名称中的/会被当成文件目录来处理gitworktreeadd../hotfix/hotfix/JIRA234-fix-naming运行完该命令,文件目录结构是这样的.├──amend-crash-demo├──feature│└──feature2└──hotfix└──hotfix└──JIRA234-fix-naming6directories很显然这不是我们想要的,这时候我们就需要-b参数的支持了,就像gitcheckout-b一样执行命令:gitworktreeadd-bhotfix/JIRA234-fix-naming../hotfix/JIRA234-fix-naming再来看一下目录结构.├──amend-crash-demo├──feature│└──feature2└──hotfix├──JIRA234-fix-naming└──hotfix└──JIRA234-fix-naming7directories进入JIRA234-fix-naming目录,默认是在hotfix/JIRA234-fix-naming分支上worktree建立起来很容易,不加管理,项目目录结构肯定乱糟糟,这是我们不想看到的,所以我们需要清晰地知道某个repo都建立了哪些worktreegitworktreelist所有的worktree都在共用一个repo,所以在任意一个worktree目前,都可以执行如下命令来查看worktree列表gitworktreelist执行完命令后,可以查看到我们上面创建的所有worktree信息,mainworktree也会显示在此处/Users/rgyb/Documents/projects/amend-crash-demo82b8711/Users/rgyb/Documents/projects/chore/chore8782898/Users/rgyb/Documents/projects/feature/feature282b8711/Users/rgyb/Documents/projects/hotfix/hotfix/JIRA234-fix-naming82b8711/Users/rgyb/Documents/projects/hotfix/JIRA234-fix-naming82b8711worktree工作做完了,也是要及时删除的,否则也会浪费很多磁盘空间gitworktreeremove这个命令很简单了,worktree的名字叫什么,直接就remove什么就好了gitworktreeremovehotfix/hotfix/JIRA234-fix-naming此时,分支名弄错的那个hotfix就被删掉了/Users/rgyb/Documents/projects/amend-crash-demo82b8711/Users/rgyb/Documents/projects/chore/chore8782898/Users/rgyb/Documents/projects/feature/feature282b8711/Users/rgyb/Documents/projects/hotfix/JIRA234-fix-naming82b8711假设你创建一个worktree,并在里面有改动,突然间这个worktree又不需要了,此刻你按照上述命令是不能删掉了,此时就需要-f参数来帮忙了gitworktreeremove-fhotfix/JIRA234-fix-naming删除了worktree,其实在Git的文件中,还有很多administrative文件是没有用的,为了保持清洁,我们还需要进一步清理gitworktreeprune这个命令就是清洁的兜底操作,可以让我们的工作始终保持整洁总结到这里,你应该理解,整个git-worktree使用流程就是下面这四个命令:gitworktreeaddgitworktreelistgitworktreeremovegitworktreeprune你也应该明白gitworktree和gitclone多个repo的区别了。只维护一个repo,创建多个worktree,操作间行云流水我的实践:通常使用gitworktree,我会统一目录结构,比如feature目录下存放所有feature的worktree,hotfix目录下存放所有hotfix的worktree,这样整个磁盘目录结构不至于因为创建多个worktree而变得混乱在磁盘管理上我有些强迫症,理想情况下,某个repo的worktree最好放在这个repo的文件目录里面,但这就会导致Gittrack新创建的worktree下面的所有文件,为了避免Gittrackworktree的内容,来来回回修改gitignore文件肯定是不合适的,