728x90
반응형

개발관련/Git 300

Git 커밋의 출처 찾기

질문 : Git 커밋의 출처 찾기 SHA-1 해시 값이 주어지면 커밋이 어떤 분기에서 오는지 알아내는 방법이 있습니까? Ruby Grit을 사용하여이 작업을 수행하는 방법을 알려 주시면 보너스 포인트를드립니다. 답변 Dav는 정보가 직접 저장되지 않는다는 것이 맞지만, 그것이 당신이 알 수 없다는 것을 의미하지는 않습니다. 다음은 수행 할 수있는 몇 가지 작업입니다. 커밋이 있는 브랜치를 찾습니다. git branch -a --contains 이것은 그들의 역사에서 주어진 커밋을 가진 모든 지점을 알려줄 것입니다. 커밋이 이미 병합 된 경우 분명히 유용하지 않습니다. 재로그 검색 커밋이 생성 된 리포지토리에서 작업하는 경우 해당 커밋 행에 대한 reflog를 검색 할 수 있습니다. 90 일이 지난 리플 ..

개발관련/Git 2022.03.29

git stash 적용 버전

질문 : git stash 적용 버전 2 개의 브랜치가 있습니다. 마스터 | 디자인 디자인 작업을하면서 저는 은닉을하고 마스터로 전환하고 약간의 조정을했습니다. 디자인으로 다시 전환하고 디자인 브랜치의 모든 변경 사항을 잃을 때만 stash apply 나는 이것을 지우거나 제거하지 않았기 때문에 내 모든 작업이 숨겨져 있기를 바랍니다. 숨김 목록을 작성하면 4 개의 결과가 나타납니다. stash@{0}: WIP on design: f2c0c72... Adjust Password Recover Email stash@{1}: WIP on design: f2c0c72... Adjust Password Recover Email stash@{2}: WIP on design: eb65635... Email Adju..

개발관련/Git 2022.03.29

삭제 된 줄을 "git blame" 하는 방법

질문 : 삭제 된 줄을 "git blame"하려면 어떻게해야합니까? git blame 은 수정 및 추가 된 줄에 적합하지만 특정 이전 커밋에 있던 줄이 결국 삭제 된시기를 어떻게 알 수 있습니까? bisect 라고 생각하고 있지만 더 편리한 것을 바라고 있었다. (당신이하기 전에 :이 경우, 난 그냥 한 git log -p 하고 코드 라인을 위해를 통하여 검색의 (a) 어떤 바보가 그냥 그 바보했다) B (이전 커밋에서 중요한 라인을 삭제했다.) 답변 줄의 내용을 알고 있다면 다음과 같은 이상적인 사용 사례입니다. git log -S path/to/file 해당 문자열의 인스턴스를 도입하거나 제거하는 커밋을 보여줍니다. 정규 표현식과 똑같은 일을 -G 도 있습니다! 자세한 내용은 man git-log 참..

개발관련/Git 2022.03.29

git "Commit your changes or stash them before you can merge"

질문 : "병합하기 전에 변경 사항을 커밋하거나 숨길 수 있습니다"라고 말하는 git을 어떻게 해결합니까? 내 로컬 컴퓨터에서 몇 가지 업데이트를 수행하고 원격 저장소로 푸시 한 다음 변경 사항을 서버로 가져 오려고하는데 메시지가 표시됩니다. error: Your local changes to the following files would be overwritten by merge: wp-content/w3tc-config/master.php Please, commit your changes or stash them before you can merge. 그래서 나는 달렸다. git checkout -- wp-content/w3tc-config/master.php 다시 시도했는데 같은 메시지가 나타납니다..

개발관련/Git 2022.03.29

[MacOs] Git 저장소에서 .DS_Store 파일을 제거하는 방법

질문 : Git 저장소에서 .DS_Store 파일을 제거하려면 어떻게해야합니까? Git 저장소에서 이러한 성가신 Mac OS X .DS_Store 답변 저장소에서 기존 파일을 제거하십시오. find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch 다음 줄을 추가하십시오. .DS_Store .gitignore 파일에 추가합니다 (또는 아직없는 경우 파일을 만듭니다). 최상위 디렉토리에서 다음 명령을 사용하여 쉽게 수행 할 수 있습니다. echo .DS_Store >> .gitignore 그런 다음 파일을 저장소에 커밋합니다. git add .gitignore git commit -m '.DS_Store banished!' 출처 : https..

개발관련/Git 2022.03.29

병합 충돌을 일으키는 git stash pop 실행 취소 명령어

질문 : 병합 충돌을 일으키는 git stash pop 실행 취소 나는 내가 오래된 토픽 브랜치에 있다는 것을 깨닫지 못하고 내 코드베이스를 변경하기 시작했다. 그것들을 옮기기 위해 나는 그것들을 숨긴 다음 master의 새로운 브랜치에 적용하고 싶었습니다. git stash pop 을 사용하여 진행중인 작업 변경 사항을이 새 분기로 전송하고 새 분기를 만들기 전에 새 변경 사항을 마스터로 가져 오지 않았다는 사실을 잊었습니다. 이로 인해 병합 충돌이 많이 발생하고 변경 사항이 정리되지 않았습니다 (팝을 사용했기 때문에). 새 브랜치를 올바르게 다시 생성 한 후 숨김 변경 사항을 복구하여 올바르게 적용하려면 어떻게해야합니까? 답변 결과적으로 Git은 깔끔하게 적용되지 않으면 은닉 물을 떨어 뜨리지 않을만..

개발관련/Git 2022.03.29

Git 푸시할 때 로그인을 생략하는 방법 (ssh 활용)

질문 : Git 푸시에는 사용자 이름과 비밀번호가 필요합니다. 내 GitHub 계정에서 내 PC로 Git 저장소를 복제했습니다. 내 PC와 노트북 모두에서 작업하고 싶지만 하나의 GitHub 계정으로 작업하고 싶습니다. 내 PC를 사용하여 GitHub로 푸시하거나 가져 오려고 할 때 사용자 이름과 암호가 필요하지만 랩톱을 사용할 때는 필요하지 않습니다! origin 과 상호 작용할 때마다 사용자 이름과 암호를 입력하고 싶지 않습니다. 내가 여기서 무엇을 놓치고 있습니까? 답변 일반적인 원인은 SSH 대신 기본값 (HTTPS)을 사용하여 복제하는 것입니다. 저장소로 이동하여 "복제 또는 다운로드"를 클릭 한 다음 URL 필드 위의 "SSH 사용"버튼을 클릭하고 다음과 같이 원본 원격의 URL을 업데이트하여..

개발관련/Git 2022.03.26

GitHub와 Gist의 차이점

질문 : GitHub와 Gist의 차이점은 무엇입니까? Gist의 목적은 무엇이며 GitHub를 사용한 일반 코드 공유 / 유지 관리와 어떻게 다른가요? 답변 GitHub는 전체 사이트입니다. 요지는 해당 사이트에서 제공되는 특정 서비스, 즉 pastebin과 유사한 코드 조각입니다. 그러나 모든 것은 git 개정 제어에 의해 구동되므로 요점은 완전한 개정 내역도 보유하고 있습니다. 출처 : https://stackoverflow.com/questions/6767518/what-is-the-difference-between-github-and-gist

개발관련/Git 2022.03.26

Git 커밋에서 파일을 제거 하는 방법

질문 : Git 커밋에서 파일 제거 나는 Git을 사용하고 있으며 git commit -a 나중에 파일이 실수로 커밋에 추가되었음을 발견했습니다. 마지막 커밋에서 파일을 제거하려면 어떻게해야합니까? 답변 이것은 실수로 커밋 된 파일을 변경 사항을 취소하지 않고 이전 커밋에서 스테이징 영역으로 다시 이동하는 문제이기 때문에 여기에 다른 답변이 잘못되었다고 생각합니다. 이것은 Paritosh Singh이 제안한 것처럼 수행 할 수 있습니다. git reset --soft HEAD^ 또는 git reset --soft HEAD~1 그런 다음 커밋에서 제외하기 위해 원하지 않는 파일을 재설정합니다. git reset HEAD path/to/unwanted_file 이제 다시 커밋하면 동일한 커밋 메시지를 다시 ..

개발관련/Git 2022.03.26

git branch, fork, fetch, merge, rebase 및 clone의 차이점

질문 : git branch, fork, fetch, merge, rebase 및 clone의 차이점은 무엇입니까? Git에서 브랜치, 포크 및 클론의 차이점을 이해하고 싶습니까? git pull 아닌 git fetch 를 수행하는 것은 무엇을 의미합니까? merge 과 비교하여 rebase 는 무엇을 의미합니까? 개별 커밋을 어떻게 함께 스쿼시 할 수 있습니까? 그들은 어떻게 사용되며, 왜 사용되며 무엇을 나타 냅니까? GitHub는 어떻게 계산됩니까? 답변 복제본은 단순히 저장소의 복사본입니다. 표면적으로 그 결과는 다른 저장소에서 소스 코드를 다운로드 svn checkout Subversion과 같은 중앙 집중식 VCS와 Git과 같은 DVCS의 차이점은 Git에서 복제 할 때 실제로 모든 기록 및..

개발관련/Git 2022.03.26

git 태그 란 무엇이며 태그를 만드는 방법 및 git 원격 태그를 확인하는 방법

질문 : git 태그 란 무엇이며 태그를 만드는 방법 및 git 원격 태그를 확인하는 방법 원격 git 태그를 체크 아웃 할 때 다음과 같은 명령을 사용하십시오. git checkout -b local_branch_name origin/remote_tag_name 다음과 같은 오류가 발생했습니다. error: pathspec `origin/remote_tag_name` did not match any file(s) known to git. git tag 명령을 사용하면 remote_tag_name을 찾을 수 있습니다. 답변 태그는 히스토리에서 특정 커밋 에 레이블을 지정하고 표시하는 데 사용됩니다. 일반적으로 릴리스 지점을 표시하는 데 사용됩니다 (예 : v1.0 등). 태그가 분기와 비슷하게 보일 수 ..

개발관련/Git 2022.03.26

Git 기록에서 커밋 된 코드를 grep (검색)하는 방법

질문 : Git 기록에서 커밋 된 코드를 grep (검색)하는 방법 과거에 파일 또는 파일의 일부 코드를 삭제했습니다. 커밋 메시지가 아닌 콘텐츠에서 grep 할 수 있습니까? 매우 좋지 않은 해결책은 로그를 grep하는 것입니다. git log -p | grep 그러나 이것은 커밋 해시를 즉시 반환하지 않습니다. 나는 git grep 을 사용하여 아무 소용이 없었습니다. 답변 커밋 내용 (즉, 커밋 메시지 등이 아닌 실제 소스 라인)을 검색하려면 다음을 수행해야합니다. git grep $(git rev-list --all) git rev-list --all | xargs git grep 은 "Argument list too long"오류가 발생하면 작동합니다. 검색을 일부 하위 트리 (예 : "lib ..

개발관련/Git 2022.02.01

git에서 별칭 명령을 수행하는 방법

질문 : git에서 별칭 명령을 어떻게 수행합니까? 누군가가 얻은 스크린 캐스트를 봤어 git st git ci 일하다. 내가 그것을 할 때 다른 것을 의미하는지 묻는 오류가 발생합니다. git newb이기 때문에이 작업을 수행하려면 무엇을해야하는지 알아야합니다. 답변 ~/.gitconfig 줄을 추가하면됩니다. [alias] st = status ci = commit -v 또는 git config alias 명령을 사용할 수 있습니다. $ git config --global alias.st status Unix에서 별칭에 공백이 있으면 작은 따옴표를 사용합니다. $ git config --global alias.ci 'commit -v' Windows에서 별칭에 공백이나 명령 줄 인수가 있으면 큰 따옴..

개발관련/Git 2022.02.01

Git에서 태그가 가리키는 커밋을 확인하는 방법

질문 : Git에서 태그가 가리키는 커밋을 확인하는 방법은 무엇입니까? 저장소에 주석이없는 태그가 많이 있고 어떤 커밋을 가리키는 지 알아 내고 싶습니다. 태그와 커밋 SHA를 나열하는 명령이 있습니까? 태그를 확인하고 HEAD를 보는 것은 나에게 너무 힘들어 보입니다. 나는 응답을 통해 내가 실제로 원했던 것은 단순히 태그에 이르는 히스토리를 보는 것임을 깨달았습니다. git log 이면 충분합니다. 답변으로 표시된 답변은 태그 및 커밋 목록을 얻는 데 유용합니다. 약간의 셸 해커를 사용하면이를 SHA + Commit 메시지로 변환 할 수 있다고 확신합니다. 답변 이를 수행하는 한 가지 방법은 git rev-list 입니다. 다음은 태그가 가리키는 커밋을 출력합니다. $ git rev-list -n 1..

개발관련/Git 2022.01.17

이전 커밋에서 새 Git 브랜치를 생성하는 방법

질문 : 이전 커밋에서 새 Git 브랜치를 어떻게 생성합니까? 중복 가능성 / 더 최근 / 덜 명확한 질문 Git을 사용하여 이전 커밋에서 분기 jzbranch 라는 Git 분기가 있고 이전 커밋 ID : a9c146a09505837ec03b 있습니다. 위에 나열된 정보에서 새 브랜치 justin 답변 git checkout -b NEW_BRANCH_NAME COMMIT_ID 이렇게하면 'NEW_BRANCH_NAME'이라는 새 브랜치가 생성되고 확인됩니다. ( "체크 아웃"은 "지점으로 전환"을 의미) git branch NEW_BRANCH_NAME COMMIT_ID 이것은 체크 아웃하지 않고 새 분기를 만듭니다. 댓글에서 많은 사람들이이 작업을 두 단계로 수행하는 것을 선호하는 것 같습니다 . 두 단계..

개발관련/Git 2022.01.17

더 이상 원격 저장소에 없는 로컬 git 태그 제거 하는 방법

질문 : 더 이상 원격 저장소에없는 로컬 git 태그 제거 배포 프로세스의 일부로 git에서 태그를 사용합니다. 때때로 우리는 원격 저장소에서 태그를 제거하여 이러한 태그를 정리하려고합니다. 이것은 매우 간단합니다. 한 사용자가 한 세트의 명령에서 로컬 태그와 원격 태그를 삭제합니다. 두 단계를 결합한 작은 쉘 스크립트가 있습니다. 이제 두 번째 (세 번째, 네 번째, ...) 사용자는 더 이상 리모컨에 반영되지 않는 로컬 태그를 갖게됩니다. 원격 분기가 삭제 된 로컬 추적 분기를 정리하는 git remote prune origin 과 유사한 명령을 찾고 있습니다. 또는 원격 태그를 나열하는 간단한 명령을 사용하여 git tag -l 통해 반환 된 로컬 태그와 비교할 수 있습니다. 답변 좋은 질문. :)..

개발관련/Git 2022.01.17

아직 푸시되지 않은 Git 병합 실행 취소 하는 방법

질문 : 아직 푸시되지 않은 Git 병합 실행 취소 내 마스터 브랜치 내에서 git merge some-other-branch 로컬로 수행했지만 변경 사항을 원본 마스터에 푸시하지 않았습니다. 병합하려는 의도가 아니 었으므로 실행 취소하고 싶습니다. git status 수행 할 때 다음 메시지가 표시되었습니다. # On branch master # Your branch is ahead of 'origin/master' by 4 commits. 내가 찾은 지침에 따라 실행을 시도했습니다. git revert HEAD -m 1 git status 로이 메시지가 표시됩니다. # On branch master # Your branch is ahead of 'origin/master' by 5 commits. 내..

개발관련/Git 2022.01.17

로컬 Git 변경 사항을 제거하는 다양한 방법

질문 : 로컬 Git 변경 사항을 제거하는 다양한 방법 방금 git 저장소를 복제하고 브랜치를 확인했습니다. 작업 한 다음 원본을 원했기 때문에 로컬 변경 사항을 모두 제거하기로 결정했습니다. 즉, 로컬 변경 사항을 제거하려면 다음 두 명령을 수행해야했습니다. git checkout . git clean -f 제 질문은 (1) 이것이 로컬 변경 사항을 제거하는 올바른 접근 방식입니까, 아니면 올바른 접근 방식을 알려주십시오. (2)이 명령 없이도 재설정 할 수 git reset --hard 감사 * Solution : Major Edit (s) : 03/26 : * 많은 모호한 용어를 git 특정 용어로 대체했습니다. [tracked / untracked / staged / unstaged] 로컬 변경을..

개발관련/Git 2022.01.06

Git에서 쉘 명령을 실행할 때 사용할 개인 SSH 키를 지정하는 방법

질문 : Git에서 쉘 명령을 실행할 때 사용할 개인 SSH 키를 지정하는 방법은 무엇입니까? 다소 특이한 상황 일 수 있지만 로컬 컴퓨터에서 git ) 명령을 실행할 때 사용할 개인 SSH 키를 지정하고 싶습니다. 기본적으로 다음과 같습니다. git clone git@github.com:TheUser/TheProject.git -key "/home/christoffer/ssh_keys/theuser" 또는 더 나은 (Ruby에서) : with_key("/home/christoffer/ssh_keys/theuser") do sh("git clone git@github.com:TheUser/TheProject.git") end 지정된 개인 키를 사용하는 Net::SSH 로 원격 서버에 연결하는 예를 보았지..

개발관련/Git 2022.01.06

Git에서 마스터 브랜치를 완전히 다른 브랜치에서 대체하는 방법

질문 : Git에서 마스터 브랜치를 완전히 다른 브랜치에서 대체하는 방법은 무엇입니까? 내 Git 저장소에 두 개의 분기가 있습니다. master 로 병합 할 의도로 seotweaks 를 만들었습니다. 그러나 그것은 3 개월 전이고이 브랜치의 코드는 master 보다 13 개 버전이 앞서 있습니다. 의 코드 모든 그것은 효과적으로 우리의 작업 마스터 지점이되었다 master 지금은 다소되지 않습니다. 내가 아는 아주 나쁜 연습, 교훈을 얻었습니다. master 브랜치 seotweaks 에있는 콘텐츠로 대체 할 수있는 방법을 알고 있습니까? master 에서 모든 것을 삭제하고 병합 할 수 있지만 이것이 모범 사례처럼 느껴지지 않습니다. 답변 "ours"병합 전략을 사용하여 마스터를 다음과 같이 seotw..

개발관련/Git 2021.12.29

GitHub에서 직접 npm 패키지를 설치하는 방법

질문 : GitHub에서 직접 npm 패키지를 설치하는 방법은 무엇입니까? github에서 모듈을 설치하려고하면 다음과 같은 결과가 발생합니다. package.json에 ENOENT 오류가 있습니다. Express를 사용하여 쉽게 재현 : npm install https://github.com/visionmedia/express 오류가 발생합니다. npm install express 작품. github에서 설치할 수없는 이유는 무엇입니까? 다음은 콘솔 출력입니다. npm http GET https://github.com/visionmedia/express.git npm http 200 https://github.com/visionmedia/express.git npm ERR! not a package /..

개발관련/Git 2021.12.29

체크 아웃을 사용하지 않고 Git 브랜치를 병합, 업데이트 및 가져 오기

질문 : 체크 아웃을 사용하지 않고 Git 브랜치를 병합, 업데이트 및 가져 오기 저는 A와 B라는 두 개의 분기가있는 프로젝트에서 작업합니다. 저는 일반적으로 분기 A에서 작업하고 분기 B의 항목을 병합합니다. 병합을 위해 일반적으로 다음을 수행합니다. git merge origin/branchB 그러나 분기 A와 먼저 병합하지 않고 때때로 분기를 체크 아웃 할 수 있으므로 분기 B의 로컬 복사본도 유지하고 싶습니다.이를 위해 다음을 수행합니다. git checkout branchB git pull git checkout branchA 분기를 앞뒤로 전환하지 않고도 하나의 명령으로 위의 작업을 수행 할 수있는 방법이 있습니까? 이를 git update-ref 를 사용해야합니까? 어떻게? 답변 짧은 답변..

개발관련/Git 2021.12.29

Git blame -- prior commits

질문 : 힘내 비난 — 이전 커밋? 주어진 줄에 대한 커밋 기록과 같이 git blame 의해보고 된 커밋 전에 특정 줄을 편집 한 사람을 볼 수 있습니까? 예를 들어, 다음을 실행합니다 (최고의 uncrustify 프로젝트에서). $ git blame -L10,+1 src/options.cpp ^fe25b6d (Ben Gardner 2009-10-17 13:13:55 -0500 10) #include "prototypes.h" fe25b6d 를 커밋 하기 전에 누가 그 줄을 편집했는지 어떻게 알 수 있습니까? 그리고 그 커밋 전에 누가 그것을 편집 했습니까? 답변 git blame -L 10,+1 fe25b6d^ -- src/options.cpp HEAD 대신 처음부터 되돌아 볼 개정을 지정할 수 있습..

개발관련/Git 2021.12.29

기록이있는 SVN 저장소를 새 Git 저장소로 마이그레이션하는 방법

질문 : 기록이있는 SVN 저장소를 새 Git 저장소로 마이그레이션하려면 어떻게해야합니까? 나는 Git 매뉴얼, FAQ, Git-SVN 크래시 코스 등을 읽었으며 모두 이것 저것 설명하지만 다음과 같은 간단한 지침은 어디에서도 찾을 수 없습니다. SVN 저장소 : svn://myserver/path/to/svn/repos Git 저장소 : git://myserver/path/to/git/repos git-do-the-magic-svn-import-with-history \ svn://myserver/path/to/svn/repos \ git://myserver/path/to/git/repos 나는 그것이 그렇게 단순 할 것이라고 기대하지 않으며 단일 명령이 될 것이라고 기대하지 않습니다. 그러나 나는 그..

개발관련/Git 2021.12.29

git composer.lock을 버전 제어에 적용 해야 할까?

질문 : composer.lock을 버전 제어에 적용해야합니까? 저장소가있는 응용 프로그램에서 사용되는 composer.lock 과 약간 혼동됩니다. 많은 사람들이 저장소에서 composer.lock .gitignore 해서는 안된다고 말하는 것을 보았습니다. 내 개발 환경에서 라이브러리를 업데이트하면 새 composer.lock 이 생기지 만 프로덕션으로 업데이트 할 수 없습니다. 이 파일에 충돌이 발생하지 않습니까? 답변 libs를 업데이트하는 경우 잠금 파일도 커밋해야합니다. 기본적으로 프로젝트가 사용중인 특정 버전의 라이브러리에 잠겨 있음을 나타냅니다. 변경 사항을 커밋하고 누군가가 코드를 가져와 종속성을 업데이트하는 경우 잠금 파일은 수정되지 않아야합니다. 수정 되었다면 새로운 버전이 있다는 뜻..

개발관련/Git 2021.12.29
728x90
반응형