git , github , github.io , Netlify
# git 다운로드
긍정적으로 다음 하세요
# GitHub 계정
1. 이메일 / 비밀번호
메일확인 코드 입력
로그인
기본 명령어
ls :
옵션 | 설명 |
-a | 숨긴 파일이나 디렉터리도 함께 표시합니다. |
-l | 파일이나 디렉터리의 상세 정보를 함께 표시합니다. |
-r | 파일의 정렬 순서를 거꾸로 표시합니다. |
-t | 파일 작성 시간순(내림차순)으로 표시합니다. |
clear : 터미널 지우기
cd .. : 상위 폴더
exit : 터미널 종료
cd 명령어
~ | 현재 접속 중인 사용자의 홈 디렉터리를 가리킵니다. 예: C:/Users/사용자아이디. |
. | 현재 사용자가 작업 중인 디렉터리를 가리킵니다. |
.. | 현재 디렉터리의 상위 디렉터리를 가리킵니다. |
mkdir 명령어는 새 디렉터리를 생성하는 데 사용
옵션 | 설명 |
(없음) | 지정한 이름으로 디렉터리를 생성합니다. |
-p | 상위 디렉터리가 없으면 상위 디렉터리도 함께 생성합니다. 예: mkdir -p dir1/dir2 |
-v | 생성된 디렉터리에 대한 정보를 출력합니다. 예: 디렉터리가 만들어졌음을 확인할 수 있습니다. |
mkdir my_folder
# 터미널 명령어 정리
명령어 | 설명 |
pwd | 현재 경로를 표시합니다. |
ls | 현재 디렉터리 안의 내용을 표시합니다. |
ls -l | 파일과 폴더의 상세 정보를 함께 표시합니다. |
ls -a | 숨긴 파일 및 디렉터리까지 표시합니다. |
cd .. | 부모 디렉터리로 이동합니다. |
clear | 화면을 깨끗하게 지웁니다. |
cd [디렉터리명] | 지정된 하위 디렉터리로 이동합니다. |
mkdir [디렉터리명] | 새 디렉터리를 생성합니다. |
cd ~ | 홈 디렉터리로 이동합니다. |
rm [파일명] | 파일을 삭제합니다. |
rm -r [디렉터리명] | 디렉터리를 삭제합니다. |
exit | 터미널 창을 종료합니다. |
# github 주소
원격 저장소
- 버전 관리 및 협업:
- 원격 저장소는 여러 사람이 함께 작업하는 프로젝트에서 중요한 역할을 합니다. 개발자는 자신의 로컬 저장소에서 작업한 후, 변경 사항을 원격 저장소로 푸시(push)하여 다른 팀원과 공유할 수 있습니다.
- 팀원들은 원격 저장소에서 최신 코드를 풀(pull)하거나, 새로운 브랜치를 만들어 병합(merge) 작업을 수행할 수 있습니다.
- GitHub 플랫폼:
- GitHub는 Git을 기반으로 한 코드 호스팅 플랫폼으로, 원격 저장소를 쉽게 관리하고 공유할 수 있는 기능을 제공합니다. GitHub에서는 프로젝트별로 저장소를 만들고, 이 저장소를 통해 코드 버전 관리, 이슈 트래킹, 코드 리뷰, CI/CD 파이프라인 등 다양한 기능을 사용할 수 있습니다.
- 클론(Clone):
- 원격 저장소를 클론하면, 로컬 저장소에 원격 저장소의 전체 복사본을 다운로드합니다. 이 과정에서 해당 프로젝트의 모든 파일과 Git 히스토리가 로컬에 복제됩니다.
- 클론 명령어: git clone <repository_url>
- 푸시(Push) 및 풀(Pull):
- 푸시(Push): 로컬에서 작업한 내용을 원격 저장소로 전송합니다. 이는 로컬 브랜치의 커밋을 원격 브랜치에 적용하는 과정입니다.
- 예시: git push origin main
- 풀(Pull): 원격 저장소의 최신 변경 사항을 로컬로 가져와 병합합니다.
- 예시: git pull origin main
- 푸시(Push): 로컬에서 작업한 내용을 원격 저장소로 전송합니다. 이는 로컬 브랜치의 커밋을 원격 브랜치에 적용하는 과정입니다.
- 원격 저장소 추가 및 관리:
- 로컬 저장소에서 원격 저장소를 추가하려면 git remote add 명령어를 사용합니다. 이를 통해 로컬 Git 저장소에 원격 저장소를 연결할 수 있습니다.
- 예시: git remote add origin <repository_url>
- 원격 저장소의 장점:
- 백업: 로컬에서 관리하는 코드의 백업을 위해 원격 저장소를 사용합니다. 하드웨어 고장이나 기타 문제로 인한 데이터 손실을 방지할 수 있습니다.
- 접근성: 팀원들이 언제 어디서나 코드를 다운로드하고 업데이트할 수 있습니다.
- 협업: 여러 개발자가 같은 프로젝트에서 함께 작업할 수 있습니다. 브랜치, PR(Pull Request), 이슈 등을 통해 코드 리뷰와 협업을 효율적으로 수행할 수 있습니다.
# 원격저장소 만들기
리포지토리 ( 관용적으로 레파지토리, 레포지토리 )
① Repository name:
저장소 이름을 입력
영문과 숫자, 언더바(_), 붙임표(-) 등을 사용할 수 있음
공백이 포함되어 있으면 자동으로 붙임표(-)로 바꿈
② Description:
저장소를 소개하는 간단한 설명을 입력
이 부분은 옵션이므로 반드시 입력하지 않아도 됨
③ Public / Private:
저장소를 공개로 할지 비공개로 할지 선택
공개 저장소는 주소만 알면 누구나 볼 수 있으나 만일 다른 사람에게 보여 주고 싶지 않은 프로젝트를 관리한다면 저장소를 만들 때 비공개(private)로 하면 됨
(필수) 수업내용 올리시면 비공개해주세요
# 깃허브 소스관리 흐름
폴더 생성 : md 폴더명
폴더 이동 : cd 폴더명
폴더리스트 확인 : dir
폴더삭제 : del 폴더명
상위 폴더 : cd ..
: cd 한칸띄우고 ..
1. Git Bash
# rm -rf .git 명령어
현재 디렉토리에 있는 .git 폴더를 강제로 삭제하는 명령어입니다. 이 명령어는 특히 Git 저장소와 관련이 있습니다.
- rm: 파일이나 디렉토리를 삭제하는 명령어입니다.
- -r: 디렉토리를 재귀적으로 삭제하라는 옵션입니다. 이 옵션이 없으면 단일 파일만 삭제할 수 있으며, 디렉토리는 삭제되지 않습니다.
- -f: 강제로 삭제하라는 옵션입니다. 이 옵션이 없으면, 파일이 쓰기 금지 상태이거나 삭제할 수 없는 경우 경고 메시지가 표시됩니다. -f 옵션은 이러한 경고 없이 강제로 삭제합니다.
- .git: Git 저장소의 메타데이터와 히스토리를 담고 있는 숨김 폴더입니다. 이 폴더가 있으면 해당 디렉토리는 Git 저장소로 인식됩니다.
- .git 폴더 삭제: 이 명령어를 실행하면 현재 디렉토리에서 .git 폴더와 그 안에 있는 모든 내용이 삭제됩니다.
- Git 저장소 초기화: .git 폴더를 삭제하면 해당 디렉토리는 더 이상 Git 저장소로 인식되지 않으며, 저장된 모든 커밋 히스토리, 브랜치 정보, 설정 등이 삭제됩니다.
- 복구 불가: 삭제된 .git 폴더와 그 안의 내용은 일반적으로 복구할 수 없으므로, 실수로 삭제하지 않도록 주의해야 합니다.
2. 폴더이동
cd /path/to/your/directory
cd 폴더명
cd project
2. 깃 지역 저장소는 init 명령으로 설정
$ git init
결과
Initialized empty Git repository in D:/풀스택수업/폴더/.git/
- Git 저장소 생성:
- git init을 실행하면, 현재 디렉토리에 .git이라는 숨김 폴더가 생성됩니다.
- 이 .git 폴더에는 Git이 관리하는 모든 메타데이터, 히스토리, 설정 파일 등이 저장됩니다.
- 저장소 초기화:
- 초기화된 디렉토리는 이제 Git 명령어를 사용할 수 있는 Git 저장소가 됩니다.
- 이후 git add, git commit, git branch 등 다양한 Git 명령어를 사용하여 파일을 추적하고 버전 관리를 할 수 있습니다.
- 기존 프로젝트의 Git 저장소 초기화:
- 이미 존재하는 프로젝트에서 git init을 실행하면 해당 프로젝트 폴더가 Git 저장소로 변환됩니다.
- 이때 기존 파일들은 자동으로 Git에서 추적하지 않으며, 추적하려면 git add 명령어를 사용해야 합니다.
3. ls -a 명령어를 사용하여 .git 폴더를 확인 ( 필수 X )
ls -a
실행후
./ ../ .git/ css/ images/ index.html js/ page/ sub1.html sub2.html
4. git init 취소는 .git을 삭제 ( 문제가 생겼을때 )
rm -rf .git
git status 로 확인
5. 생성한 깃 지역 저장소의 사용자 정보를 등록
git config user.name "사용자 이름"
git config user.email "이메일 주소"
실행후
아무것도 나오지 않음
git config --global user.name "username"
git config --global user.email 사용자이메일@...com
사용자 이름 : 깃로고 옆에 이름
6. 설정파일 확인
cat .git/config
실행후
name = xxxxx
email = xxxx
등 정보 확인
7. 원격 저장소 페이지에서 다음 버튼을 눌러 원격 저장소 주소를 복사
git remote add origin ( repository URL ) : .git과 github를 연결
또는 ( 추천 )
실행후 아무것도 안나옴
8. 현재 로컬 저장소가 연결된 모든 원격 저장소의 정보 확인.
git remote -v
실행후
origin https://github.com/user/repo.git (fetch)
origin https://github.com/user/repo.git (push)
- origin: 원격 저장소의 이름 (기본적으로 "origin"이 사용됨).
- https://github.com/user/repo.git: 원격 저장소의 URL.
- (fetch): 데이터를 가져오는 데 사용되는 URL.
- (push): 데이터를 푸시하는 데 사용되는 URL.
9. 원격 저장소(remote repository) 연결을 삭제
git remote rm origin
- git remote: Git에서 원격 저장소를 관리하는 명령어입니다. 이 명령어를 사용하여 원격 저장소를 추가, 삭제, 이름 변경 등을 할 수 있습니다.
- rm: "remove"의 약어로, 원격 저장소를 삭제하는 옵션입니다.
- origin: 삭제하려는 원격 저장소의 이름입니다. Git에서는 기본적으로 원격 저장소의 이름을 origin으로 설정합니다. 이는 프로젝트를 클론할 때 자동으로 설정되며, 가장 흔히 사용되는 원격 저장소의 이름입니다.
- origin이라는 이름의 원격 저장소 연결이 로컬 저장소에서 제거됩니다.
- 이후에는 git push, git pull 명령어를 사용할 때 origin이라는 원격 저장소에 푸시하거나 가져올 수 없습니다.
- 이 명령어는 원격 저장소 자체를 삭제하는 것이 아니라, 로컬 Git 저장소에서 해당 원격 저장소의 참조를 제거하는 것입니다.
- 원격 저장소를 변경해야 할 때: 예를 들어, 프로젝트의 원격 저장소 URL이 변경되었거나, 다른 원격 저장소로 교체해야 하는 경우, 먼저 기존 원격 저장소를 삭제할 수 있습니다.
- 잘못된 원격 저장소 연결을 정리할 때: 실수로 잘못된 원격 저장소를 추가했거나 더 이상 사용하지 않는 원격 저장소 연결을 제거하려는 경우 사용합니다.
삭제후 7번부터 실행 하기
10. 파일들(변경된)을 잠시 보관
Git에서 현재 디렉토리와 그 하위 디렉토리 내의 모든 변경된 파일(추적 중인 파일과 새로 생성된 파일)을 스테이징 영역에 추가하는 데 사용됩니다. 커밋하기 전에 모든 변경 사항을 한 번에 준비할 수 있습니다.
git add .
실행후
아무것도 안나옴
현재 디렉토리에서 새로 생성된 파일, 수정된 파일, 그리고 삭제된 파일 모두가 스테이징 영역에 추가됩니다.
- git add: 이 명령어는 Git의 스테이징 영역에 파일을 추가하는 역할을 합니다. 스테이징 영역은 커밋할 파일들을 잠시 보관하는 곳으로, 커밋하기 전에 어떤 파일들을 포함할지 선택할 수 있습니다.
- . (점): 현재 디렉토리와 그 하위 디렉토리의 모든 파일과 디렉토리를 의미합니다. .을 사용하면 현재 디렉토리에서 발생한 모든 변경 사항이 스테이징 영역에 추가됩니다.
11. 확정 저장및 코멘트 작성
현재 작업 디렉토리와 스테이징 영역의 상태를 확인하는 데 사용됩니다. 이 명령어를 실행하면 어떤 파일이 변경되었고, 어떤 파일이 스테이징 되었으며, 어떤 파일이 커밋되지 않았는지 등을 상세하게 보여줍니다.
실제로 아무런 변경을 가하지 않고, 단지 현재 상태를 보여주는 역할
git status
실행후 예)
- On branch main: 현재 작업 중인 브랜치가 main 브랜치임을 나타냅니다.
- Changes to be committed: 스테이징 영역에 추가된 파일들로, 다음 커밋에 포함될 것입니다.
- Changes not staged for commit: 수정되었지만 스테이징되지 않은 파일들입니다.
- Untracked files: Git이 추적하지 않는 파일들로, git add 명령어를 사용해야만 스테이징되고 추적이 시작됩니다.
12. 스테이징 영역에 있는 변경 사항을 커밋하고, 해당 커밋에 메시지를 추가하는 데 사용
git commit -m "Added new feature to handle user input"
git commit -m "코멘트"
- git commit: 현재 스테이징 영역에 있는 모든 변경 사항을 커밋합니다. 커밋은 Git의 "스냅샷"으로, 파일들의 현재 상태를 저장하는 것을 의미합니다.
- -m: 커밋 메시지를 지정하는 옵션입니다. 이 옵션을 사용하면 커밋 메시지를 별도의 텍스트 편집기를 열지 않고, 바로 명령어 라인에서 입력할 수 있습니다.
- "<메시지>": 커밋 메시지로, 해당 커밋의 변경 내용을 간략히 설명합니다. 이 메시지는 작업 내용을 설명하는 중요한 역할을 하므로, 가능한 한 명확하고 의미 있게 작성하는 것이 좋습니다.
예)
13 . origin repository 의 master브랜치에 작업 내용 업로드
git push origin master
처음 한번
권한
결과
14 . 작업 내용수정후 업로드 순서
git status
git add .
git commit -m "수정한 내용에 대한 설명"
git push origin master
- 파일 수정: 파일을 편집하여 변경합니다.
- 변경 사항 확인: git status
- 파일 스테이징: git add . (모든 변경된 파일을 스테이징)
- 커밋: git commit -m "javascript 수정"
- 푸시: git push origin master 또는 git push origin main
정리
- git status: 현재 상태 확인.
- git add <파일명> 또는 git add .: 변경된 파일 스테이징.
- git commit -m "커밋 메시지": 변경 사항을 로컬 저장소에 커밋.
- git push origin <브랜치명>: 커밋된 내용을 원격 저장소에 업로드.
예시) README.md 파일 만들기
# 팀프로젝트
- 작업순서목록
- 작업순서목록
- 작업순서목록
- 작업순서목록
작성후 올려보세요
15. README.md 파일이 제대로 업데이트 되지 않을경우
git rm --cached README.md
git add README.md
git commit -m "README.md 수정"
git push origin master
# 권한 삭제, 편집 :
1. 제어판 - 사용자 계정 - 자격 증명 관리자
2. Windows 자격 증명
3. 일반 자격 증명
4. git 관련 자격 증명 편집
# 추가
# git branch -M main 명령어는 현재 브랜치의 이름을 main으로 강제로 변경하는 명령어
git branch -M main
현재 브랜치의 이름을 main으로 변경하고, 만약 동일한 이름을 가진 브랜치가 이미 존재하면 강제로 그 브랜치를 덮어쓰는 역할을 합니다.
- git branch: Git에서 브랜치를 관리하는 명령어입니다. 이 명령어를 통해 브랜치를 생성, 삭제, 이름 변경 등을 할 수 있습니다.
- -M 옵션: 브랜치의 이름을 강제로 변경하는 옵션입니다. -M은 --move --force의 약어로, 동일한 이름을 가진 브랜치가 이미 존재하더라도 강제로 이름을 변경합니다. 만약 기존에 main이라는 브랜치가 있었다면, 이 옵션을 사용하여 그 브랜치를 덮어씁니다.
- main: 새로 설정할 브랜치 이름입니다. 이 경우, 현재 브랜치의 이름을 main으로 변경합니다.
- 현재 체크아웃된 브랜치(예: master)의 이름이 main으로 변경됩니다.
- 만약 main이라는 이름을 가진 브랜치가 이미 존재한다면, 그 브랜치가 덮어써지며, 기존 main 브랜치는 더 이상 존재하지 않게 됩니다.
- 기본 브랜치 이름 변경: 기존 프로젝트에서 기본 브랜치의 이름을 master에서 main으로 변경하려는 경우 이 명령어를 사용할 수 있습니다. 이는 최근 많은 프로젝트에서 기본 브랜치 이름을 main으로 변경하는 추세에 따라 필요할 수 있습니다.
- 새로운 브랜치 이름 설정: 새로운 이름으로 브랜치를 쉽게 변경할 수 있으며, 특히 프로젝트 초기 설정 단계에서 유용합니다.
# main을 원격 저장소의 origin에 푸시(push)
git push -u origin main
로컬 브랜치 main을 원격 저장소의 origin에 푸시(push)하는 동시에, 해당 브랜치를 추적할 기본 브랜치로 설정하는 역할을 합니다. 이 명령어를 사용하면 이후에 git push와 git pull을 명령어에서 브랜치 이름을 생략하고도 사용할 수 있습니다.
- git push: 로컬 저장소의 커밋을 원격 저장소에 푸시하는 명령어입니다. 푸시하면 로컬 브랜치의 변경 사항이 원격 저장소에 반영됩니다.
- -u: --set-upstream의 줄임말로, 이 옵션은 로컬 브랜치와 원격 브랜치를 연결(추적)하는 역할을 합니다. 이를 통해, 이후의 git push와 git pull 명령어를 실행할 때 브랜치 이름을 생략할 수 있습니다.
- origin: 원격 저장소의 이름입니다. Git에서는 기본적으로 원격 저장소의 이름을 origin으로 설정합니다. 이는 클론한 저장소의 기본 이름이며, 원격 저장소의 별명이라고 할 수 있습니다.
- main: 로컬 브랜치의 이름입니다. 이 명령어는 로컬 main 브랜치의 내용을 원격 저장소의 main 브랜치에 푸시합니다.
- 로컬의 main 브랜치가 원격 저장소의 origin에 있는 main 브랜치에 푸시됩니다. 만약 원격 저장소에 main 브랜치가 없으면, 이 명령어에 의해 새로 생성됩니다.
- -u 옵션 덕분에, 로컬의 main 브랜치가 원격의 main 브랜치와 연결(추적)됩니다. 이후로는 git push와 git pull 명령어를 사용할 때, 별도로 브랜치 이름을 명시하지 않아도 됩니다. 예를 들어, 단순히 git push만 실행해도 로컬 main 브랜치의 변경 사항이 원격 main 브랜치에 푸시됩니다.
# 컴퓨터로 복제
Git을 사용하여 원격 저장소를 로컬 컴퓨터로 복제하는 데 사용됩니다. 이 명령어를 실행하면, 지정된 원격 저장소의 전체 내용을 로컬 디렉토리에 복사하여 작업할 수 있게 됩니다.
- git clone: 원격 저장소를 로컬 컴퓨터로 복제하는 명령어입니다. 이 명령어는 저장소의 모든 파일, 커밋 히스토리, 브랜치 등을 복사하여 로컬에 동일한 Git 저장소를 만듭니다.
- https://github.com/user/test.git: 복제할 원격 저장소의 URL입니다. 이 URL은 GitHub에 호스팅된 특정 Git 저장소를 가리킵니다.
- https://github.com/: GitHub의 기본 URL입니다.
- user/: GitHub 사용자 이름 또는 조직 이름입니다.
- test.git: 복제하려는 Git 저장소의 이름입니다. .git은 Git 저장소임을 나타내는 확장자입니다.
git clone https://github.com/user/test.git
git clone https://github.com/user/test.git 새이름
- 로컬 디렉토리 생성: 이 명령어를 실행하면 현재 작업 중인 디렉토리에 test라는 이름의 새로운 디렉토리가 생성됩니다. 이 디렉토리는 원격 저장소의 모든 파일과 디렉토리 구조를 포함합니다.
- 전체 Git 히스토리 복제: test 디렉토리 내에는 원격 저장소의 모든 커밋 기록, 브랜치 정보 등이 포함된 .git 폴더가 있습니다. 이를 통해 원격 저장소에서 작업한 모든 기록을 로컬에서 그대로 확인하고 작업할 수 있습니다.
- 원격 저장소와 연결: 로컬 저장소의 origin이라는 이름으로 원격 저장소와의 연결이 자동으로 설정됩니다. 이 연결을 통해 이후에 git pull, git push 명령어를 사용하여 원격 저장소와 동기화할 수 있습니다.
# 기본 명령어
1. Git 저장소 초기화 및 클론
- git init: 새로운 Git 저장소를 초기화합니다. 현재 디렉터리를 Git 저장소로 만듭니다.
- git clone <repository_url>: 원격 저장소를 클론하여 로컬에 복사합니다. <repository_url>에 복사할 저장소의 URL을 넣습니다.
2. 변경 사항 확인 및 추가
- git status: 현재 작업 디렉터리의 상태를 확인합니다. 변경된 파일, 커밋되지 않은 파일 등을 보여줍니다.
- git add <file>: 특정 파일을 스테이징(staging)합니다. <file> 대신 .을 사용하면 모든 변경 파일을 스테이징할 수 있습니다.
- git add .: 현재 디렉터리의 모든 변경 사항을 스테이징합니다.
- git diff: 커밋되지 않은 변경 사항을 비교하여 보여줍니다.
3. 커밋 및 기록
- git commit -m "commit message": 스테이징된 변경 사항을 커밋합니다. -m 옵션을 사용하여 커밋 메시지를 직접 입력할 수 있습니다.
- git log: 저장소의 커밋 기록을 확인합니다.
- git log --oneline: 간단한 형식으로 커밋 기록을 확인합니다.
4. 브랜치 관리
- git branch: 로컬 브랜치 목록을 확인합니다.
- git branch <branch_name>: 새로운 브랜치를 생성합니다.
- git checkout <branch_name>: 특정 브랜치로 이동합니다.
- git checkout -b <branch_name>: 새로운 브랜치를 생성하고 그 브랜치로 이동합니다.
- git merge <branch_name>: 현재 브랜치에 <branch_name> 브랜치의 변경 사항을 병합합니다.
5. 원격 저장소 관리
- git remote add origin <repository_url>: 원격 저장소를 추가합니다. 일반적으로 origin이라는 이름으로 추가합니다.
- git push -u origin <branch_name>: 로컬 브랜치를 원격 저장소에 푸시합니다. 첫 푸시 시 -u 옵션으로 기본 원격 브랜치를 설정합니다.
- git pull: 원격 저장소에서 변경 사항을 가져와 현재 브랜치에 병합합니다.
- git fetch: 원격 저장소의 최신 변경 사항을 가져옵니다(병합하지 않음).
6. 기타
- git stash: 현재 작업 내용을 임시로 저장하고, 작업 디렉터리를 깨끗하게 만듭니다.
- git stash pop: 마지막으로 저장한 stash를 적용하고 stash에서 제거합니다.
- git reset --hard <commit_id>: 지정한 커밋으로 되돌립니다. 이후의 변경 사항은 모두 삭제됩니다.
- git revert <commit_id>: 지정한 커밋의 변경 사항을 되돌리는 새로운 커밋을 만듭니다.
# github.io
1. 해당 repositories 선택 - 우측 상단 Settings
2. Pages -> Node 화살표 - master 선택 - Save 누르기
1분정도후 F5 새로 고침
사이트 확인
# 사이트 연결 안될경우
# About 설정
# 저장소 삭제
# Netlify
'플러그인 외' 카테고리의 다른 글
[ 플러그인 ] React Swiper (0) | 2024.05.12 |
---|---|
[ 플러그인 ] fullpage.js (0) | 2024.05.06 |
[ API ] 카카오 주소 , 카카오 지도 (0) | 2024.04.23 |
[ Markdown ] Markdown 작성법 (0) | 2023.12.14 |
[ 플러그인 ] 04. Masonry, isotope (0) | 2023.11.02 |