2016-09-28 93 views
0

我正在將SVN存儲庫遷移到Git存儲庫。如何爲存儲庫中的所有分支創建.gitignore?

一旦我遷移了,我將SVN分支和標籤轉換成Git分支和標籤。

但是我嘗試使用以下命令將.gitignore添加到所有分支。它總是添加到當前工作分支。

git svn show-ignore > .gitignore 

如何爲所有分支添加.gitignore而不是當前分支中的命令在執行中。

回答

0

您可以遍歷分支並使用cherry-pick來應用包含gitignore文件的提交。

你可以使用這樣的腳本(git-apply-to-all-branches.sh):

#!/usr/bin/env bash 

sha=$1 

# get current branch name 
# http://stackoverflow.com/a/1593487/1401409 
branch_name="$(git symbolic-ref HEAD 2>/dev/null)" || 
branch_name="(unnamed branch)"  # detached HEAD 
branch_name=${branch_name##refs/heads/} 

# iterate over all branches 
git for-each-ref refs/heads | cut -d/ -f3- | while read branch; 
do 
    # skip current branch 
    [ $branch == $branch_name ] && continue 

    git checkout $branch 
    git cherry-pick $sha 
done 

而且假設你剛剛提交您的當前分支gitignore你可以調用:

./git-apply-to-all-branches.sh <sha_of_your_gitignore_commit> 
+0

可以寫沒有櫻桃採摘腳本? – virendrao

+0

另一種方法是將show-ignore的輸出放在.git/info/exclude中,如文檔中所建議的那樣。 https://git-scm.com/docs/git-svn#_basic_examples。那麼你甚至不需要提交它。 – loopkin

+0

但這種影響將保留在本地存儲庫..如果我推到遠程存儲庫其他開發人員拉和推代碼,其中包括忽略的文件,那麼它不會正常工作 – virendrao

相關問題