[Git] Git Commands


Git Commands


git config


gitのユーザー体験設定

ユーザー情報


Gitをインストールした後、まずユーザー名と電子メールアドレスを設定します.
設定されていない場合はgitをローカルで使用できますが、リモート・リポジトリにアップロードすることはできません.
この情報はコミットのたびに使用され、コミット後に変更することはできません.
[필수]
user.name - 사용자 이름
user.email - 사용자 이메일

設定範囲の選択


システム/グローバル/プロジェクト単位で設定できます.
[시스템 설정]
git config --system

[전역 설정]
git config --global

[프로젝트 설정]
git config

// 우선 순위
프로젝트 > 전역 > 시스템

設定の確認と追加

git config --list // config에 설정되어있는 정보를 가져옴

git config <key>  // 입력한 key에 해당하는 value를 보여줌

git config <key> <value>  // key-value 값을 config에 설정함

git config -e(--edit)  // 편집기를 통해 편집할 수 있음

有用な設定


1. core.Autocrlf=false(デフォルト)|true|input


一般的に、オペレーティングシステムごとにline endingを処理する方法は異なります.
linux/macを使用する開発者とwindowを使用する開発者が協力すれば、
ラインendingの処理方法が異なり、実際のコードには何の変化もありません.
CR(Carriage Return)またはLF(Line Feed)のため、変更がコミットとして誤って認識される場合があります.
(WindowsではCRとLFを書き込むことができますが、Linux OSではLFのみを使用します)
core.Autocrlfにコミットすると、CRLFを自動的にLFに変換できます.逆に、チェックアウト時にLFCRLFに変換できます.
Windowがこの値をtrueに設定すると、チェックアウト時にLF文字がCRLFに変換されます.
Linux/Macはチェックアウト時にLFをCRLFに変換する必要がないため、input設定値コミットを使用する場合にのみCRLFをLFに変換します.
줄바꿈의 종류, CR / LF
CR (Carriage Return): 현재 위치에서 바로 아래로 이동
LF (Line Feed): 커서의 위치를 앞으로 이동

2. core.editor = command | "path"


gitで編集するエディタ(コミット時やタグメッセージの作成など)を設定します.
デフォルト値はviで実行され、設定されたコマンドやパスが見つからなくてもviで実行されます.

3. commit.template = "path"


コミット時にgitが表示するコミットメッセージのオプションを設定します.
チーム定義のコミット・メッセージ・ルールがある場合は、このオプションを使用すると便利です.

4. alias.<key> command


ショートカットコマンドを設定できます.
例えば、checkoutを短く書きたいなら!
git config --global alias.co checkout
設定されている場合、チェックアウトはcheckoutではなくcoを使用して行うことができる.

Create Project


git init


リモートストレージを必要とせずにローカルで作成します.新しいGitリポジトリを作成!
git initを入力します.gitフォルダが作成され、gitを使用するための設定が完了します.
ローカルgitリポジトリの作成後にリモート・リポジトリに接続するには、次のように入力します.git remote add origin <git-server-address>作成されました.gitフォルダ内に他のフォルダとファイルが存在します.
1)hooks/:クライアントまたはサーバhookを配置する場所
2)info/:.gitignoreなどの無視するファイルパターンを記録する
3)object/:すべてのコンテンツのデータベースを作成する
明かりがいくつもあります.
** .gitignore
.gitignoreはgitで管理されていないファイルのリストを管理するファイルです.
ここにフォルダまたはファイル名を記入するとgitとして管理されないため、リポジトリにアップロードするとこれらのファイルを除いて他のファイルがアップロードされます.
gitリポジトリにアップロードされるファイル.gitignoreに追加するには、さらなる措置が必要です.
アップロードされたファイルはtrackignを続行するため、トレースを削除する必要があります.
//.gitignore 파일 수정 후
git rm -r --cached  // cache에 기록된 tracking 중인 파일 리스트 삭제. cached 없이 삭제하면 망...함..
git add .
git commit -m "refactor:remove ignored file"
git push origin branch
.gitignoreでどのようなコンテンツを追加するか分からない場合は、ここを参照してください.

git clone


リモート(リモート)ストレージによるローカル作成
リモート・リポジトリが既に存在する場合は、クローンを使用してローカルに作成できます.git clone <remote repository url>このrepositoryのdefault branchを基準に、新しいランチを作ってから仕事をする習慣を身につけましょう!

Snapshotting


Gitの核心機能は、ファイルのスナップショットを管理するコマンドです.

lifecycle


Working Directoryのすべてのファイルは、大きく分けて管理と非管理に分けることができます.
トレースファイルは、スナップショットにすでに含まれているファイルであり、未修正、変更、階層化された状態の1つです.
最初は、コードを作成して何もしないと、追跡されない状態になります.
Gitはコードを解放していないため、これらのファイルを追跡していません.git add .というコマンドを発行すると、これらのファイルは追跡状態になります.git commitに達すると段階的であると考えられる.
プッシュされたファイルは常に階層ファイルをプッシュします.
commitは未修正状態になり、修正は修正状態になります.
上記のライフサイクルを繰り返します.

commands

git add file  // 변경 파일들 또는 신규 추가된 파일을 staged 상태로 변경

git commit  // staged 상태의 파일들을 포함해 스냅샷을 생성

git reset 옵션 돌아갈커밋ID  // 돌아가려는 커밋으로 repository를 재설정 후 옵션에 따른 파일 처리를 함

git staus  // 파일의 상태를 확인
**resetのオプションタイプ
--hard:戻る履歴の後続コミットをすべて削除し、戻るコミット条件に基づいて後続コミットをすべて初期化します.
--soft:戻る履歴に戻ります.後続のコミットは削除されていません.後続のコミットファイルはまだ一時保存されています.
--mixed(default):戻る履歴に戻り、後続のコミットは削除されず、後続のコミットファイルは階層化されていません

Branch & Merge


Git branch<ランチ名>


:新しい朝食を作成

git checkout<朝食|ラベル>


:指定された朝食またはタグに変更

git merge<仕事の朝ごはん>


:他の朝食の履歴をマージ
(オプション)default:ターゲットフロントエンドでワークランチをマージし、ターゲットフロントエンドで新しいコミットを作成します.
仕事の朝食の履歴を共有--squash:タスク朝食中のタスク履歴(commit)をコミットにマージし、新しいcommitを作成し、ターゲット昼食でマージ
ex)features朝食には3つのcommitがあり、この朝食をdev朝食時に統合する
featuresの3つのcommitを1つのcommitにマージします.

git tag


:現在のスナップショットステータスをtagとして保存
tag ? 
commit을 참조하기 쉽도록 알기 쉬운 이름을 붙이는 것.
한번 붙인 태그는 브런치처럼 위치가 이동하지 않고 고정됨.
git에서는 일반태그 / 주석 태그를 사용할 수 있음

일반 태그 : 이름만 붙일 수 있음
주석 태그 : 이름을 붙일 수 있고, 태그에 대한 설명, 서명, 만든 사람 이름, 이메일, 날짜 정보도 포함시킬 수 있음.

[태그 리스트 조회]
git tag

[태그 생성]
git tag <태그명>
git tag <태그명> <체크섬>  // commit 지정해서 tag 생성

git stash


:Working Directoryに変更、追跡されたファイルを一時保存する
git stashは、処理中のコンテンツの場合、別のリクエストを受信し、別の朝食に移動する場合はコミットする必要がありますが、コミットの場合は使用できます.
git stashを使用して、私の仕事を一時的に保存します.
他のリクエスト操作を実行すると、保存されたコンテンツを返して取得できます.
// stash 잘 쓰면 유용할 것 같아서 더 찾아봄
git stash                  // 현재 수정 중인 상태에서 이전 HEAD의 커밋 상태로 돌아감
git stash save NAME        // 해당 이름으로 git stash 수행
git stash pop              // 임시 저장했던 상태로 되돌림. 저장된 스택 중 가장 위에 있는 것을 pop
git stash list             // 현재 보관되어진 리스트 보여줌
git stash apply stash@{0}  // stash 이름들은 기본적으로 stash@{0}으로 지정됨.
git stash drop stash@{0}   // 지정된 stash 중 해당 이름으로 되어있는 것 삭제. 생략하면 맨 위에 있는 것 삭제
git stash clear            // 모든 stash 리스트 삭제

Patching


git revert <commit hash>


:特定のコミットを返します.複数のコミットを返すか、範囲を指定できます.
reset vs revert
이미 push한 코드라면 reset 보다는 revert를 하는 것을 권장한다.
push한 이후 reset을 하고 다시 push를 하게 되면 
로컬의 commit과 원격 저장소의 commit 내역에 차이가 생겨 충돌이 발생하게 된다.

revert는..
push 이후에 revert를 사용하면 어떤 커밋에 대해 revert를 했는지가 로그에 남기도 하고
다른 사람이 내가 지운 commit 이후에 작업을 했더라도, 해당 commit을 건드리지 않기 때문에 문제가 생기지 않는다.

이미 push한 코드라면 미련없이 revert를 하자~!

git rebase <branch>


:他の朝食の提出点に変更し、朝食の共通の祖先になります.
仕事中の朝の昼食をメインの朝の昼食に統合すると、
今の仕事の朝の昼食は残っているのではなく、メイン料理を作ることができます.

Sharing


git fetch


:リモート・リポジトリの最新履歴(変更)を取得します.ローカルデータとはマージされません.

git pull


:リモート・リポジトリで変更されたデータを取得し、現在のローカル・データにマージします.

git push


:変更履歴をリモート・リポジトリにアップロード
階層化されたファイルのみがプッシュされます

git remote


:リモートストレージに関する設定
[등록된 원격 저장소 확인]
git remote 
git remote -v  // 저장소 이름과 url 확인 가능

[원격 저장소 연결]
git remote add <이름> <경로>
ex) git remote add origin https://github.com/~~

[원격 저장소 정보 표시]
git remote show <이름>
ex) git remote show origin

[원격 저장소 경로 제거]
git remote rm <이름>
참고
- git 공식 문서
- 팀장님의 완벽한(ㅎㅎ) 발표 자료