비어 있지 않은 기존 디렉토리를 Git 작업 디렉토리로 변환하고 파일을 원격 저장소로 푸시하는 방법


644
  1. 이름을 바꾸거나 이동하거나 삭제할 수없는 파일이 포함 된 비어 있지 않은 디렉토리 (예 : / etc / something)가 있습니다.

  2. 이 디렉토리를 git에 체크인하고 싶습니다.

  3. "git push"또는 이와 유사한 것을 사용 하여이 저장소의 상태를 다른 컴퓨터의 원격 저장소로 푸시 할 수 있기를 원합니다.

이것은 다음을 사용하여 Subversion을 사용하는 사소한 것입니다 (현재 Subversion을 사용하여 수행함).

svn mkdir <url> -m <msg>
cd <localdir>
svn co <url> .
svn add <files etc>
svn commit -m <msg>

자식은 무엇입니까?

빈 디렉터리에 "git clone"하고 .git 디렉터리를 옮기고 모든 것이 작동하도록 할 수 있습니까?


5
어쩌면 나는 그것을 얻지 못하지만 git init로컬 디렉토리 안에서 실행할 수는 없습니까?
Philipp

다른 위치에 리포지토리가 있고 해당 리포지토리가 아닌 다른 디렉토리의 모든 내용을 리포지토리에 추가 하시겠습니까? 아니면 그 디렉토리에 새 저장소를 만들려고합니까?
Cascabel

많은 답변이 github을 언급하지만 질문 자체는 git에 관한 것입니다. github는 git이 아니며 git 유니버스의 중심이 아닙니다.
vfclists 2016 년

답변:


1056

git 데몬을 설정 <url>하고 빈 저장소를 설정 한 경우 :

cd <localdir>
git init
git add .
git commit -m 'message'
git remote add origin <url>
git push -u origin master

12
abyx의 지침이 작동하는 것 같습니다. 지금 실행 수행 git config branch.master.remote origin하고 git config branch.master.merge refs/heads/master 무엇을 내가 원격 저장소를 복제하는 경우와 정확히 동일합니다 끝낼 것인가? 즉 git pullgit push것입니다 그냥 작동 ?
HMW

34
이것은 또한 나를 위해 일했습니다. 먼저 AppNameGitHub 에서 프로젝트 를 만들어야했습니다 . 그 <url>수단을 정확하게 이해하지 못했습니다 . 따라서 같은 질문을하는 사람들에게는 GitHub.com을 간단하게 사용하고, 우리는 repo를 실행하지 않고 <url>, 5 번째 줄에서 사용 된 것과 같이 다음과 같이 보입니다 :https://github.com/CompanyName/AppName
Bart

12
GitHub에없는 리포지토리를 설정하는 경우 'git --bare init'을 사용하여 빈 원격 리포지토리 를 설정하고 'git init'(내가했던 것처럼)이 아닌 푸시를 실패해야합니다.
jdusbabek

3
git pull --rebase
Artemix

6
remote에 약간의 변경 사항 (.README, .gitignore 등)이 포함되어 git이 거부 git pull origin master --allow-unrelated-histories하면 병합을 시도하십시오 .
karlisup

80

이것이 내가하는 방법입니다. 도대체 무슨 일이 일어나고 있는지 이해하기 위해 설명을 추가했습니다.

로컬 리포지토리 초기화

  • 먼저 Git을 초기화하십시오.

    자식 초기화

  • 버전 관리를 위해 모든 파일 추가

    git add.

  • 선택한 메시지로 커밋 만들기

    자식 커밋 -m 'AddingBaseCode'

원격 리포지토리 초기화

  • GitHub에서 프로젝트를 생성하고 프로젝트의 URL을 복사하십시오. 아래 그림과 같이:

    여기에 이미지 설명을 입력하십시오

로컬 저장소와 원격 저장소 연결

  • 이제 복사 한 URL을 사용하여 로컬 리포지토리를 원격 GitHub 리포지토리에 연결하십시오. git clone으로 저장소를 복제하면 복제 된 저장소를 다시 가리키는 origin 이라는 원격 연결이 자동으로 작성됩니다 . remote 명령은 일련의 추적 된 저장소를 관리하는 데 사용됩니다.

    git remote add origin https://github.com/hiteshsahu/Hassium-Word.git

동기화

  • 이제 로컬 코드와 원격 코드를 병합해야합니다. 그렇지 않으면 GitHub에서 코드를 푸시 할 수 없습니다. 코드를 푸시하기 전에 'git pull'을 호출해야합니다.

    git pull origin master-관련이없는 기록 허용

코드 커밋

  • 마지막으로 GitHub의 모든 변경 사항을 푸시하십시오.

    자식 푸시 -u 원점 마스터


1
이 게시물에 설명 된 것처럼 "git pull"을 실행하고 오류가 발생했습니다. 승인 된 "git push"를 계속 사용했으며 Bonobo Git Server로 이동하면 변경 내용을 볼 수 있습니다. GIT 명령에 대한 명확한 설명이있는이 게시물에 감사드립니다.
schlebe

"의 의미는 다음과 같습니다."프로젝트의 URL을 복사하고 프로젝트의 URL을 복사하십시오. "이것은 입력 오류이거나 두 개의 다른 URL에 대해 이야기하려고합니까?
gwideman

타이포그래피 실수는 스크린 샷과 같이 프로젝트의 URL을 복사하는 것입니다.
Hitesh Sahu

2
이것은 정답이며 받아 들여 져야합니다. 수락 된 답변에 "동기화"단계가 없습니다.
Ilan

28

내 해결책은 다음과 같습니다.

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master

.gitignore&README.dm
Hattori Hanzō로

12

원격 저장소가 비어 있지 않은 경우 (hub.jazz.net에서 IBM DevOps를 사용하는 경우) 다음 순서를 사용해야합니다.

cd <localDir>
git init
git add -A .
git pull <url> master
git commit -m "message"
git remote add origin <url>
git push

1 월 30 일 수정 : 아래의 의견을 참조하십시오. 정확한 리포지토리에 있는지 확인하십시오!


위의 명령은 모든 닦아 기존 빌드 :(하십시오 운동주의 위의 단계를 수행하기 전에
셀레늄 프레임 워크

7

githubore 및 라이센스와 같이 github 저장소가 비어 있지 않은 경우

사용 풀 --allow-관련이없는-역사푸시 --force-와-임대

명령 사용

git init
git add .
git commit -m "initial commit"
git remote add origin https://github.com/...
git pull origin master --allow-unrelated-histories
git push --force-with-lease

1
마지막 문장을 좀 더 비슷하게 수정해야했습니다git push -u origin master --force-with-lease
cfont

2

내가 유용하다고 생각하는 가장 간단한 방법은 다음과 같습니다.

이것은 공식적인 방법은 아니지만 잘 작동합니다.

XYZPC에 " "(이) 라는 프로젝트가 있다고 가정 하십시오. 이제 github에서이 프로젝트의 git repo를 만들고 그 기능을 사용하려고합니다.

1 단계 : " www.github.com" 로 이동

2 단계 : " README.md"파일을 사용하여 저장소를 작성 하십시오 (원하는대로 이름 지정)

3 단계 : 리포지토리를 PC에 복제합니다.

4 단계 : 복제 된 폴더에는 " .git"폴더와 " README.md"파일의 두 가지가 있습니다. 이 폴더를 프로젝트 폴더 " XYZ" 에 복사하십시오 .

5 단계 : 복제 된 저장소를 삭제합니다.

6 단계 : 프로젝트의 모든 파일과 폴더를 추가, 커밋 및 푸시합니다.

이제 " XYZ" 프로젝트를 git 저장소로 사용할 수 있습니다 .


0

나는 비슷한 문제가 있었다. 리포지토리를 만들려는 디렉토리가 아닌 새 리포지토리를 만들었습니다 . 그런 다음 생성 된 파일을 리포지토리를 만들려는 디렉토리에 복사했습니다. 그런 다음 방금 파일을 복사 한 디렉토리를 사용하여 기존 리포지토리를 엽니 다.

참고 : github desktop을 사용하여 종료 저장소를 만들고 열었습니다.


0

다음은 기본 readme file또는 일부 저장소를 만든 경우 내 솔루션입니다.license

git init
git add -A
git commit -m "initial commit"   
git remote add origin https://<git-userName>@github.com/xyz.git //Add your username so it will avoid asking username each time before you push your code
git fetch
git pull https://github.com/xyz.git <branch>
git push origin <branch> 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.