kenu
56k
2021-08-24 18:45:55 작성 2021-08-24 18:55:38 수정됨
8
3081

Git 상황별 처리법


파일 하나 롤백

git checkout b1fea8b -- server.js

Commit 롤백

git revert HEAD
git revert hashhash

파일 하나 unstage

git checkout -- server.js

git diff

  • 이전 파일과 비교

    git diff HEAD^ HEAD
  • 브랜치 파일 비교

    git diff develop master path/to/file
  • As of Git 1.8.5, @ is an alias for HEAD, so you can use:

    git diff @~..@
  • The following will also work:

    git show
  • If you want to know the diff between head and any commit you can use:

    git diff commit_id HEAD
  • And this will launch your visual diff tool (if configured):

    git difftool HEAD^ HEAD
  • from https://stackoverflow.com/questions/9903541/finding-diff-between-current-and-last-versions

git log

  • 최근 2일간 계정에 대한 변경 이력

    git log --pretty=format:"%h - %an, %ar : %s" --author kenu.heo --since=2.days
  • commit별 변경 파일 목록

    git log --name-only -1 f002a898

로컬 브랜치 정리

git remote prune origin
git fetch -p

errors

  • The remote end hung up unexpectedly

    fatal: The remote end hung up unexpectedly
    fatal: early EOF
    fatal: index-pack failed
  • Solve

git config http.postBuffer 724288000

or

git config --global core.compression 0
git clone --depth 1 https://github.com/kenu/okdevtv
cd okdevtv
git fetch --unshallow
git pull --all

git pull push timeout

  • ssh -T -p 443 git@ssh.github.com
# ~/.ssh/config
Host github.com
    Hostname ssh.github.com
    Port 443
34
24
  • 댓글 8

  • 인그니야
    1k
    2021-08-25 08:50:32

    Commit 롤백은 $ git reset 이 더 가깝고, $ git revert는 코드 롤백에 더 가깝지 않을까요?

  • ramisiel
    3k
    2021-08-27 11:52:43

    GUI 모드가 편한건 귀찮니즘이 생겨서 일까요?

    SVN이 너무 편함... ㅠㅠ;

  • 왕왕
    1k
    2021-08-27 12:29:36 작성 2021-08-27 12:30:04 수정됨

    참...GIT이랑 SVN 둘다 쓰는데 깃은 너무 알아야할게 많은 듯...


  • DevAndy
    247
    2021-08-28 14:10:10

    그만큼 git은 svn보다 기능이 더 많아서 좋죠 ㅎㅎ

  • tangibleidea
    393
    2021-08-30 11:13:45 작성 2021-08-30 11:14:43 수정됨

    에.. git이 훨씬 편한데요.

    svn은 오프라인 커밋도 안되고 로컬브랜치도 안되고 속도도 느리고 머지는 진짜 최악

    -3
  • HJOW
    3k
    2021-08-30 15:54:13 작성 2021-08-31 09:39:54 수정됨

    SVN은 모든 기능이 GUI로 되니까요.

    그리고 무엇보다, "스테이징만 되고 푸시가 안된" 상태 자체가 없으니까요.

    기껏 작업해서 스테이징 올려놓은 파일 다른사람이 수정해서 푸시해놓은 상태에서는 멘붕 옵니다. 저거 찾아서 명령어 쳐서 해결할 시간따윈 없는 급한 상황일 경우가 많구요.

    애초에 형상관리 하면서 브랜치 개념 자체를 안쓰는 회사가 훨씬 많을껄요. 당연히 이것도 이유는 브랜치가 생기면 관리가 복잡해지니까요. 그러니 git의 그 수많은 장점이 의미가 없는 상황이 되죠.


    또는 아예 SVN과 git를 같이쓰는 곳도 있습니다.

    git는 로컬용

    공통 형상관리는 SVN으로

    스테이징/커밋까지는 로컬에 git이 담당하고, 푸시하면 SVN에 커밋되도록 세팅할 수 있죠.

    git의 장점과 SVN의 간단함을 모두 다 누릴 수 있는 세팅입니다.



    즉, 프로젝트의 상황에 맞게 쓰자

  • ramisiel
    3k
    2021-08-31 08:23:41

    HJOW 

    맞아요 상황에 맞게 쓰는게 좋져 :D

  • Dive_Drink_Develope
    6k
    2021-08-31 09:30:25

    저는 웬만한건 다 소스트리에서 하고

    꼬인거 풀때만


    git reset --hard HEAD~n   //n은 HEAD에서부터 몇번째 전 커밋인지

    해서 

    git push -f origin master

    로 강제 푸시 합니다. 


    물론 팀원들에게 사전전파는 필수죠.

  • 로그인을 하시면 댓글을 등록할 수 있습니다.