지금 실행 중인 텍스트 에디터에서는 Ctrl + z를 여러 번 눌러 이전 상태로 돌아갈 수 있지만 만약 코드 수정 후 에디터를 종료했다면, 이전 상태로 돌아갈 수 없기 때문에 유지보수 측면에서 이전에 작성한 내용을 보존해야 할 필요가 있다.
이전에 작성한 내용을 보존해 주는 시스템이 있는데 이 시스템이 버전 관리 시스템(Version Control System)이다.
버전 관리 시스템(Version Control System) 중 가장 많이 쓰이는 도구, Git을 학습해보자.
위 내용 외에도 Git으로 관리되는 파일은 Github, GitLab, Bitbucket 등의 여러 가지 원격 저장소를 이용해서 백업과 협업을 할 수 있다는 장점이 있다.
Git은 소스 코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템
Github는 Git Repository를 관리할 수 있는 클라우드 기반 서비스
추가 저장장치가 필요없는 백업용 공간이자 개발자의 sns같은거다.
- 말 그대로 저장소
- Git으로 관리되는 폴더
Git repository 는 Remote Repository와 Local Repository 두 종류의 저장소를 제공한다.
작업할 때는 Local Repository에서 할 수 있고 내가 작업한 코드를 공유하려면 Remote Repository에 업로드해 여러 사람이 함께 공유할 수 있다.
다른 사람이 Remote Repository에 올려놓은 소스 코드를 내 Local Repository 로 가지고 올 수도 있다.
원격 저장소를 내 원격 저장소로 가지고 오는 작업
내 원격 저장소(Remote Repository)에서 내 컴퓨터로 가져오는 작업
내 컴퓨터에서 변경 작업을 완료한 내용을 commit을 통해 저장해준 뒤, Remote Repository에 반대로 올려주는 작업
Push를 완료하고 나면 GitHub에는 Pull request라는 기능이 있어서, 내가 제안한 코드 변경사항에 대해 반영 여부를 요청할 수 있다.
위 그림 출처 : designless.net
쉽게 말해 파일을 관리해주는 프로그램이다.
Git이 관리하는 디렉토리(폴더)에 어떤 문서를 만들면 Git으로 그 문서의 버전을 관리할 수 있다.
백업하기
협업하기
버전관리
일반적으로 Git 자체는 로컬에서 버전을 관리해주는 프로그램을 의미한다.
원격 저장소 기능을 제공해주는 서비스 중 하나가 Github이고 이 서비스를 이용해 백업 기능을 사용하고 협업할 수 있다.
조금 더 구체적으로 설명하자면, Github은 Git이 설치되어져 있는 클라우드 저장소이다.
Git은 로컬에서 버전을 관리해주는 프로그램이며, Github은 Git을 클라우드 방식으로 구현한 서비스이다.
위 그림 출처 : designless.net
reset HEAD <file>
checkout -- <file>
Git의 영역은 Git으로 관리하는 파일이 위치하는 영역을 의미한다.
Git의 각 영역은 크게 온라인과 로컬로 나뉜다.
온라인 : Remote repository(원격 저장소)
로컬 : Work space(작업 공간), Staging area(스테이징 영역), Local repository(지역 저장소)
git init을 입력하면 git init을 입력한 위치의 모든 파일들이 Git의 관리를 받게 된다.
git init
git config --global init.defaultBranch 변경할_브랜치_이름
이 명령어를 입력하면 앞으로 git init을 입력했을 때 생성되는 기본 브랜치의 이름이 변경할_브랜치_이름
으로 설정된다.
git branch -m 변경할_브랜치_이름
아래 코드를 입력하여 기본 브랜치 이름을 main으로 바꿔주고, 현재 브랜치의 이름도 main으로 바꾸자.
git config --global init.defaultBranch main
git branch -m main
error: refname refs/heads/master not found
fatal: Branch rename failed
기본 브랜치 이름을 바꾸는데는 문제가 없었지면 현재 브랜치 이름을 바꾸려 하자
master를 찾지 못해 변경하지 못했다는 에러가 나왔다.
브랜치가 없으면 만들면 되지 않을까? 생각이 들어 만들어 봤다.
마스터가 없어서 안된단다...
알고보니 버전 문제였다.
git --version 으로 git 버전을 확인할 수 있다.
2.28. 이상이어야 branch이름 변경이 가능하며, 2.28. 미만이라면 아래 명령어를 차례대로 입력해서 버전을 업그레이드 할 수 있다.
$ sudo add-apt-repository ppa:git-core/ppa -y
$ sudo apt-get update
$ sudo apt-get install git -y
버전 업데이트 후 문제 없이 해결됐다.
git init
을 입력하면 디렉토리 내에 .git 디렉토리가 생성된다.
그러나 ls -l
명령어로는 .git 디렉토리를 확인할 수 없다.
디렉토리나 파일 이름의 맨 앞에 .이 붙으면 해당 디렉토리 또는 파일이 숨김 처리되기 때문이다.
하지만 ls
명령어의 옵션으로 -a
를 붙여주면 숨김 처리된 디렉토리 및 파일을 확인할 수 있다.
아래와 같이ls -al
명령어를 통해 .git 파일의 존재를 확인할 수 있었다.
cf) .git 디렉토리를 실수로 삭제하면 Git 명령어가 제대로 동작하지 않게 되므로, .git 디렉토리를 숨김처리 해두는 것이다.
- Work space는 Git의 세 가지 영역 중 하나로, Working tree 또는 Work tree라고도 하며, 눈으로 볼 수 있는 디렉토리 자체를 의미한다.
- Git은 Work space를 자동으로 스캔한다.
- Work space는 git init을 입력한 직후, 다른 어떠한 Git 명령어도 입력하지 않은 상태의 파일들이 존재하는 영역이다.
Git으로 관리되고 있는 파일들의 상태는 git status
명령어로 확인할 수 있다.
git status
결과가 안내하는 사항은 다음과 같다.
On branch main
No commits yet
Untracked files: ~
(use “git add <file>…” to include in what will be committed)
git add 파일_이름
을 입력하면 커밋될 것들에 해당 파일을 포함시킬 수 있다는 의미nothing added to commit but untracked files present (use "git add" to track)
-
git add
명령어를 사용하라는 안내Untracked
→ 파일의 상태 중 하나
what will be committed
→ 커밋될 것들이 모여있는 무언가 → Git의 영역 중 Staging area를 의미
use git add to track
→ track하기 위해서는 git add 명령어를 사용해야 한다.
Git의 관리 하에 있는 파일들의 상태는 크게 Tracked와 Untracked로 나뉘며, Tracked는 다시 Unmodified, Modified, Staged로 나뉜다.
Untracked
Tracked
말그대로 Git에 의해 추적되고 있는 상태, 추적되고 있지 않은 상태를 의미함.
Tracked 상태인 파일들은 수정되었을 때 Git이 파일의 변경 내용을 감지하지만, Untracked 상태인 파일들은 파일의 내용을 변경하여도 Git이 파일의 내용 변경을 감지하지 못한다.
Untracked 상태의 파일은 Commit이라는 과정을 거치면 Tracked 상태로 바뀐다.
Unmodified : 파일의 수정이 Git에 의해 감지되지 않은 상태
Modified : 파일의 수정이 Git에 의해 감지된 상태
Staged : 파일이 Staging area에 존재하는 상태
Local repository에 저장할 파일들이 임시적으로 대기하는 영역을 의미한다.
Local repository에 파일을 저장하는 것은 단순히 파일을 저장하는 것 이외의 특별한 의미를 가진다. (추후 설명 보충)
Staging area로 파일을 이동시키는 명령어
git add
vi 파일명
을 통해 wish is the best 한줄 추가하고 파일명도 README.md에서 RRR.md로 바꿧다.
(vi 나올때 insert 누르고 :wq
하면 저장 후 종료 :q
하면 그냥 종료)
push전이라 깃허브에는 방금 한 수정이 적용되지 않았다.
그럼 push 해보자.
위와 같이 오류가 나와서 erase만 보고 파일명을 바꾸는게 삭제 후 다시 만드는 취급을 받는줄 알고 파일명을 원래대로 돌렸고 gh auth login
를 다시해 깃허브와 재접속했더니 정상적으로 작동했다.
하고보니 add와 commit을 다시 안해서 결국 파일명은 바뀐 것을 확인할 수 있었다.
페어가 위와 마찬가지로 나에게 push 해줬을 때, pull을 해보았다.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists
위와 같이 오류가 나서 깃 연결이 제대로 되었나 확인해 보았지만 정상이다.
알고보니 주소를 잘못 입력했다.
그래서 git remote remove pair
로 remote 한 주소를 삭제하고 다시 연결했다.
파일명을 DDD로 바꿔서 push 받았더니 오류가 나와 기존에 있던 README.md 파일을 DDD.md로 바꿔주고 다시 pull 해봤다.
commit을 안해서 오류가 났다. commit 후 다시 pull 해보았다.
또 오류가 나왔다.
hint: git config pull.rebase false # merge
hint: git config pull.rebase true # rebase
hint: git config pull.ff only # fast-forward only
병합할 수 없어서 발생하는 오류라는데 정확한 의미를 모르겠다.
그래도 이 세가지를 잘 쓰면 될 것 같아 시도해 보았다.
계속 시도하다 보니 git config pull.rebase false만 했더니
commit을 하란다.
commit 하니까 pull 성공했다.
의도적으로 충돌을 일으켰었다. vi 를 이용해 충돌 부분을 수정하고 내 repository push해서 동기화를 완료했다.
push 보낸거
wjwee96@DESKTOP-38438M7:~$ ls
be-simple-git-workflow clonetest folderName git_clone gittest gittest2 goodjob.txt hello.java hello_git hello_git.txt linux
wjwee96@DESKTOP-38438M7:~$ cd gittest2
wjwee96@DESKTOP-38438M7:~/gittest2$ ls -l
total 0
wjwee96@DESKTOP-38438M7:~/gittest2$ git clone https://github.com/wish9/pair1.1.git
Cloning into 'pair1.1'...
remote: Enumerating objects: 18, done.
remote: Counting objects: 100% (18/18), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 18 (delta 1), reused 17 (delta 0), pack-reused 0
Receiving objects: 100% (18/18), done.
Resolving deltas: 100% (1/1), done.
wjwee96@DESKTOP-38438M7:~/gittest2$ ls
pair1.1
wjwee96@DESKTOP-38438M7:~/gittest2$ cd pair1.1
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ ls
README.md git_practice_wee.txt hello_git.txt 'test file.txt'
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ git remote --v
origin https://github.com/wish9/pair1.1.git (fetch)
origin https://github.com/wish9/pair1.1.git (push)
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ git remote add pair git@github.com:asetonhqs/git_practice.git
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ git remote --v
origin https://github.com/wish9/pair1.1.git (fetch)
origin https://github.com/wish9/pair1.1.git (push)
pair git@github.com:asetonhqs/git_practice.git (fetch)
pair git@github.com:asetonhqs/git_practice.git (push)
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$
wjwee96@DESKTOP-38438M7:~$ ls
be-simple-git-workflow clonetest folderName git_clone gittest gittest2 goodjob.txt hello.java hello_git hello_git.txt linux
wjwee96@DESKTOP-38438M7:~$ cd git
git_clone/ gittest/ gittest2/
wjwee96@DESKTOP-38438M7:~$ cd 3
-bash: cd: 3: No such file or directory
wjwee96@DESKTOP-38438M7:~$ cd gittest2
wjwee96@DESKTOP-38438M7:~/gittest2$ ls
pair1.1
wjwee96@DESKTOP-38438M7:~/gittest2$ cd pair1.1
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ ls
README.md git_practice_wee.txt hello_git.txt 'test file.txt'
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ vi README.md
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ cat README
cat: README: No such file or directory
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ cat README.md
### this is README file for simple git workflow# be-simple-git-workflow
### please fork it and follow the instruction to get pair's code dynamically
<br />
이 Repository를 fork한 후 pair와 함께 Simple Git Workflow를 연습하세요.
<br />
이 스프린트는 제출할 필요는 없습니다.
wish is the best
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ mv README.md RRR.md
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ ls
RRR.md git_practice_wee.txt hello_git.txt 'test file.txt'
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: README.md
Untracked files:
(use "git add <file>..." to include in what will be committed)
RRR.md
no changes added to commit (use "git add" and/or "git commit -a")
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ git add .
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
renamed: README.md -> RRR.md
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ git commit -m "파일명 변경, 한문장 추가"
[main 7341676] 파일명 변경, 한문장 추가
1 file changed, 3 insertions(+)
rename README.md => RRR.md (94%)
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ git log
commit 734167645468136b363f006dbcb5251e96594997 (HEAD -> main)
Author: wish9 <wjwee9@gmail.com>
Date: Tue Dec 20 20:04:45 2022 +0900
파일명 변경, 한문장 추가
commit 489ea593ab5fecdcbcb4931700a2c0fbd0257358 (origin/main, origin/HEAD)
Author: SEB_BE_43_권순하 <asetonhqss@gmail.com>
Date: Tue Dec 20 15:50:34 2022 +0900
2nd testfile
commit 9f1e1e9a29c7d470dc6b65fd6ace12b9e5a790b0
Author: SEB_BE_43_권순하 <asetonhqss@gmail.com>
Date: Tue Dec 20 15:37:00 2022 +0900
2nd test
commit 2f85d97f7badca83d45b34231c246e9e8f8339d1
Author: SEB_BE_43_권순하 <asetonhqss@gmail.com>
Date: Tue Dec 20 15:21:22 2022 +0900
first test
commit fd68f3bbb947267b297893349cb579d50d1a1192
Author: SEB_BE_43_권순하 <asetonhqss@gmail.com>
Date: Tue Dec 20 13:44:32 2022 +0900
subject
commit 60c8f828fc52a93581996fe21a6c06e54eff8720
Author: SEB_BE_43_권순하 <asetonhqss@gmail.com>
Date: Tue Dec 20 12:42:13 2022 +0900
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ push origin main
Command 'push' not found, did you mean:
command 'pdsh' from deb pdsh
command 'rush' from deb rush
command 'posh' from deb posh
command 'ppsh' from deb ppsh
Try: sudo apt install <deb name>
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ git push origin main
gh auth git-credential: "erase" operation not supported
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/wish9/pair1.1.git/'
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ mv RRR.md README.md
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
✓ Authentication complete.
- gh config set -h github.com git_protocol https
✓ Configured git protocol
✓ Logged in as wish9
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ git push origin main
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 650 bytes | 650.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/wish9/pair1.1.git
489ea59..7341676 main -> main
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ vi rr
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ ls
README.md git_practice_wee.txt hello_git.txt rr 'test file.txt'
wjwee96@DESKTOP-38438M7:~/gittest2/pair1.1$ re
pull 받는거
wjwee96@DESKTOP-38438M7:~$ cd gittest1
-bash: cd: gittest1: No such file or directory
wjwee96@DESKTOP-38438M7:~$ ls
be-simple-git-workflow clonetest folderName git_clone gittest gittest2 goodjob.txt hello.java hello_git hello_git.txt linux
wjwee96@DESKTOP-38438M7:~$ cd gittest
wjwee96@DESKTOP-38438M7:~/gittest$ ls
be-simple-git-workflow
wjwee96@DESKTOP-38438M7:~/gittest$ mv be-simple-git-workflow pairtest1
wjwee96@DESKTOP-38438M7:~/gittest$ cd pairtest1
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ ls
README.md
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ remote --v
remote: command not found
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ remote add mypairtest https://github.com/wish9/mypairtest.git
remote: command not found
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ ls
README.md
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ cat README.md
### this is README file for simple git workflow# be-simple-git-workflow
### please fork it and follow the instruction to get pair's code dynamically
<br />
이 Repository를 fork한 후 pair와 함께 Simple Git Workflow를 연습하세요.
<br />
이 스프린트는 제출할 필요는 없습니다.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git add README.md
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ Git remote --v
Command 'Git' not found, did you mean:
command 'wit' from deb wit
command 'nit' from deb python-nevow
command 'vit' from deb vit
command 'git' from deb git
Try: sudo apt install <deb name>
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git remote --v
origin https://github.com/wish9/be-simple-git-workflow.git (fetch)
origin https://github.com/wish9/be-simple-git-workflow.git (push)
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git remote mypairtest https://github.com/wish9/mypairtest.git
error: unknown subcommand: `mypairtest'
usage: git remote [-v | --verbose]
or: git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--mirror=<fetch|push>] <name> <url>
or: git remote rename [--[no-]progress] <old> <new>
or: git remote remove <name>
or: git remote set-head <name> (-a | --auto | -d | --delete | <branch>)
or: git remote [-v | --verbose] show [-n] <name>
or: git remote prune [-n | --dry-run] <name>
or: git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]
or: git remote set-branches [--add] <name> <branch>...
or: git remote get-url [--push] [--all] <name>
or: git remote set-url [--push] <name> <newurl> [<oldurl>]
or: git remote set-url --add <name> <newurl>
or: git remote set-url --delete <name> <url>
-v, --verbose be verbose; must be placed before a subcommand
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git remote add mypairtest https://github.com/wish9/mypairtest.git
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git remote --v
mypairtest https://github.com/wish9/mypairtest.git (fetch)
mypairtest https://github.com/wish9/mypairtest.git (push)
origin https://github.com/wish9/be-simple-git-workflow.git (fetch)
origin https://github.com/wish9/be-simple-git-workflow.git (push)
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git push .
Everything up-to-date
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git push README.md
fatal: invalid gitfile format: README.md
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git push mypairtest main
Enumerating objects: 53, done.
Counting objects: 100% (53/53), done.
Delta compression using up to 12 threads
Compressing objects: 100% (21/21), done.
Writing objects: 100% (53/53), 7.68 KiB | 7.68 MiB/s, done.
Total 53 (delta 16), reused 53 (delta 16), pack-reused 0
remote: Resolving deltas: 100% (16/16), done.
To https://github.com/wish9/mypairtest.git
* [new branch] main -> main
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ vi README.md
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git add .
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: README.md
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git commit .
Aborting commit due to empty commit message.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ vi README.md
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git remote -v
mypairtest https://github.com/wish9/mypairtest.git (fetch)
mypairtest https://github.com/wish9/mypairtest.git (push)
origin https://github.com/wish9/be-simple-git-workflow.git (fetch)
origin https://github.com/wish9/be-simple-git-workflow.git (push)
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git remote add pair git@github.com:asetonhqs/mypairtest.request.git
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git remote -v
mypairtest https://github.com/wish9/mypairtest.git (fetch)
mypairtest https://github.com/wish9/mypairtest.git (push)
origin https://github.com/wish9/be-simple-git-workflow.git (fetch)
origin https://github.com/wish9/be-simple-git-workflow.git (push)
pair git@github.com:asetonhqs/mypairtest.request.git (fetch)
pair git@github.com:asetonhqs/mypairtest.request.git (push)
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull pair main
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ gh auth login
? What account do you want to log into? GitHub.com
? You're already logged into github.com. Do you want to re-authenticate? No
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git remote remove pair
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git remote -v
mypairtest https://github.com/wish9/mypairtest.git (fetch)
mypairtest https://github.com/wish9/mypairtest.git (push)
origin https://github.com/wish9/be-simple-git-workflow.git (fetch)
origin https://github.com/wish9/be-simple-git-workflow.git (push)
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git remote add pair https://github.com/asetonhqs/mypairtest.request.git
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull pair main
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 510 bytes | 510.00 KiB/s, done.
From https://github.com/asetonhqs/mypairtest.request
* branch main -> FETCH_HEAD
* [new branch] main -> pair/main
Updating 016d3ed..500ee73
error: Your local changes to the following files would be overwritten by merge:
README.md
Please commit your changes or stash them before you merge.
Aborting
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ ls
README.md
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ mv README.md DDD.md
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ ls
DDD.md
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull pair main
From https://github.com/asetonhqs/mypairtest.request
* branch main -> FETCH_HEAD
Updating 016d3ed..500ee73
error: Your local changes to the following files would be overwritten by merge:
README.md
Please commit your changes or stash them before you merge.
error: The following untracked working tree files would be overwritten by merge:
DDD.md
Please move or remove them before you merge.
Aborting
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git add .
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull pair main
From https://github.com/asetonhqs/mypairtest.request
* branch main -> FETCH_HEAD
Updating 016d3ed..500ee73
error: Your local changes to the following files would be overwritten by merge:
DDD.md
Please commit your changes or stash them before you merge.
Aborting
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git commit -m "파일명 변경"
[main 77a8b18] 파일명 변경
1 file changed, 3 insertions(+), 1 deletion(-)
rename README.md => DDD.md (69%)
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull pair main
From https://github.com/asetonhqs/mypairtest.request
* branch main -> FETCH_HEAD
hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint:
hint: git config pull.rebase false # merge
hint: git config pull.rebase true # rebase
hint: git config pull.ff only # fast-forward only
hint:
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
fatal: Need to specify how to reconcile divergent branches.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git config pull.ff only
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull pair main
From https://github.com/asetonhqs/mypairtest.request
* branch main -> FETCH_HEAD
fatal: Not possible to fast-forward, aborting.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull --rebase
Current branch main is up to date.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull pair main
From https://github.com/asetonhqs/mypairtest.request
* branch main -> FETCH_HEAD
fatal: Not possible to fast-forward, aborting.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git config --unset pull.ff
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull pair main
From https://github.com/asetonhqs/mypairtest.request
* branch main -> FETCH_HEAD
hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint:
hint: git config pull.rebase false # merge
hint: git config pull.rebase true # rebase
hint: git config pull.ff only # fast-forward only
hint:
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
fatal: Need to specify how to reconcile divergent branches.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git log
commit 77a8b1886a2892c802f9cf56f38c6a55184b4fc1 (HEAD -> main)
Author: wish9 <wjwee9@gmail.com>
Date: Tue Dec 20 21:43:01 2022 +0900
파일명 변경
commit 016d3ed0129d0388a6fa6c09a4e1ae84e69a22e0 (origin/main, origin/HEAD, mypairtest/main)
Author: 0Hyun.Cho <72560095+YoungHyun-Cho@users.noreply.github.com>
Date: Tue Dec 20 09:40:29 2022 +0900
Update README.md
commit 1bdcc21c45340f775446107ffafed5b09827c872
Author: 0Hyun.Cho <72560095+YoungHyun-Cho@users.noreply.github.com>
Date: Fri Dec 9 14:00:39 2022 +0900
Update README.md
commit d58a2c88d9d5a382d632a5f606a507f6417bc048
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git push origin main
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 533 bytes | 533.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/wish9/be-simple-git-workflow.git
016d3ed..77a8b18 main -> main
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git remote add mypair https://github.com/wish9/mypairtest.git
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git remote --v
mypair https://github.com/wish9/mypairtest.git (fetch)
mypair https://github.com/wish9/mypairtest.git (push)
mypairtest https://github.com/wish9/mypairtest.git (fetch)
mypairtest https://github.com/wish9/mypairtest.git (push)
origin https://github.com/wish9/be-simple-git-workflow.git (fetch)
origin https://github.com/wish9/be-simple-git-workflow.git (push)
pair https://github.com/asetonhqs/mypairtest.request.git (fetch)
pair https://github.com/asetonhqs/mypairtest.request.git (push)
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git push mypair main
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 533 bytes | 533.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/wish9/mypairtest.git
016d3ed..77a8b18 main -> main
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull pair main
From https://github.com/asetonhqs/mypairtest.request
* branch main -> FETCH_HEAD
hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint:
hint: git config pull.rebase false # merge
hint: git config pull.rebase true # rebase
hint: git config pull.ff only # fast-forward only
hint:
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
fatal: Need to specify how to reconcile divergent branches.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull pair main
From https://github.com/asetonhqs/mypairtest.request
* branch main -> FETCH_HEAD
hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint:
hint: git config pull.rebase false # merge
hint: git config pull.rebase true # rebase
hint: git config pull.ff only # fast-forward only
hint:
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
fatal: Need to specify how to reconcile divergent branches.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git config pull.ff only false
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull pair main
From https://github.com/asetonhqs/mypairtest.request
* branch main -> FETCH_HEAD
fatal: Not possible to fast-forward, aborting.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git config pull.rebase false
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull pair main
From https://github.com/asetonhqs/mypairtest.request
* branch main -> FETCH_HEAD
fatal: Not possible to fast-forward, aborting.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git config --unset pull.ff
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull pair main
From https://github.com/asetonhqs/mypairtest.request
* branch main -> FETCH_HEAD
Auto-merging DDD.md
CONFLICT (content): Merge conflict in DDD.md
Automatic merge failed; fix conflicts and then commit the result.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull --rebase
error: Pulling is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull pair main
error: Pulling is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git status
On branch main
Your branch is up to date with 'origin/main'.
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: DDD.md
no changes added to commit (use "git add" and/or "git commit -a")
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git add .
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git status
On branch main
Your branch is up to date with 'origin/main'.
All conflicts fixed but you are still merging.
(use "git commit" to conclude merge)
Changes to be committed:
modified: DDD.md
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull pair main
error: You have not concluded your merge (MERGE_HEAD exists).
hint: Please, commit your changes before merging.
fatal: Exiting because of unfinished merge.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git commit -am '상훈님 추가'
[main 4a8bd0f] 상훈님 추가
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git pull pair main
From https://github.com/asetonhqs/mypairtest.request
* branch main -> FETCH_HEAD
Already up to date.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ vi DDD.md
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ cat DDD.md
# this is README file for simple git workflow# be-simple-git-workflow
### please fork it and follow the instruction to get pair's code dynamically
<br />
이 Repository를 fork한 후 pair와 함께 Simple Git Workflow를 연습하세요.
<br />
HEAD이 스프린트는 제출할 필요는 없습니다. 아무말아무말
wish is the best in the world
이 스프린트는 제출할 필요는 없습니다. asetonhqs is cool
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git add .
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git commit -m "pull 받은거"
[main 1ef58a3] pull 받은거
1 file changed, 3 insertions(+), 4 deletions(-)
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git status
On branch main
Your branch is ahead of 'origin/main' by 3 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git log
commit 1ef58a362feb4104b5faab5dce5a38b9f1f44718 (HEAD -> main)
Author: wish9 <wjwee9@gmail.com>
Date: Tue Dec 20 22:12:40 2022 +0900
pull 받은거
commit 4a8bd0f0d1a6cee92abe99c30ab6ff2e1a980c5d
Merge: 77a8b18 500ee73
Author: wish9 <wjwee9@gmail.com>
Date: Tue Dec 20 22:08:54 2022 +0900
상훈님 추가
commit 77a8b1886a2892c802f9cf56f38c6a55184b4fc1 (origin/main, origin/HEAD, mypair/main)
Author: wish9 <wjwee9@gmail.com>
Date: Tue Dec 20 21:43:01 2022 +0900
파일명 변경
commit 500ee7316d424564a03f222e6903bd73a96d2c5a (pair/main)
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git remote --v
mypair https://github.com/wish9/mypairtest.git (fetch)
mypair https://github.com/wish9/mypairtest.git (push)
mypairtest https://github.com/wish9/mypairtest.git (fetch)
mypairtest https://github.com/wish9/mypairtest.git (push)
origin https://github.com/wish9/be-simple-git-workflow.git (fetch)
origin https://github.com/wish9/be-simple-git-workflow.git (push)
pair https://github.com/asetonhqs/mypairtest.request.git (fetch)
pair https://github.com/asetonhqs/mypairtest.request.git (push)
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git push mtpair main
fatal: 'mtpair' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ git push mypair main
Enumerating objects: 12, done.
Counting objects: 100% (12/12), done.
Delta compression using up to 12 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (9/9), 916 bytes | 916.00 KiB/s, done.
Total 9 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3), completed with 1 local object.
To https://github.com/wish9/mypairtest.git
77a8b18..1ef58a3 main -> main
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$ ^C
wjwee96@DESKTOP-38438M7:~/gittest/pairtest1$
explorer.exe .
입력하면 폴더 위치 열림.
git reset HEAD^
입력시 최근 commit 1개 취소 가능
log 나갈때 q 누르면 나가짐