반응형

특히 git pull 한다고 해서 remote의 내용을 다 가져오는 것이 아니고 특정 branch만 가져오는 것

git pull remote명 branch명을 생략해서 쓰다보니 헷갈리는데 사실은 remote명 local branch명:remote branch명이 생략된 것

remote명은 보통 default인 origin을 쓰므로 origin이 생략된 것이고

branch명은 local에 --set-upstream으로 지정을 해두었으면 그 지정된 branch가 tracking branch로 사용됨, remote와 local의 쌍을 이름을 다르게 하면 매우 헷갈리므로 그렇게는 거의 안쓰므로 보통 local remote동일한 branch명으로 연결해둠

 

tracking branch 지정하기

  • git push --set-upstream origin master = git push -u origin master
  • 한번 tracking branch로 지정해두면 향후 git push/fetch/full 할 때 이후는 생략가능

 

그런 줄 알았는데 git pull 하니까 dev2nd, master둘다 pull함, 특정한 한 브랜치 아니고 tracking branch전부가 대상인듯 

 

반응형
반응형

문제현상)

  • vsCode > fetch시 다음에러 발생 This repository has no remotes configured to fetch from.
  • vsCode > 다시불러오기 아이콘 클릭시 No remotes found in the git config file.
  • vsCode > 마우스오른쪽버튼눌러 gitHistory 보기 클릭시
git rev-list --full-history --count main --  (completed in 0.554s)
fatal: bad revision 'main'

backend는 성공 -  vscode > git history

git rev-list --full-history --count develop -- factoryOne-FARMOS/src/main/resources/mappers/postgresql/mdm/mdmProcessInfo.xml  (completed in 0.684s)
git log --full-history --pretty=oneline --date-order --decorate=full --skip=0 --max-count=100 develop --follow -- factoryOne-FARMOS/src/main/resources/mappers/postgresql/mdm/mdmProcessInfo.xml  (completed in 0.697s)
git shortlog -e -s -n HEAD  (completed in 0.735s)

근데 왜 frontend는 실패? vscode > git history (branch가 main으로 잡히는 것이 문제인듯)

git rev-list --full-history --count main -- src/screen/dev/alarm/Alarm.js  (completed in 0.515s)
fatal: bad revision 'main'

git log --full-history --pretty=oneline --date-order --decorate=full --skip=0 --max-count=100 main --follow -- src/screen/dev/alarm/Alarm.js  (completed in 0.502s)
fatal: bad revision 'main'

git shortlog -e -s -n HEAD  (completed in 0.511s)
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

 

vsCode에서뿐 아니라 gitBash에서도 frontend소스만 자동으로 main이라는 브랜치로 잡힘

https://git.cj.net/에서 branch 확인시

main이라는 브랜치가 있기는 한데, 유휴상태인듯

  • Active branches: develop
  • Stale branches: main (3개월간 작업이 없는 브랜치)

 

참고로 stale brach삭제하려면

git remote prune origin

 

 

문제해결)

숨김폴더 보기해서 .git상태 확인해보니 

  •  factoryone-farmos: .git 있음 
    • factoryOne-FARMOS(backend): .git없음
    • farmos-web-app(frontend)  .git있음 -> 없앴더니 해결됨
반응형
반응형

git shortlog -s -n --all --no-merges

=git shortlog --summary --numbered --all --no-merges

 

--all: 모든 브랜치에 대해, 없으면 특정 브랜치에 대해서만? 

--no-merges:  to exclude statistics from merge commits.

https://stackoverflow.com/questions/9839083/git-number-of-commits-per-author-on-all-branches

반응형
반응형

git log --reverse

반응형
반응형
    • git log --oneline
      • 설명간략히 한줄로만 보여줌
    • git log -5
      • 최근 5개만 보여줌
    • git log --grep=“some message”
      • 커밋 메세지를 검색하여 보여줌
    • git log --decorate --graph
      • 그래프 형태로 보여줌
    • git log --author=dhrim 
      • 특정저자 것만 보여줌
    • git log --before={3.weeks.ago} --after={2010-04-18}
      • 특정시기 것만 보여줌
    • git log --pretty=format:"%h,%ar,%an : %s" 
      • commit 정보를 한줄 단위로 보여주되. format 에 맞게 보여줌
      •  git log --pretty=format:"%h  %ad  %an  %x09  %s" --date=short
        • %h : abbreviated commit Hash(간략) 
        • %an : author name 
        • %ad : author date (format respects --date= option)
        • %ar : author relative date (--date=relative 설정효과, housrs ago, days ago)
        • %as : author short date (--date=short 설정효과)
        • %cd : comitter date (format respects --date= option)
        • %d : ref names
        • %s : subject(commit message)
        • color setting
          • %C(yellow), %C(cyan)
          • %Cblue - 검은바탕에선 잘 안보임, %Cgreen
          • %C(auto) %Creset
    • log format 저장
      • git config --global alias.hs 'git log --pretty="%C(yellow)%h %C(cyan)%as(%ar) %Cgreen%an %C(auto)%d %Creset%s"' -> git hs로 사용가능
      • git config --global alias.hs "log --pretty='%C(yellow)%h %C(cyan)%cd %Cblue%aN%C(auto)%d %Creset%s' --graph --date=relative --date-order"
    • git log --date=...
      • --date=short: yyyy-mm-dd까지만 나옴
      • --date=relative: housrs ago, days ago이렇게 나옴
      • --date=raw: shows the date as seconds since the epoch (1970-01-01 00:00:00 UTC), followed by a space, and then the timezone as an offset from UTC
      • --date=format:%d/%m/%y\ %H:%M:%S
    • git log --graph
      • Git GUI 툴처럼 graph로 보여줌
    • reference
반응형
반응형

git 사용법 알아내기 - git help [알고싶은 명령어]

반응형
반응형

mergeCommit을 revert했더니 에러가 나면서 안됨 (error: commit 247ce0130b0aab7c244e7dcecc7be0fc57083bbe is a merge but no -m option was given.)

-m 옵션을 붙이라는 것 같아서 붙여서 했는데 그래도 안됨.. (error: option `mainline' expects a number greater than zero)

 

왜 에러가 나냐면 어느 부모로 돌아갈지 옵션을 붙여주지 않았기 때문, merge하는 것 자체가 부모가 2개인건데 둘중 어느 부모로 돌아갈지를 지정해줘야함

 

git revert HEAD -m 1 첫번째 부모로 돌아감

git revert HEAD -m 2 두번째 부모로 돌아감

 

첫번째 부모/두번째 부모가 뭔지 알아내는 방법: git cat-file -p [commitHash]

 

 

반응형
반응형
  • commit message로 검색
    • git log --grep='searchKeyword'
    • 만약 검색결과가 많아서 한 화면에 너무 많이 나온다면 --oneline을 붙여서 한줄씩만 보자
      • git log --grep='searchKeyword' --oneline
  • commit번호 (commitHash, commitID)를 알고 있다면
    • git show commitHash

 

반응형
반응형
  • git remote
    • 등록된 remote명 보여줌 
  • git remote -v
    • remote명 + URL
    • -v, -vv, -verbose: 수다스러운 
  • git remote show [remote명]
    •  git remote show origin
    • 이걸로 중요 정보 다 알수 있음
    • remote에 있는 모든 branch 확인가능
      • branch 상태는 tracked, stale(오래된, 상한 이런 뜻) 으로 나눠짐
      • stale한 애는 git remote prune(가지치다 이런 뜻)으로 제거하라고 친절하게 알려주기까지 함
반응형
반응형
  • remote에 아직 안올리고 local내에서만 처리가능할 때
    • git commit --amend로 기존 커밋 수정
    • git reset
    • git checkout
    • 여기서 reset과 checkout의 차이를 알아보자
      • reset 명령은 HEAD가 가리키는 브랜치를 움직이지만(정확히는 브랜치 Refs), checkout 명령은 HEAD 자체를 다른 브랜치로 이동, 참고: https://readystory.tistory.com/150 

 

 

  • remote에 이미 push 했을 때
    • git revert - 특정 커밋만 취소, but 커밋한 기록이랑 그 커밋을 취소한 기록이 모두 남음
    • 기록안남기고 그냥 강제 덮어쓰기 하려면 local에서 reset이나 rebase등으로 원하는 상태로 만든후에 git push ---force, but 협업자가 많으면 멘붕올수 있음
      • 과거의 특정 커밋 수정하기
        • git push --force: 강제로 덮어쓰기
        • git push --force-with-lease: 덮어쓰기 전에 로컬의 remotes/브랜치A가 참조하고 있는 것과 현재 원격의 브랜치A가 참조하고 있는 내용이 동일할 경우에만, 즉, 다른 누군가가 원격의 브랜치A에 push를 하지 않은 상태에서만 git push --force를 실행
        • git push --force함으로 없어져 버린 commit은 어떻게 될까?
          • git show f65ff0737a0a935b67235aae20ec389db32e5240: 일단 git push --force한 당일에는 아래처럼 결과가 나옴
          • change userNo=null error action 5 (added in amazon-echo, naver-clova)
반응형

+ Recent posts