網頁

2018年10月5日 星期五

git 學習紀錄

Git 只能管理單純文字檔,不能處理MS Word, pdf, 圖片或執行檔等非文字檔

安裝
# 如果你的 Linux 是 Ubuntu:
$ sudo apt-get install git-all
# 如果你的 Linux 是 Fedora:
$ sudo yum install git-all

Untracked: 在工作目錄內,尚未被追蹤或不需追蹤的檔案
Unmodified: 在工作目錄內,尚未被修改的檔案
Modified: 在工作目錄內,已經被修改的檔案
Staged: 在工作目錄內,被 add 到版本庫,尚未被 commit

設定使用者和email
$ git config --global user.name "UserName"
$ git config --global user.email "username@email.com"

在工作目錄上建立版本庫,會產生 ".git" 目錄
$ git init

查詢版本庫狀態
$ git status

將檔案放入版本庫的 stage 內
$ git add file.py
將資料夾中所有未被添加的檔案,放入版本庫的 stage 內
$ git add .

確認提交
$ git commit -m "修改說明"
確認提交(可省掉 git add)
$ git commit -am "修改說明"

查詢紀錄
$ git log
查詢紀錄,每個 commit 一行
$ git log --oneline
查詢紀錄,每個 commit 一行,並顯示 branch
$ git log --oneline --graph

查詢這次還沒add(unstaged)的修改部分 和 上個已經commit或已經add(staged)的文件差異
$ git diff
查詢已經add(staged)的修改部分 和 上個已經commit的文件差異
$ git diff --cached
查詢這次還沒add(unstaged)的修改部分 和 上個已經commit的文件差異
$ git diff HEAD

checkout 某一(id)版本,到工作目錄(HEAD 指到 id)
$ git checkout id
checkout 最新版本,到工作目錄(HEAD 指到最新 id)
$ git checkout master
checkout 某一(id)版本的 file.py
$ git checkout id -- file.py

查看所有 HEAD 改動
$ git reflog

直接修改上個 commit,不說明
$ git commit --amend --no-edit

reset 回到上一次的 commit
$ git reset --hard HEAD
reset 回到上上一次的 commit
$ git reset --hard HEAD^
reset 回到某一次 commit
$ git reset --hard id
reset 可搭配三種參數 soft, mixed(default), 以及 hard
soft 只回復 Repository
mixed 回復 staged 和 Repository
hard 回復 staged 和 Repository 和工作目錄(通常使用這個)

查詢分支
$ git branch
查詢本地和遠端的分支
$ git branch -a
查詢遠端的分支
$ git branch -r
建立分支 test
$ git branch test
checkout 分支 test
$ git checkout test
建立分支 test 並且切換(checkout)到 test
$ git checkout -b test

合併分支
先切回 master
$ git checkout master
將 test 合併至 master
$ git merge --no-ff -m "合併說明" test

合併有衝突時,先修改檔案,再 commit, 衝突就解決了
$ git commit -am "解決說明"

暫存修改
$ git stash
查詢暫存
$ git stash list
回復暫存
$ git stash pop

新增遠端節點 origin
$ git remote add origin https://github.com/UserName/git-name.git
推送本地的 master 分支到 origin
$ git push -u origin master
推送本地的 test 分支到 origin
$ git push -u origin test
本地端修改
$ git commit -am "修改說明"
推送修改到 origin
$ git push -u origin master
取回最新的遠端資料到本地
$ git pull origin master

沒有留言:

張貼留言