FC_Live) Git/Github 02


崔祐栄講師.
  • README.md
  • License
  • .gitignore
  • Branch
  • Gitflow戦略
    シナリオのリストア
    シミュレーションチームプロジェクト
  • クローン作成

    cd documents  
    cd dev 
    git clone https://github.com/oching-choi/branch-practice.git
    cd branch-practice
    ls -al
    

    README.md

    # Project Name
    Abstract your project in few lines.
    see [project sample page](project link)
    
    ## Documentation
    
    ### Installation
    To install,
    `$ pip install sesame`
    and run `$ python open_sesame.py`
    
    ### Supported Python versions
    `>=3.6`
    
    ### More Information
    - [API docs]()
    - [Official website]()
    
    ### Contributing
    Please see [CONTRIBUTING.md]()
    
    ### License
    Sesame is Free software, and may be redistributed under the terms of specified in the [LICENSE]() file.

    License

  • MIT License拘束、特許責任X
  • Apache License 2.0特許出願O
  • GNU General Public License v3.0最も一般的な義務(ライセンスのソースコードを使用する場合GPLを使用)
    )が存在します.
  • .gitignore


    Gitバージョン管理から除外するファイルのリストを指定するファイル.
    したがって、ファイル作成後もlsは確認できません.
    ls-aで確認できます.
    主に開発環境でモジュールの過剰追跡を防止するために使用されます.
    # 주석을 달기 위한 Hashtag
    
    # MacOS Setup
    .DS_Store
    
    # Python cache files
    .py[cdo]
    
    # Important files
    /Important
    
    # AWS key
    key.pem
    vi .itignore
    
    
    vi환경)
    # Custom
    
    Keyfile.pem
    crendentials/**
    secrets.*  //secret이 붙은 모든 확장자
    *.java  //.java확장자 모든 파일 
    vi환경 종료)
    
    $ cat .gitignore  //vi에서 쓴 내용 확인
    
    
    

    git statusで追跡するとき.gitignoreで定義されたファイルが追跡されていないことを確認できます.

    gitignore.io


    https://www.toptal.com/developers/gitignore/
    使用する開発環境を書き、無視するviコンテンツを生成します.
    .git ignore commit하기
    
    git add .gitignore
    $ git status
    $ git commit
    
    vim환경)
     제목 convertion : conf 

    branch


    ブレークポイントを作成し、コードを独立して変更するモデルです.
    git branch  //존재하는 branch 확인
    git branch print-hello   //print-hello 라는 branch 생성
    git branch   //main ,print-hello 두개 확인됨
    git checkout print-hello   //git 이동 
                               // 새버전에서 checkout대신 switch사용
    
    touch hello.py  
    vi hello.py
    
    vi환경)
    print('hello')
    vi환경에서 저장후 나오기)
    
    cat hello.py  //vi에 적은 내용확인
    
    git status   //추적상황 확인
    git add hello.py  //hello.py 추적 stage에 올리기
    git status  //추적상황 확인
    git commit  //commit하기
    
    vi commit 환경)
    제목 
    내용 적기
    vi commit 환경 저장후 나옴)
    ブランチによって作成されたファイルをコミットします.
    別のブランチを移動すると、ファイルは存在しません.
    git switch main  //main으로 전환
    ls  //hello.py가 없다
    git switch print-helo   //print-helo branch로 전환
    ls  //hello.py가 있음

    branch merge

    git switch main  //main으로 이동
    git branch   //branch확인
    git merge print-hello  //합병
    

    ブランチの削除


    使い切った支店はすぐに削除したほうがいい.
    $ git branch -D print-hello

    conflict


    各ブランチがそれぞれの作業が完了した後にマージされるとしたら?
    hello.py에서 if문
    
    vi hello.py
    
    vi 환경)
    magin_num = 3
    if magin_num =3
        print ('hello'):
    vi 환경 종료)  
    
    
    $ git status
    $ git add hello.py
    $ git status
    
    $ git commit
    
    $ git switch repeat-hello  //repeat-hello branch로 전환
    vi hello.py 
    
    vi 환경)
    for _ in range(1,10+1):
        print ('hello'):
    vi 환경 종료)  
    
    $ cat hello.py
    
    $ git status
    $ git add hello.py
    $ git status
    $ git commit
    
    vi commit환경)
    제목, 내용 적음
    vi 환경 - 저장하고 나옴)  
    
    $ git switch main
    git merge repeat-hello
    이때 conflict발생   // repeat-hello 브랜치환경에서 수정이 발생했기때문

    競合解決


    衝突したhellopyの内容を変更します.
    vi hello.py
    
    vi환경)
    for i in range(1,10+1):
        if i%3==0:
            print ('hello')
    git status

    まだ間に合いません
    マージするにはコミットが必要です
    git commit

    mergeが成功すると、mergeプロンプトが表示されます.

    羽章の立場から見ると.
    ローカルmainからリモートmainにプッシュします.
    リモートmainは中間分岐があったことを知らない.
    中間分岐の事実を残すなら
    別々に押します.
    $ git switch repeat-hello
    
    $ git push -u origin repeat-hello  
    //remote에 없는 branch를 푸쉬할 땐 -u을 붙여야한다. 
    
    すべてのブランチが記録のように押されるわけではありませんが.
    時々必要です.

    ブランチモデル


  • git flow
    (hotfix)- master -(release)- develop - feature
    master、developという2つのコアブランチ
    利点:最も多く適用され、各段階に明確な区別があります.
    cons:よくチェックアウトしなければなりません.複雑です.
    現在の使用頻度が高い

  • github flow
    コアブランチ
    主にディレクトリに直接パブリッシュするために使用されます
    master - feature
    利点:ブランチモデルを簡略化し、masterのすべてのコミットを展開
    cons:CIに高度に依存します.誰かがミスをしたら...(pull requestの使用を避ける)

  • gitlab flow
    production - pre-production - master - feature
    利点:deploy、完璧な問題解決策
    cons:gitストリームとは逆(メイン-開発、生産-メイン)
  • Gitflow strategy


    Feature branch(機能分岐)管理ポリシー.

    https://danielkummer.github.io/git-flow-cheatsheet/index.ko_KR.html
    git flow推奨ツールを簡単に処理
    MacOsは別途設定する必要があります.

    gitflow commend


  • gitストリームの起動
    git flow init

  • git flow featureブランチの作成
    git flow feature start branch_name

  • git flow featureブランチを閉じる
    git flow feature finish branch_name

  • Git flow releaseの起動
    git flow release start v0.1

  • Git flow release終了
    git flow release finish v0.1
    3つのcommitウィンドウ
  • Merge branch 'release/v0.1'-マージ/保存後終了
  • はtag:-タグタグは-タグ/内容
  • Merge tag 'v0.1'to develop/保存後コンパス
  • $ git flow init
    Which branch should be used for bringing forth production releases?
       - main
    Branch name for production releases: [main]
    계속 enter로 prefix설치
    
    $ git branch
    // develop main 두개 확인됨 
    
    $ git flow feature start print-world
    
    $ git branch 
    // develop feature/print-world main 이렇게 세개나옴
    //내 현재 위치도 feature/print-world 브랜치에 와있음
    
    vi hello.py  //hello.py내용수정
    vi환경)
    for i in range(1,10+1):
        if i%3==0:
            print ('{} hello'.format(i))
        elif i%5 ==0:
            print('{} world' .format(i)):
    vi환경끝)
    
    cat hello.py
    git status
    git add hellow.py
    git status
    git commit
    
    vi commit환경)
    feat : 으로 제목
    vi commit 환경끝)
    
    
    $ git flow feature finish print-world
    //finish하면 아래 내용 확인됨
    Switched to branch 'develop'
    Updating 9da7e50..3f414e7
    Fast-forward
     hello.py | 4 +++-
     1 file changed, 3 insertions(+), 1 deletion(-)
    Deleted branch feature/print-world (was 3f414e7).
    
    Summary of actions:
    - The feature branch 'feature/print-world' was merged into 'develop'
    - Feature branch 'feature/print-world' has been locally deleted
    - You are now on branch 'develop'
    //알아서 merge하고 deleted해준 것 까지 확인된다. 
    
    
    
    
    $ git flow release start v0.1
    //릴리즈하기
    Switched to a new branch 'release/v0.1'
    
    Summary of actions:
    - A new branch 'release/v0.1' was created, based on 'develop'
    - You are now on branch 'release/v0.1'
    
    Follow-up actions:
    - Bump the version number now!
    - Start committing last-minute fixes in preparing your release
    - When done, run:
    
         git flow release finish 'v0.1'
         
     git flow release finish v0.1
    //commit창이 두개가 열림
    1. Merge branch 'release/v0.1' - merge하는거 / 저장후 나감
    2. Write a message for tag:  - 깃헙에서 확인되는 라벨링태깅 / 한 내용 적기
    3.Merge tag 'v0.1' into develop / 저장 후 나감
    
    

    バージョンコメント)

  • 마이너체인지新機能:後の数字上昇
    ex) v0.1 -> v0.2
  • 메이저체인지このバージョンにはない新しい機能:前の数字が上昇
    ex) v1.0 -> v2.0
  • バージョンは0.1から
    小さな単位の修正で3桁の数が与えられます.

    ブランチ明示的プッシュ


    傘下の人にブランキーを認識させるためだ.
    単独でプッシュする必要があります
    $ git push -u origin develop  //branch 첫 push는 -u
    $ git push origin main
    $ git tag
    $ git --tags
    アルゴリズム学習おすすめサイト
    https://leetcode.com/
    https://www.hackerrank.com/
    https://www.acmicpc.net/
  • 名前変更(Rename)
    mv現在の名前の変更->deleteで副作用
    git mv現在の名前変更
  • 현재위치 develop branch
    
    mv README.md leadme.md
    

    削除されました
    $ git mv hello.py helloworld.md
    git commit   //이름만 바꾸는 경우라 add해주지않았음. 
    
    vi commit)
    fix : Rename hello.pu to hellowoeld.py  
    vi commit 끝)
    

  • コンテンツの変更をキャンセル(Undoing)
    git restore helloworld.md

  • 追加解除(Unstaging)
    $ git reset HEAD helloworld.md

  • commitコンテンツを返す
    まるで起こったことがないようだ.
    git commit --amend

  • コミット解除(Reset)
    git reset--ハードHEAD~n//現在の状態から前のn状態へのコミットをキャンセル
    commitを完全に削除した後、リモートに強制的にプッシュします.
    中間履歴が消え、コラボレーション時にcommit logを追跡するのは難しい.
    使用を避ける.

  • 戻りcommit(Revert)
    git revert --no-commit HEAD~N..

  • リストアの原因はcommitで詳細に説明する必要があります

    シミュレーションgitflowポリシーチーム

    팀장)
    repository개설
    git flow init //gitflow 시작
    git branch develop  //develop이라는 branch생성
    touch 각팀원파일 
    git status
    git add 파일명
    git status 
    git commit 
    git push -u origin develop
    
    
    팀원)
    issue확인 (할일, 버그리포트)
    issue작성 - 내가 뭘 할 지 미리 공유  
    ##간단내용 
    ##task list
    -do fizz
    -do buzz
    -do fizzbuzz
    원본 링크 fork(복사해서 내 repo로 가져오게 준비) 
    dev 경로에서 내게 할당된 fork clone
    git flow init  //gitflow 시작
    ls  //내가 작업할 파일 존재유무 확인
    git flow feature start 파일명  //start
    vi 파일명
    vi환경에서 작업)  //vi작업
    git status
    git add 파일명  //onstaging
    git status
    git commit  //commit
    git flow feature finish 파일명  //finish
    git push -u origin develop 
    git remote add upstream 원본주소  //pull
    git pull upstream develop