How do I add a subtree to my Git repository?
Jul 16, 2025 am 01:48 AMTo add a subtree to a Git repository, first add the remote repository and get its history, then merge it into a subdirectory using the git merge and git read-tree commands. The steps are as follows: 1. Use the git remote add -f command to add a remote repository; 2. Run git merge --s recursive --no-commit to get branch content; 3. Use git read-tree --prefix= to specify the directory to merge the project as a subtree; 4. Submit changes to complete the addition; 5. When updating, first git fetch and repeat the merging and steps to submit the update. This method keeps the external project history complete and easy to maintain.
Adding a subtree to your Git repository is a useful way to include another project as a subdirectory inside your main repo, while still keeping its history intact. It's especially handy when you want to pull in third-party libraries or share code between projects without using submodules. Here's how to do it effectively.
Setting up the remote
Before adding a subtree, you need to have the remote repository set up. If you haven't already added it as a remote, now's the time to do so. This makes it easier to update later.
You can add a new remote like this:
git remote add -f <remote-name> <repository-url>
For example:
git remote add -f vendor https://github.com/example/external-project.git
The -f
flag fetches the remote right away, which saves you a step. Once that's done, you're ready to actually merge it into your project.
Merging the subtree
Now comes the actual process of merging the external repo as a subtree. You'll use git merge
with the --s recursive
and --no-commit
flags to avoid conflicts and keep things flexible.
Here's the basic command:
git merge --s recursive --no-commit <remote-name>/<branch-name>
Then tell Git that this is a subtree:
git read-tree --prefix=<subdir-name>/ -u <remote-name>/<branch-name>
So if you were adding the vendor
remote's main
branch into a folder called lib/external
, it would look like:
git merge --s recursive --no-commit vendor/main git read-tree --prefix=lib/external -u vendor/main
Finally, commit the changes:
git commit -m "Added external project as subtree"
This will bring the entire project into your repo under the specified directory.
Updating the subtree
One of the nice things about subtrees is that you can update them easily. When the external project gets new commits, just pull those changes into your subtree:
Fetch the latest changes from the remote:
git fetch vendor
Merge the updates using the same subtree logic:
git merge --s recursive --no-commit vendor/main git read-tree --prefix=lib/external -u vendor/main git commit -m "Updated external subtree"
This keeps your embedded project current without having to manually copy files.
That's basically it. Once you've got the hang of it, working with subtrees becomes second nature — it's not complicated, but it's easy to overlook small steps like fetching first or using the correct prefix. Keep a quick reference handy until it clicks.
The above is the detailed content of How do I add a subtree to my Git repository?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

When you open PyCharm for the first time, you should first create a new project and select a virtual environment, and then be familiar with the editor area, toolbar, navigation bar, and status bar. Set up Darcula themes and Consolas fonts, use smart tips and debugging tools to get more efficient, and learn Git integration.

Social security number verification is implemented in PHP through regular expressions and simple logic. 1) Use regular expressions to clean the input and remove non-numeric characters. 2) Check whether the string length is 18 bits. 3) Calculate and verify the check bit to ensure that it matches the last bit of the input.

The steps to effectively use graphical tools to compare the differences in Git versions include: 1. Open GitKraken and load the repository, 2. Select the version to compare, 3. View the differences, and 4. In-depth analysis. Graphical tools such as GitKraken provide intuitive interfaces and rich features to help developers understand the evolution of code more deeply.

The gitstatus command is used to display the status of the working directory and temporary storage area. 1. It will check the current branch, 2. Compare the working directory and the temporary storage area, 3. Compare the temporary storage area and the last commit, 4. Check untracked files to help developers understand the state of the warehouse and ensure that there are no omissions before committing.

To develop a complete Python Web application, follow these steps: 1. Choose the appropriate framework, such as Django or Flask. 2. Integrate databases and use ORMs such as SQLAlchemy. 3. Design the front-end and use Vue or React. 4. Perform the test, use pytest or unittest. 5. Deploy applications, use Docker and platforms such as Heroku or AWS. Through these steps, powerful and efficient web applications can be built.

Verifying an IMEISV string in PHP requires the following steps: 1. Verify the 16-bit numeric format using regular expressions. 2. Verify the validity of the IMEI part through the Luhn algorithm. 3. Check the validity of the software version number. The complete verification process includes format verification, Luhn checking and software version number checking to ensure the validity of IMEISV.

VSCode solves the problems of multilingual project coding and garbled code including: 1. Ensure that the file is saved with correct encoding and use the "redetection encoding" function; 2. Set the file encoding to UTF-8 and automatically detect the encoding; 3. Control whether to add BOM; 4. Use the "EncodingConverter" plug-in to convert encoding; 5. Use the multiple workspace functions to set encoding for different sub-projects; 6. Optimize performance and ignore unnecessary file monitoring. Through these steps, the coding problem of multilingual projects can be effectively dealt with.

Create tags on remote repository using gitpushorigin, delete tags using gitpushorigin--delete. The specific steps include: 1. Create a local tag: gittagv1.0. 2. Push to remote: gitpushoriginv1.0. 3. Delete local tag: gittag-dv1.0. 4. Delete remote tag: gitpushorigin--deletev1.0.
