Git에서는 내 라이센스와 Readme 파일이 삭제된 것으로 표시되지만 여전히 남아 있습니까?

Git에서는 내 라이센스와 Readme 파일이 삭제된 것으로 표시되지만 여전히 남아 있습니까?

읽어 주셔서 감사합니다!

나는 내 설정을 시작했다Git 및 GitHub를 사용한 포인트 파일 구성문제가 발생했습니다. my를 $HOMEgit 작업 트리로 사용하고 .git별칭을 사용하여 -directory를 my -directory에 넣었습니다.$HOME/.dotfiles

alias dotfiles="git --git --git-dir=$HOME/.dotfiles/.git/ --work-tree=$HOME"

나는GitHub의 새로운 저장소그리고 추가됨특허그리고읽어보기 파일거기. 다음과 같이 저장소를 복제하면:

git clone \<url to the repository\> $HOME/.dotfiles

이것특허그리고읽어보기 파일.dotfiles- 디렉토리에 있지만 명령은 다음과 같습니다.

dotfiles status

다음과 같이 나열하세요.삭제됨!

원하지 않는다~ 고 싶어요특허그리고읽어보기 파일$HOME-디렉토리에 있습니다. 이는 -디렉토리에 남아 있어야 합니다 $HOME/.dotfiles.

이 문제에 대해 어떻게 해야 합니까?

답변1

실제로 github 및 gitlab이 존중할 마스터 브랜치에 LICENSE 및 README 파일(github 또는 gitlab의 프로젝트 홈 디렉터리에 표시됨)이 있을 수 있지만 홈 디렉터리에는 없을 수 있습니다.가장 간단한 솔루션README를 .github프로젝트 메인 폴더에 넣는 것이지만,깃허브.

하지만 실제로 gitlab 및 github의 프로젝트 홈페이지에는 LICENSE 및 README가 표시됩니다.

1. 베어 Git 저장소를 시작하거나 기존 저장소를 복사합니다.

xadf용 베어 git 저장소를 시작하고 추가 정보 및/또는 라이센스 없이 초기 커밋을 수행하고 별칭을 만듭니다. 별칭은 원하는 대로 지정할 수 있지만(예 dotfiles: ) 더 쉽게 입력할 수 있도록 사용했습니다 gitdf.

# Initialize a bare git directory
git init --bare $HOME/.dotfiles

# Sets up an alias so you don't have to type long commands
alias gitdf='git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'

# Adds a remote where you'd push your changes
gitdf remote add origin [email protected]:yourusername/dotfiles.git

# Do not display untracked files (it would be a ton of untracked files in an actual home tree
gitdf config status.showUntrackedFiles no

또는 이미 dotfiles 저장소가 있는 경우 이를 집에 복사할 수 있습니다.

# Clone existing repo with separate git directory (here it is ~/.dotfiles), and the work tree in a separate, temporary directory .dotfiles-temp
git clone --separate-git-dir=$HOME/.dotfiles https://github.com/yourusername/dotfiles.git .dotfiles-temp

# Copy the content of the temporary work tree to ~/
rsync --recursive --verbose --exclude '.git' .dotfiles-temp/ $HOME/

# Remove the temporary work tree
rm --recursive .dotfiles-temp

# Sets up an alias so you don't have to type long commands
alias gitdf='git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'

# Sets remote directory
gitdf remote set-url origin [email protected]:yourusername/dotfiles.git

.bashrc로그인할 때마다 별칭이 유지되도록 별칭에 별칭을 추가해야 할 수도 있습니다 .

2. 그런 다음 지점을 만듭니다.

이것은 실제 마스터 트리에서 보고 있는 실제 분기입니다. 예를 들어, home지점.

# Make branch 'home'
gitdf checkout -b home

# You may need to also add the branch to gitlab or github
gitdf push --set-upstream origin home

3. 브랜치 마스터에서 README 및 LICENSE를 추가합니다.

그런 다음 원하는 경우 브랜치 마스터에서 추가 정보와 라이센스를 안전하게 추가할 수 있습니다. 이는 gitlab이나 github의 프로젝트 홈 페이지에서 정보를 제공하는 데에만 사용됩니다. 해당 파일은 브랜치 홈 디렉터리의 커밋 기록에 나타나지 않으며귀하의 지역 지점에 소개되어서는 안됩니다.

# Switch back to branch 'master'
gitdf checkout master

# Make readme and license
touch ~/LICENSE ~/README.md

# Add them to your bare git repo
gitdf add LICENSE README.md

# Commit
gitdf commit

# Push
gitdf push

4. 실제 작업 지점만 변경하세요.

home그런 다음 도트 파일의 실제 체크아웃 분기인 분기로 돌아갑니다 . 여기서 readme 또는 라이센스 파일은 커밋 기록에 표시되지 않습니다.

gitdf checkout home

게시물 설정

home그 후에는 구성 파일에 대한 변경이 해당 분기 또는 해당 분기에서 파생된 분기에서만 수행됩니다 home. 가끔(또는 주기적으로) 마스터에 병합해야 할 수도 있습니다.

# Go to branch master
gitdf checkout master

# merge branch home to branch master
gitdf merge home

# push to remote
gitdf push

LICENSEhome 분기에는 합계가 없으므로 README.md병합으로 인해 충돌이 발생하지 않습니다.

그러나 다른 방법으로(예: 브랜치에서) 수행하면 안 됩니다. home작업 홈 디렉터리에 및 가 추가 gitdf merge master되기 때문입니다 .LICENSEREADME.md

각 특정 지점의 여러 기계별 구성

추가 보너스로 다른 특정 용도로 분기를 분기할 수도 있습니다 home(예: 작업별 구성을 work기반으로 해야 하지만 해당 분기가 있는 분기).home

# Check if we're in branch home
gitdf status -sb

# Checkout to branch home if we are not
gitdf checkout home

# Note that the -b flag means make branch if it does not exist
gitdf checkout -b work

# Add new branch to remote
gitdf push --set-upstream origin work

# Configure or add work-specific changes then commit
gitdf add .config/work/related/configfile
gitdf commit

# Push to remote
gitdf push

나중에 브랜치에서 변경 사항을 적용할 때 home해야 할 일은 work해당 내용을 브랜치에도 포함시키는 것뿐입니다.

# move to branch work
gitdf checkout work

# merge branch home to branch home
gitdf merge home

# Push to remote
gitdf push

예를 들어 다른 분기가 있는 경우(모두 homeBranch에서 시작하여 새 분기를 만들어야 함을 의미함 ) 필요한 경우 home을 해당 분기로 병합할 수도 있습니다. 필요한 경우 변경 사항을 병합할 수도 있습니다.homelaptophome

그러나 실제로는 먼저 공유 구성을 생성한 home다음 필요한 분기와 master.

따라서 다음과 같이 병합 방향을 시각화할 수 있습니다.

master < home <> work
              <> laptop

집에서 콘솔, 직장, 노트북으로만 병합하거나 직장, 노트북에서 집으로만 병합하고 콘솔에서 집으로는 병합하지 마세요.

실제 응용 프로그램

뻔뻔한 플러그로서, 내에서 이 git 별칭 메서드를 설정하는 방법을 볼 수 있습니다.도트 파일 저장소. 위 단계를 보다 완전하고 적당히 복잡하게 구현한 것입니다. 이를 설치하려면 설치 프로그램과 컨트롤러 스크립트(xdf), 실행 가능하게 만들고 내 경로 어딘가에 배치합니다.

# Make directory, if it isn't present already
mkdir -p ~/.local/bin

# Download the executable into your local bin directory
wget -O ~/.local/bin/xadf https://gitlab.com/heno72/xadf/-/raw/master/.local/bin/xadf

# Make it executable
chmod +x ~/.local/bin/xadf

# Export path to local bin if it isn't set up already
PATH=~/.local/bin:$PATH

# Install xadf minimally
xadf --minimal-install

이 스크립트는 나중에 사용할 구성 파일 생성(별칭 및 일부 기능)을 포함하여 1단계(복사), 작업 분기로의 체크아웃(기본값은 , 위 예의 분기 trunk와 동일 )을 처리할 수 있습니다 .home~/.config/xadf

# initialize, configure, load, and manage
xadf --init-bare --seat ~/.dotfiles
xadf --custom-install --seat ~/.dotfiles
. ~/.bashrc
xadf config status.showUntrackedFiles no

또는 원격으로 자체 Git 저장소가 이미 있는 경우:

# Clone and configure from a custom url, load, and manage
xadf -i -s [email protected]:heno72/xadf-gb.git --seat ~/.dotfiles
. ~/.bashrc
xadf status -sb

홈 폴더에 이미 git 디렉터리가 있는 경우 xadf를 사용하여 관리할 수 있습니다.

xadf --custom-install --seat ~/.dotfiles
. ~/.bashrc

일단 설치하고 .bashrc를 얻은 후에는 다른 git 명령처럼 스크립트를 사용할 수 있습니다.

# Adds a new config file to tracked file
xadf add .config/new/config/file

# Commit changes
xadf commit

# Push changes to remote
xadf push

# Change working branch
xadf checkout newbranch

또는 미리 결정된 조치:

xadf -l         # list all tracked files
xadf -l .config # list all tracked files in ~/.config

관련 정보