enter3017sky / mentor-program-2nd-blog

MTR02 學習紀錄
1 stars 2 forks source link

[筆記]Git #7

Open enter3017sky opened 6 years ago

enter3017sky commented 6 years ago

在 Git 裡,主要可以分成「工作目錄(Working Directory)」、「暫存區(Staging Area)」以及「儲存庫(Repository)」三個區塊,透過不同的 Git 指令,可以把檔案移往不同的區域: image git add 指令把檔案從工作目錄移至暫存區(或索引)。 git commit 指令把暫存區的內容移至儲存庫。

git branch <branch_name> git checkout <branch_name> git checkout -b <branch_name> git push origin <branch_name>


commit 了,但是想改 commit message

git commit --amend

我 commit 了可是我又不想 commit 了

git reset 指令可以搭配參數使用,常見到的三種參數。 分別是 --mixed--soft 以及 --hard

  • git reset HEAD^
  • --mixed 是預設的參數,如果沒有特別加參數,git reset 指令將會使用 --mixed 模式。這個模式會把暫存區的檔案丟掉,但不會動到工作目錄的檔案,也就是說 Commit 拆出來的檔案會留在工作目錄,但不會留在暫存區。
  • git reset HEAD^ --soft
  • 回到前一個 commit 的狀態,工作目錄以及暫存區的檔案都 不變 (常用)。
  • git reset HEAD^ --hard
  • 回到前一個 commit 的狀態,工作目錄以及暫存區的檔案都 丟掉

更多參考資料:【狀況題】啊!不小心把檔案或目錄刪掉了…

我還沒 commit,但我改的東西我不想要了或不小心把檔案或目錄刪掉了

假如使用rm誤刪檔案,或者檔案的修改不是你想要的

  • 使用git status 查看狀態,會顯示 modifieddeleted的檔案,也會提示你應該可以怎麼做。
  • git checkout -- <file>
  • 回到前一個 commit 的狀態,檔案會回復原狀。 image

我想改 branch 的名字

enter3017sky commented 6 years ago

跟老師遠端的 repositories 同步

  1. git branch sync-master (要改東西就要開一條新的 branch)
  2. git checkout sync-master
  3. git pull https://github.com/Lidemy/mentor-program-2nd
  4. git push origin sync-master (push 上 Github,更新遠端)
  5. 發 Pull Request(就跟交作業一樣)
  6. 等老師 merge
  7. 老師 merge 完之後:git checkout master
  8. git pull origin master(更新本機)
  9. git branch -d sync-master(把已經合併的 branch 刪掉)
enter3017sky commented 5 years ago

更新從 GitHub 上 fork 出來的 repository

  1. 開始操作前,查看現有遠端版本控制的倉庫 : git remote -v

    加上參數 -v 顯示 url 預設的情況只會有 origin 這個 remote

    origin  https://github.com/Lidemy/mentor-program-2nd-enter3017sky.git (fetch)
    origin  https://github.com/Lidemy/mentor-program-2nd-enter3017sky.git (push)
  2. 新增 remote : git remote add [new_remote_name] [new_remote_URL]

  3. 在檢查一次 git remote -v

    origin  https://github.com/Lidemy/mentor-program-2nd-enter3017sky.git (fetch)
    origin  https://github.com/Lidemy/mentor-program-2nd-enter3017sky.git (push)
    upstream    https://github.com/enter3017sky/mentor-program-2nd-enter3017sky (fetch)
    upstream    https://github.com/enter3017sky/mentor-program-2nd-enter3017sky (push)
  4. 我的情況是要更新 fork 的專案,輸入 git push upstream

  5. done


參考資料:更新從 GitHub 上 fork 出來的 repository (或是同步兩個不同 server 端的 repository) 更多操作:.5 Git 基礎 - 與遠端協同工作

enter3017sky commented 5 years ago

Create a new repository

建立一個新的專案之後,Github 提供了三種常見處理專案的方式。

  1. 在電腦上使用終端機建立一個新的專案。

mkdir new_repository: 建立一個同名的資料夾

cd new_repository: 切換到專案資料夾裡面

然後繼續以下官方六個步驟(指令)

…or create a new repository on the command line

echo "# vue-note" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/enter3017sky/vue-note.git
git push -u origin master

  1. 或者你電腦本來就有了,只是現在想上傳到 Github,而你本來沒有使用 Git。

cd your_repository: 移動到專案資料夾裡面

git init: 初始化 Git,讓這個資料夾開始使用版本控制

git add <file_name>: 將未追蹤的檔案(Untracked files)加入追蹤區,但是檔案一個一個加太慢了。 git add .: 將此目錄下所有檔案加入追蹤區。 (如果需要忽略的檔案,輸入 vim .gitignore,添加名稱進去,如果不熟 vim,請用編輯器開)

git commit: 就可以提交了!但這樣會跳出修改提交訊息的編輯器。

參考資料: 把檔案交給 Git 控管 - 為你自己學 Git | 高見龍

到這邊總結一下,通常我的流程是這樣:

cd your_repository - 移動到專案資料夾裡面 git init - 初始化 Git,讓這個資料夾開始使用版本控制 git add . - 將此目錄下所有檔案加入追蹤區。 git commit -am '這邊輸入提交訊息(fix, done, etc)'

然後繼續以下官方兩個步驟(指令)

…or push an existing repository from the command line

git remote add origin https://github.com/enter3017sky/vue-note.git
git push -u origin master

補充:

第一次 push 要設定上游分支,所以要輸入git push --set-upstream origin master,跟上面的指令是一樣的,輸入git help push 查看指令說明,裡面就有指出[-u | --set-upstream]

沒有設定上游分支就 git push,跳出的提示訊息就是一樣的指令。

fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin master

檔案上傳,沒有使用過,Pass

…or import code from another repository

You can initialize this repository with code from a Subversion, Mercurial, or TFS project.