4.git总结

一,git概述

1.git:分布式版本控制系统

2.git工作机制

 3.代码托管中心=远程库
4.代码托管中心
局域网:GitLab
互联网:GitHub   Gitee 码云
5.git的版本控制都是在本地库中做的

二,git常用命令

1.git工作流程图

2.git常用命令

git init              初始化本地库
git status              查看本地库状态
git add 文件名           添加到暂存区
git commit -m "日志信息“ 文件名   提交到本地库
git reflog               查看历史记录
git log                   查看历史记录(详细)
git reset --hard 版本号          版本穿梭

三,git分支

1.分支:相当于副本
2.两个指针:
head指向分支(比如master),而master指向的是具体版本

3.分支的操作:命令名称                作用
git branch -v               查看分支
git branch 分支名            创建分支
git checkout 分支名           切换分支
git merge 分支名             把指定的分支合并到当前分支上

4.master、hot-fix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的。所以创建分支的本质就是多创建一个指针。
HEAD如果指向master,那么我们现在就在master分支上。
HEAD如果指向hotfix,那么我们现在就在hotfix分支上。
所以切换分支的本质就是移动HEAD指针。

5.开发中分支使用原则与流程

四,Git团队协作机制
1.团队内写作

2.跨团队协作

luyanxi@ubuntu:~/Desktop/nvr/nvr_2025$ git add . luyanxi@ubuntu:~/Desktop/nvr/nvr_2025$ git status On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: .gitnore new file: .repo/.repo_fetchtimes.json new file: .repo/manifest.xml new file: .repo/manifests new file: .repo/manifests.git/.repo_config.json new file: .repo/manifests.git/FETCH_HEAD new file: .repo/manifests.git/HEAD new file: .repo/manifests.git/config new file: .repo/manifests.git/description new file: .repo/manifests.git/hooks/applypatch-msg.sample new file: .repo/manifests.git/hooks/check-commit-msg.py new file: .repo/manifests.git/hooks/commit-msg new file: .repo/manifests.git/hooks/commit-msg.sample new file: .repo/manifests.git/hooks/fsmonitor-watchman.sample new file: .repo/manifests.git/hooks/post-commit new file: .repo/manifests.git/hooks/post-update.sample new file: .repo/manifests.git/hooks/pre-applypatch.sample new file: .repo/manifests.git/hooks/pre-auto-gc new file: .repo/manifests.git/hooks/pre-commit new file: .repo/manifests.git/hooks/pre-commit.sample new file: .repo/manifests.git/hooks/pre-merge-commit.sample new file: .repo/manifests.git/hooks/pre-push.sample new file: .repo/manifests.git/hooks/pre-rebase.sample new file: .repo/manifests.git/hooks/pre-receive.sample new file: .repo/manifests.git/hooks/prepare-commit-msg new file: .repo/manifests.git/hooks/prepare-commit-msg.sample new file: .repo/manifests.git/hooks/update.sample new file: .repo/manifests.git/info/exclude new file: .repo/manifests.git/logs/refs/remotes/m/master new file: .repo/manifests.git/logs/refs/remotes/origin/master new file: .repo/manifests.git/objects/pack/pack-b151f09c237eea27632610a0c81ecd28d1d93135.idx new file: .repo/manifests.git/objects/pack/pack-b151f09c237eea27632610a0c81ecd28d1d93135.pack new file: .repo/manifests.git/packed-refs new file: .repo/manifests.git/refs/heads/default new file: .repo/manifests.git/refs/remotes/m/master new file: .repo/project-objects/vigi/nvr/platform.git/HEAD new file: .repo/project-objects/vigi/nvr/platform.git/config new file: .repo/project-objects/vigi/nvr/platform.git/description new file: .repo/project-objects/vigi/nvr/platform.git/hooks/applypatch-msg.sample new file: .repo/project-objects/vigi/nvr/platform.git/hooks/check-commit-msg.py new file: .repo/project-objects/vigi/nvr/platform.git/hooks/commit-msg new file: .repo/project-objects/vigi/nvr/platform.git/hooks/commit-msg.sample new file: .repo/project-objects/vigi/nvr/platform.git/hooks/fsmonitor-watchman.sample new file: .repo/project-objects/vigi/nvr/platform.git/hooks/post-commit new file: .repo/project-objects/vigi/nvr/platform.git/hooks/post-update.sample new file: .repo/project-objects/vigi/nvr/platform.git/hooks/pre-applypatch.sample new file: .repo/project-objects/vigi/nvr/platform.git/hooks/pre-auto-gc new file: .repo/project-objects/vigi/nvr/platform.git/hooks/pre-commit new file: .repo/project-objects/vigi/nvr/platform.git/hooks/pre-commit.sample new file: .repo/project-objects/vigi/nvr/platform.git/hooks/pre-merge-commit.sample new file: .repo/project-objects/vigi/nvr/platform.git/hooks/pre-push.sample new file: .repo/project-objects/vigi/nvr/platform.git/hooks/pre-rebase.sample new file: .repo/project-objects/vigi/nvr/platform.git/hooks/pre-receive.sample new file: .repo/project-objects/vigi/nvr/platform.git/hooks/prepare-commit-msg new file: .repo/project-objects/vigi/nvr/platform.git/hooks/prepare-commit-msg.sample new file: .repo/project-objects/vigi/nvr/platform.git/hooks/update.sample new file: .repo/project-objects/vigi/nvr/platform.git/info/exclude new file: .repo/project-objects/vigi/nvr/platform.git/objects/06/456fa599723035e645bdea142da2c577cb2dc1 new file: .repo/project-objects/vigi/nvr/platform.git/objects/1b/c55859f0e3fdf8a698558bb1f197ed750e81b3 new file: .repo/project-objects/vigi/nvr/platform.git/objects/2b/59f16463f1b23a26f238b715f8477e129b720c new file: .repo/project-objects/vigi/nvr/platform.git/objects/5f/0ed92fdb9d0ed436cd77452f1ac280262990a1 new file: .repo/project-objects/vigi/nvr/platform.git/objects/73/60e9827e1e9209c411c9d78183feb754c648b3 new file: .repo/project-objects/vigi/nvr/platform.git/objects/8c/7db4f1fb2a779cb4a9afb6ebf9a8a8b1699a19 new file: .repo/project-objects/vigi/nvr/platform.git/objects/9d/7237c3feb3c56931b09d93bb40fafca425b7c5 new file: .repo/project-objects/vigi/nvr/platform.git/objects/c2/8496cf98b45893ead91482e4ef4d9b219eb240 new file: .repo/project-objects/vigi/nvr/platform.git/objects/ca/2019ef4008fc913bcfbbf6477a668abd218603 new file: .repo/project-objects/vigi/nvr/platform.git/objects/d3/8273274d84061970c96c738f6fc0ebe088bc17 new file: .repo/project-objects/vigi/nvr/platform.git/objects/e7/94a14a00690a75d98ea426e07d4e68e821b9b1 new file: .repo/project-objects/vigi/nvr/platform.git/objects/ee/71adf615a4c2b87bbfd208e53d35fd78af3e30 new file: .repo/project-objects/vigi/nvr/platform.git/objects/pack/pack-42da9e2116af04090ba29f1d5eed7bd4885b09e1.idx new file: .repo/project-objects/vigi/nvr/platform.git/objects/pack/pack-42da9e2116af04090ba29f1d5eed7bd4885b09e1.pack new file: .repo/project-objects/vigi/nvr/sstar931.git/HEAD new file: .repo/project-objects/vigi/nvr/sstar931.git/config new file: .repo/project-objects/vigi/nvr/sstar931.git/description new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/applypatch-msg.sample new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/check-commit-msg.py new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/commit-msg new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/commit-msg.sample new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/fsmonitor-watchman.sample new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/post-commit new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/post-update.sample new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/pre-applypatch.sample new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/pre-auto-gc new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/pre-commit new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/pre-commit.sample new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/pre-merge-commit.sample new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/pre-push.sample new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/pre-rebase.sample new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/pre-receive.sample new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/prepare-commit-msg new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/prepare-commit-msg.sample new file: .repo/project-objects/vigi/nvr/sstar931.git/hooks/update.sample new file: .repo/project-objects/vigi/nvr/sstar931.git/info/exclude new file: .repo/project-objects/vigi/nvr/sstar931.git/objects/pack/pack-5c02ab768abd4103fcbf6a72c07c912d909d7487.idx new file: .repo/project-objects/vigi/nvr/sstar931.git/objects/pack/pack-5c02ab768abd4103fcbf6a72c07c912d909d7487.pack new file: .repo/project-objects/vigi/nvr/tp_package.git/HEAD new file: .repo/project-objects/vigi/nvr/tp_package.git/config new file: .repo/project-objects/vigi/nvr/tp_package.git/description new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/applypatch-msg.sample new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/check-commit-msg.py new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/commit-msg new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/commit-msg.sample new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/fsmonitor-watchman.sample new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/post-commit new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/post-update.sample new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/pre-applypatch.sample new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/pre-auto-gc new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/pre-commit new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/pre-commit.sample new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/pre-merge-commit.sample new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/pre-push.sample new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/pre-rebase.sample new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/pre-receive.sample new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/prepare-commit-msg new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/prepare-commit-msg.sample new file: .repo/project-objects/vigi/nvr/tp_package.git/hooks/update.sample new file: .repo/project-objects/vigi/nvr/tp_package.git/info/exclude new file: .repo/project-objects/vigi/nvr/tp_package.git/objects/pack/pack-d7cd896a09c7c3f67ebbb3fadff60d45b8375117.idx new file: .repo/project-objects/vigi/nvr/tp_package.git/objects/pack/pack-d7cd896a09c7c3f67ebbb3fadff60d45b8375117.pack new file: .repo/project.list new file: .repo/projects/sstar931.git/.repo_config.json new file: .repo/projects/sstar931.git/FETCH_HEAD new file: .repo/projects/sstar931.git/HEAD new file: .repo/projects/sstar931.git/config new file: .repo/projects/sstar931.git/description new file: .repo/projects/sstar931.git/hooks new file: .repo/projects/sstar931.git/info new file: .repo/projects/sstar931.git/logs/refs/remotes/m/master new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/master new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/master_931 new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/master_931_aisearch new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/master_sira_931 new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvd_v1 new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr4032hv1_dvt new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr4032hv1_singapore new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_ai new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_ai_v18 new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_cv_20230807 new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_iteration_v18_20250723 new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_iterator_20230509 new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_iterator_aisearch new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_iterator_v15_2016v2 new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_iterator_v15_2016v2_dev new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_iterator_v15_2016v2_rel new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_iterator_v15_4032v1_20250102 new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_iterator_v15v2_2008v2_20250114 new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_iterator_v18 new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_iterator_v18_security new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_iterator_v18_security_ddr_bcb new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_iterator_v20 new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_iterator_v20_omada new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_wlm_20240802 new file: .repo/projects/sstar931.git/logs/refs/remotes/origin/nvr_wlm_20240919 new file: .repo/projects/sstar931.git/objects new file: .repo/projects/sstar931.git/packed-refs new file: .repo/projects/sstar931.git/refs/remotes/m/master new file: .repo/projects/sstar931.git/rr-cache new file: .repo/projects/sstar931.git/svn new file: .repo/projects/torchlight.git/.repo_config.json new file: .repo/projects/torchlight.git/FETCH_HEAD new file: .repo/projects/torchlight.git/HEAD new file: .repo/projects/torchlight.git/config new file: .repo/projects/torchlight.git/description new file: .repo/projects/torchlight.git/hooks new file: .repo/projects/torchlight.git/info new file: .repo/projects/torchlight.git/logs/refs/remotes/m/master new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/1008H_iterator new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/1008H_iterator_20210517 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/1008H_v2_develop_20210603 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/1008hv2_release new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/2016H_16P_develop new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/master new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/master_931 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/master_931_aisearch new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/master_poe new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/master_poe_dev new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/master_sira_931 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/master_wifi_dev new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/master_wifi_v14 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvd_v1 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr1008h8mpv1_singapore new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr4032hv1_dvt new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr4032hv1_singapore new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_ai new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_ai_v18 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_cv_20230807 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iteration_v18_20250723 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_20230213 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_20230509 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_aisearch new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_aisearch_wlm new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v13_wlm new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v14_openapi new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v15 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v15_4032v1 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v15_4032v1_20250102 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v15_4032v1_dev new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v15_wlm new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v15v2 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v15v2_security new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v16 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v17 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v17_cloudstorage new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v18 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v18_security new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v18_security_allinone new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v18_security_ddr_bcb new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v18_security_onekey_disarming new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v18_security_sira new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v18_wifi new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v20_16128 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_iterator_v20_omada new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_wlm_20240802 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/nvr_wlm_20240919 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/release_1004h4pv1 new file: .repo/projects/torchlight.git/logs/refs/remotes/origin/release_1008hv1 new file: .repo/projects/torchlight.git/objects new file: .repo/projects/torchlight.git/packed-refs new file: .repo/projects/torchlight.git/refs/remotes/m/master new file: .repo/projects/torchlight.git/rr-cache new file: .repo/projects/torchlight.git/svn new file: .repo/projects/tp_package.git/.repo_config.json new file: .repo/projects/tp_package.git/FETCH_HEAD new file: .repo/projects/tp_package.git/HEAD new file: .repo/projects/tp_package.git/config new file: .repo/projects/tp_package.git/description new file: .repo/projects/tp_package.git/hooks new file: .repo/projects/tp_package.git/info new file: .repo/projects/tp_package.git/logs/refs/remotes/m/master new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/1008H_iterator new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/1008H_iterator_20210517 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/1008H_v2_develop_20210603 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/1008hv2_release new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/2016H_16P_develop new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/master new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/master_931 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/master_931_aisearch new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/master_poe new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/master_poe_dev new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/master_sira_931 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/master_wifi_dev new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/master_wifi_v14 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvd_v1 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr1008h8mpv1_singapore new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr4032hv1_dvt new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr4032hv1_singapore new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_ai new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_ai_v18 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_cv_20230807 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_cv_20231103 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iteration_v18_20250723 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_20230213 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_20230509 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_aisearch new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_aisearch_wlm new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v13_mcmc new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v13_wlm new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v14_openapi new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15_2016v2 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15_2016v2_wlm new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15_4032v1 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15_4032v1_20250102 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15_931 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15_931v2 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15_smartinit new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15v2 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15v2_1108v1 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15v2_2008v2_20250114 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15v2_2016h16mpv2_rel new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15v2_4064v1 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15v2_4064v1_dev new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15v2_4064v1_rel new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15v2_cloudstorage new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15v2_ftp new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15v2_security new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v15v2_smb new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v16 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v17 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v17_cloudstorage new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v18 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v18_omada new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v18_security new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v18_security_allinone new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v18_security_ddr_bcb new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v18_security_onekey_disarming new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v18_security_sira new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v18_wifi new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v18_wifi_security new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v20 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v20_16128 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_iterator_v20_omada new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_wlm_20240802 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/nvr_wlm_20240919 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/release_1004h4pv1 new file: .repo/projects/tp_package.git/logs/refs/remotes/origin/release_1008hv1 new file: .repo/projects/tp_package.git/objects new file: .repo/projects/tp_package.git/packed-refs new file: .repo/projects/tp_package.git/refs/remotes/m/master new file: .repo/projects/tp_package.git/rr-cache new file: .repo/projects/tp_package.git/svn new file: .repo/repo new file: sstar931 new file: torchlight new file: tp_package Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) (commit or discard the untracked or modified content in submodules) modified: sstar931 (untracked content) modified: torchlight (modified content) modified: tp_package (modified content, untracked content)
09-05
<think>好的,我现在需要帮助用户解决在A目录下创建Git仓库进行备份的问题。用户提到A目录下包含B、C、D三个子目录,每个都有自己的Git仓库,但用户没有提交权限。用户希望在A中建立一个主仓库,只备份内容,不关心子仓库的历史。 首先,我需要确认用户的需求。他们需要的是一个简单的备份方案,不需要保留子仓库的提交历史,只需要文件内容。因此,主仓库应该包含B、C、D的文件,但忽略它们的.git目录。 接下来,用户提供的Git状态输出显示了很多被添加的文件,包括.repo目录下的各种Git元数据,这可能是因为之前的尝试没有正确排除子仓库的.git文件夹。用户可能在执行git add .时,不小心包含了这些元数据,导致主仓库跟踪了子仓库的Git信息,这显然不符合需求。 我需要指导用户正确初始化主仓库,并确保排除所有子目录中的.git文件夹。步骤应该包括初始化仓库、创建.gitignore文件排除B/.git、C/.git、D/.git,然后添加和提交文件。此外,用户可能还需要将主仓库连接到远程仓库进行远程备份。 还要考虑用户可能遇到的常见问题,比如如何处理权限问题,是否需要定期备份,以及如何恢复备份。用户没有子仓库的提交权限,但只需要读取文件内容即可完成备份,这一点需要强调。 另外,用户提供的Git状态输出中有很多修改但未提交的子模块内容,这可能意味着子仓库有未提交的更改。但主仓库只需要备份当前文件状态,不需要处理子模块的Git历史,所以可以忽略这些警告。 最后,确保用户理解主仓库的提交记录只包含文件内容,不包含子仓库的历史,并建议用户设置自动化备份脚本以定期保存更改。 </think>### **问题分析** 用户尝试在目录 `nvr_2025` 中初始化 Git 仓库并备份子目录(`sstar931`、`torchlight`、`tp_package`)的内容,但 `git status` 显示: 1. **大量 `.git` 元数据被误添加**(如 `.repo/project-objects/.../.git`)。 2. **子目录标记为 modified (untracked content)**:表明 Git 检测到子仓库的未跟踪文件或修改。 #### **根本原因** - **误包含子仓库的 `.git` 目录**:直接执行 `git add .` 会递归添加所有文件,包括子目录中原有的 `.git` 文件夹,导致主仓库误跟踪子仓库的 Git 元数据。 - **子仓库状态干扰**:子仓库的未提交修改或未跟踪文件会显示为 `modified (untracked content)`,但主仓库只需备份文件内容,无需关心子仓库状态。 --- ### **解决方案** #### **1. 清理当前误添加的元数据** ```bash # 移除所有已添加的 .git 文件夹(保留文件内容) git rm -r --cached .repo/project-objects git rm -r --cached sstar931/.git git rm -r --cached torchlight/.git git rm -r --cached tp_package/.git # 重新添加文件(排除 .git 目录) git add . ``` #### **2. 创建 `.gitignore` 排除子仓库元数据** ```bash # 创建 .gitignore 文件 cat <<EOL > .gitignore # 排除所有子目录的 .git 文件夹 sstar931/.git torchlight/.git tp_package/.git # 排除 repo 元数据(可选) .repo/ EOL ``` #### **3. 提交备份** ```bash git commit -m "Backup of sstar931, torchlight, tp_package (no git history)" ``` #### **4. 关联远程仓库(可选)** ```bash git remote add origin <远程仓库地址> git push -u origin master ``` --- ### **关键说明** 1. **排除子仓库 `.git` 目录**: - 通过 `.gitignore` 和 `git rm --cached` 确保主仓库仅跟踪文件内容,而非子仓库的 Git 元数据。 - 提交后,主仓库的 `.git` 文件夹中不会包含子仓库的历史记录。 2. **处理子仓库状态警告**: - `modified (untracked content)` 是 Git 检测到子仓库的未提交修改,但主仓库无需处理这些内容,只需备份文件即可。 - 可通过 `git add .` 强制添加当前文件状态,忽略子仓库的 Git 状态。 3. **备份效果验证**: ```bash # 查看已添加的文件列表 git ls-files # 检查提交历史 git log ``` - 主仓库的提交记录仅包含文件内容,无子仓库历史。 --- ### **扩展建议** #### **1. 自动化定期备份** ```bash #!/bin/bash cd /path/to/nvr_2025 git add . git commit -m "Backup on $(date +'%Y-%m-%d')" git push ``` #### **2. 恢复备份文件** ```bash # 克隆主仓库 git clone <远程仓库地址> restore_dir # 进入目录并恢复文件 cd restore_dir ``` #### **3. 排除大文件(避免仓库臃肿)** 在 `.gitignore` 中添加规则: ```bash # 排除日志和临时文件 *.log *.tmp # 排除大文件(如编译输出) /build/ /dist/ ``` --- ### **总结** - **核心操作**:初始化主仓库 → 排除子仓库 `.git` 目录 → 添加文件 → 提交备份。 - **优势**:无需子仓库权限,仅需文件读取权限即可备份内容。 - **限制**:无法保留子仓库的提交历史,仅备份当前文件状态。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值