읽어 주셔서 감사합니다!
나는 내 설정을 시작했다Git 및 GitHub를 사용한 포인트 파일 구성문제가 발생했습니다. my를 $HOME
git 작업 트리로 사용하고 .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
LICENSE
home 분기에는 합계가 없으므로 README.md
병합으로 인해 충돌이 발생하지 않습니다.
그러나 다른 방법으로(예: 브랜치에서) 수행하면 안 됩니다. home
작업 홈 디렉터리에 및 가 추가 gitdf merge master
되기 때문입니다 .LICENSE
README.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
예를 들어 다른 분기가 있는 경우(모두 home
Branch에서 시작하여 새 분기를 만들어야 함을 의미함 ) 필요한 경우 home을 해당 분기로 병합할 수도 있습니다. 필요한 경우 변경 사항을 병합할 수도 있습니다.home
laptop
home
그러나 실제로는 먼저 공유 구성을 생성한 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