meta data for this page
  •  

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
git:split_merge_repos [2017/02/20 13:48]
niziak [Merge another repo (RRR) into directory of repo (LLL)]
git:split_merge_repos [2024/01/17 11:48] (current)
niziak
Line 1: Line 1:
 +====== Split or merge repos ======
 +
 ====== Merge repos into one ====== ====== Merge repos into one ======
  
Line 19: Line 21:
 Then modify file location of repo BBB to be in desired path and merge it into repo LLL. Then modify file location of repo BBB to be in desired path and merge it into repo LLL.
 <code bash> <code bash>
 +
 +######### WAY 2
 +# Clone RRR repo temporary to change all file paths to new repo.
 +cd tmp
 +git clone http://​URI_to_RRR_repo
 +git checkout main
 +# now move files from remote repo RRR into correct path:
 +mkdir app_RRR ​ # create new location path (which will be merged to destination RRR repo)
 +git checkout -b branch_change_file_location
 +git mv -k * app_RRR/src
 +git mv src app_RRR/src
 +git mv .gitignore .gitlab-ci.yml .gitmodules app_RRR/src
 +
 +git commit -m "​location of app_RRR adapted to local repo" ​
 +
 +# optionally reword all commits:
 +git rebase --root -x 'git commit --amend'​
 +
 +cd LLL_repo
 +git remote add RRR /​tmp/​cloned_RRR_repo
 +git fetch RRR
 +git merge RRR/​branch_change_file_location --allow-unrelated-histories
 +######### WAY 2 END
 +
 +######### WAY 1
 git remote add RRR http://​URI_to_RRR_repo git remote add RRR http://​URI_to_RRR_repo
 git fetch RRR git fetch RRR
-git checkout -b branch_change_file_location RRR/master+git checkout -b branch_change_file_location RRR/main
  
 # now move files from remote repo RRR into correct path: # now move files from remote repo RRR into correct path:
Line 33: Line 60:
 git merge branch_change_file_location --allow-unrelated-histories git merge branch_change_file_location --allow-unrelated-histories
 git commit git commit
 +######### WAY 1 END
  
 # cleanup # cleanup
Line 38: Line 66:
 git branch -d branch_change_file_location git branch -d branch_change_file_location
  
-# optionally:+# optionally ​- rebase: 
 +# rebase can be problematic. Conflict will be on commonly used paths (readme, Makefile, src, etc) 
 +# between LLL and RRR repo 
 git rebase git rebase
 # push merged master # push merged master
Line 79: Line 109:
  
 </​code>​ </​code>​
 +
 +====== Split one file from repo ======
 + 
 +<code bash>
 +# reduce repo to one folder
 +git filter-branch --prune-empty --subdirectory-filter etc -- --all
 +
 +# reduce repo to some given file/files
 +git filter-branch -f --prune-empty --index-filter 'git rm --cached --ignore-unmatch $(git ls-files | grep -v "​tmarc.xsl\|check-pazpar2.sh"​)'​
 +
 +# clean
 +git reflog expire --expire=now --all && git gc --prune=now --aggressive
 +</​code>​
 +
 +