[git] send-pack: unexpected disconnect while reading sideband packet 에러 발생 시

git push 를 했을 때, 내용이 많은 경우 다음과 같은 에러가 날 때가 있다.

error: RPC failed; HTTP 400 curl 22 The requested URL returned error: 400
send-pack: unexpected disconnect while reading sideband packet

이 경우, http.postBuffer를 다음과 같이 늘려준다. 아래는 150MB.

git config --global http.postBuffer 157286400

참고: https://stackoverflow.com/questions/66366582/github-unexpected-disconnect-while-reading-sideband-packet

[git] @{ } 표기법

Git에서는 @{} 표기법을 사용하여 다양한 브랜치 및 커밋 참조를 지정할 수 있습니다. 여기서 몇 가지 일반적으로 사용되는 표기법을 설명하겠습니다:

  1. @{u} 또는 @{upstream}: 현재 브랜치의 upstream 브랜치를 가리킵니다. 예를 들어, main 브랜치의 upstream 브랜치가 origin/main인 경우, main@{u} 또는 main@{upstream}origin/main을 가리킵니다.
  2. @{1} 또는 @{2} 등의 숫자: 브랜치의 이전 위치를 가리킵니다. 예를 들어, main@{1}main 브랜치의 바로 이전 커밋을 가리킵니다.
  3. @{yesterday} 또는 @{1.week.ago}와 같이 시간 범위를 지정할 수도 있습니다. 이를 통해 특정 시점의 커밋을 가리킬 수 있습니다.
  4. @{commit-hash}: 직접 커밋 해시(해당 커밋의 고유 식별자)를 지정하여 특정 커밋을 가리킬 수 있습니다.
  5. @{branch-name}: 특정 브랜치의 위치를 가리킬 수 있습니다.

이러한 표기법을 사용하면 Git에서 다양한 상황에서 브랜치, 커밋 및 이력을 참조할 수 있으며, 특정 시점이나 이전 위치에 대한 정보를 쉽게 얻을 수 있습니다.

[git] 추가된 파일이지만 변경은 무시하고 싶은 경우

git에서 repository에 파일은 추가해서 두고 싶지만 해당 파일이 빌드 중 변경되는 등의 이유로 변경은 무시하고 싶은 경우가 있다. 이런 경우 .gitignore에 추가해도 repository에 추가된 파일이므로 변경을 계속 추적하게 된다. 이 변경을 무시하고 싶다면 다음 명령을 주면 된다.

git update-index --assume-unchanged <file>

위 명령을 주면 해당 파일은 변경되어도 git status를 해도 나오지 않고 무시된다. 그러므로 주의해야 한다. 해당 파일을 다시 추적하고 싶다면 다음 명령을 입력한다.

git update-index --no-assume-unchanged <file>

[golang] github.com의 private repo 접근하기

$ git config --global url.git@github.com:.insteadOf https://dasomoli@github.com/
$ go get github.com/dasomoli/private-repo

참고: https://stackoverflow.com/questions/27500861/whats-the-proper-way-to-go-get-a-private-repository

[Linux][bash] git branch를 prompt에 넣기

~/.bashrc 에 다음을 추가.

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "
#  PS1="${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\]$ "

[github] Public repo를 private으로 바꾸기

public project를 가져와서 혼자 몰래 뭘 해보고 싶을 때, Apache 2.0 License 등 derived works의 source code 공개 의무가 없는 프로젝트의 경우 private으로 바꿔서 작업을 해볼 수 있다.

다음과 같이 한다.

먼저 만들고 싶은 이름으로 github에서 project를 하나 private으로 만든다.

$ git clone --bare https://github.com/publicproject/project.git
$ cd project.git
$ git push --mirror https://github.com/myname/myproject.git

그리고 나서 실제로 clone해서 쓰면 된다.

$ git push https://github.com/myname/myproject.git

최신 코드로의 업데이트는 public repository를 여기다 remote로 추가해서 fetch & rebase하면 된다.

push는 public으로 fork해온 후 거기다 push 해서 pull request하면 될 듯.

참고: https://medium.com/@bilalbayasut/github-how-to-make-a-fork-of-public-repository-private-6ee8cacaf9d3