programing tip

svn 및 / 또는 git에서 파일을 "버전 해제"하는 방법

itbloger 2020. 11. 11. 08:12
반응형

svn 및 / 또는 git에서 파일을 "버전 해제"하는 방법


나에게 항상 일어난다. 실수로 파일의 버전을 지정했는데 버전 지정을 원하지 않습니다 (예 : 개발자 / 컴퓨터 특정 구성 파일).

이 파일을 커밋하면 다른 모든 개발자 컴퓨터의 경로를 엉망으로 만들 것입니다. 그들은 불행 할 것입니다.

버전 관리에서 파일을 삭제하면 다른 개발자 컴퓨터에서 삭제됩니다. 그들은 불행 할 것입니다.

파일을 커밋하지 않기로 선택하면 항상 "더러운"체크 아웃이 발생합니다. 불행합니다.

개정 제어에서 파일을 "버전 해제"하는 깨끗한 방법은 아무도 불행하지 않게할까요?

편집 : 조금 명확히하기 위해 : 이미 파일을 저장소에 커밋했으며 버전 관리에서만 제거하고 싶습니다. 특히 체크 아웃을 수행하는 모든 사람으로부터 파일이 물리적으로 삭제되는 것을 원하지 않습니다. 처음에는 무시하고 싶었습니다.

답변 : 두 번째 답변을 수락 할 수 있다면 이것은이 . 그것은 git에 관한 내 질문에 대답합니다-허용되는 대답은 svn에 관한 것입니다.


SVN 버전 1.5는 로컬 파일 손실없이 저장소에서 파일 제거 / 삭제를 지원합니다.

http://subversion.tigris.org/svn_1.5_releasenotes.html 에서 가져옴

새로운 --keep-local 옵션은 삭제 후에도 경로를 유지합니다 ..

삭제 (제거)는 이제 대상을 로컬로 유지하기 위해 --keep-local 옵션을 사용하므로 수정하지 않은 경우에도 경로가 제거되지 않습니다.


Git에서는 트리에서 삭제하고 작업 디렉토리에서 삭제하지 않으려면 다음과 같이 --cached 플래그를 사용할 수 있습니다.

git rm --cached <filename>

실수로 svn에 파일을 '추가'하고 커밋하지 않은 경우 해당 파일을 되돌릴 수 있으며 추가를 제거합니다.


시도하지 않고 ...

변경 사항이 다른 저장소에 전파되지 않은 경우 자식에서, 당신은 해야 할 일 git rm, 영향을받는 파일 (들) git rebase --interactive스쿼시 다음이있는 실수로 잘못된 파일을 추가 투입 직후로 삭제를 커밋 순서,하고 이 두 가지가 함께 커밋됩니다.

물론 다른 사람이 변경 사항을 가져온 경우에는 도움이되지 않습니다.


이미 Subversion에 파일을 추가하고 커밋 한 것처럼 들립니다 (Subversion을 사용하고 있다고 가정합니다). 이 경우 해당 파일을 제거하는 방법은 두 가지뿐입니다.

  1. 파일을 삭제됨으로 표시하고 커밋합니다.
  2. 을 수행하고 svnadmin dump실수로 파일을 커밋 한 개정판을 필터링 한 다음 svnadmin load.

저를 믿으세요. 2 번을하고 싶지는 않습니다. 저장소의 모든 작업 복사본이 무효화됩니다. 가장 좋은 방법은 1 번을 수행하고 파일을 무시한 것으로 표시하고 사과하는 것입니다.


svn : ignore 및 .gitignore 검색-이 기능을 사용하면 체크 아웃시 RCS에서 무시되는 추가 파일을 가질 수 있습니다 ( "상태"작업 등을 수행 할 때).

기계 별 설정 파일의 경우, 추가 ".sample"확장자를 가진 파일을 체크인하는 것이 좋습니다. config.xml.sample. 개별 개발자는이 파일의 복사본을 만들고 config.xml시스템에 맞게 조정합니다. svn : ignore 또는 .gitignore를 사용하면 버전이 config.xml지정되지 않은 파일이 항상 더티 파일로 표시되지 않도록 할 수 있습니다 .

편집에 대한 응답 : 지금 저장소에서 파일을 제거하면 개발자가 다음에 업데이트를 수행 할 때 충돌이 발생합니다 (모두 시스템의 파일을 변경했다고 가정). 로컬 변경 사항을 잃지 않고 어딘가에서 복구 할 수 있습니다. 로컬 변경을하지 않은 경우 구성 파일이 사라지지만 이전 파일을 소스 제어에서 다시 가져 와서 사용할 수 있습니다.


git 저장소에서 파일을 완전히 제거하려면 (암호가있는 파일을 커밋했거나 실수로 임시 파일을 커밋했다고 가정 해 보겠습니다)

git filter-branch --index-filter 'git update-index --remove filename' HEAD

그런 다음 커밋해야한다고 생각하고 원격 브랜치에 있으면 -f를 눌러야한다고 생각합니다 (저장소의 기록을 변경하기 시작하면 사람들을 짜증나게 할 수 있습니다. 그리고 이전에 사용자로부터 가져온 적이 있다면 파일을 여전히 가질 수 있음을 기억하십시오)


이미 소스 제어에있는 파일을 제거하려면 :

git rm <filename>

그리고

git commit -m ...

무시할 모든 파일을 .gitignore 파일에 추가해야합니다. 또한 항상 .gitignore 파일을 내 저장소로 확인하므로 누군가가 자신의 컴퓨터에서 코드를 확인하고 파일이 다시 생성되면 '더러운'것으로 '보지'않습니다.

물론 이미 파일을 커밋하고 다른 사람이 다른 컴퓨터에서 변경 사항을받은 경우 기록을 수정하려면 모든 로컬 저장소를 변경해야합니다. 적어도 그것은 git의 가능한 해결책입니다. 나는 svn이 당신에게 그렇게 할 것이라고 생각하지 않습니다.

파일이 이미 마스터 리포지토리 (git) 또는 서버 (svn)에있는 경우 다른 커밋에서 파일을 삭제하는 것보다 더 나은 솔루션이 없다고 생각합니다.


SVN의 경우 아직 커밋하지 않은 파일을 되돌릴 수 있습니다. TortoiseSVN에서 커밋 창에서 파일을 마우스 오른쪽 버튼으로 클릭하고 되돌리기 ...를 선택합니다.

명령 줄에서 svn revert [file] 사용

GIT를 사용한 적이 없기 때문에 모르겠습니다.


SVN에서 간단한 두 단계 :
1. 상위 디렉터리의 svn : ignore 속성에이 디렉터리를 추가합니다.

svn propedit svn:ignore .  

2. 디렉토리 제거 :

svn rm mydir

3. 커밋

Please note that when other developers do a svn update, that directory will not get deleted. SVN just unversions it instead.


As far as I know there is no easy way to remove an added file from versioning control in svn once it is committed.

You will have to save the file somewhere else and delete it from version control. Than copy the backup back again.

It's a version control system after all... ;)


You can exclude files from subversion with the global-ignore setting
http://svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-sect-1.3.2
check out the documentation for details


I there f I choose to never commit the file, I always have a "dirty" checkout - I am unhappy.

With regard to this particular point, you might want to .gitignore the file as other have suggested, or to use a scheme like the one described in this answer of mine.


You can unversion all files in current directory with this command. The sed bit reverses the order so svn can process it:

find . | sed '1!G;h;$!d'| awk '{print "svn rm --keep-local " $1}'

As already stated in other answers, single file is unversioned with this:

svn rm --keep-local yourFileNameXXX

In Windows, if what you are looking for is copying the folder to another location and removing it from git, so that you don't see the icons anymore, you just delete the .git folder. The .git folder is hidden, so you have to go to Organize / Folder and Search Options, Display hidden Files option, under your main folder. It should unversion it.

참고URL : https://stackoverflow.com/questions/27695/how-to-unversion-a-file-in-either-svn-and-or-git

반응형