Git (問答篇)

編輯 : Frank
日期 : 2020/03/09
參考網址


從問答中學習如何操作 Git ,多種情境皆可解決你多種困境,如仍無法解決,請點開連結-> 為你自己學 Git

  1. (本機操作)如何建立分支、切換分支、合併分支?

建立分支

1
git branch [branch_name]

切換分支

1
2
git switch [branch_name]
git chackout [branch_name]

合併分支

1
2
git merge [branch_name]
git rebase [branch_name]
  1. (本機操作)如果不小心把某個檔案或目錄刪除了,該怎麼救回來?

    1
    git restore [file_name]
  2. (本機操作)如果不小心把某個分支刪除了,該怎麼救回來?

需要取得commit紀錄,在刪除當下會輸出最後commit紀錄,可通過此紀錄來重新復原branch,或者通過git reflog來觀看歷史紀錄,然後來復原此紀錄來復原branch。

1
git branch [branch_name] [commit_message]
  1. (本機操作)如何回到某一次 Commit 的檔案狀態?

    1
    git checkout [commit_message]
  2. (本機操作)想要知道某個檔案的某一行程式碼是誰寫的,可以怎麼做?

    1
    git blame [file]
  3. (本機操作)專案中可能有些比較機密的檔案(例如資料庫設定檔),在使用 Git 時,你通常會怎麼處理這類型的檔案?

透過 .gitignore 來讓 git 不會 add 與 commit 檔案,如果先前已傳送過的,需 git rm –cached 來移除檔案。

1
2
3
vim .gitignore
[ignore_file_name]
....
  1. (本機操作)請簡述 “git merge” 與 “git rebase” 這兩種不同的分支合併方式。

merge 會製造一個連接點來聯繫兩個 branch ,而 rebase 會直接把兩個 branch 直接連在一起,沒有連接點。

  1. (本機操作)如果你正在某個分支進行開發,突然被長官交待處理別的問題,這時候你會怎麼處理手邊的工作?

把當下的工作先進行 commit ,然後處理完成長官的問題後,在切回剛剛處理的 commit ,並透過 git reset HEAD^ 來繼續進行。

  1. (本機操作)請問 “git checkout features/cat” 這個指令可能是什麼意思?

git checkout [branch_name] : 切換branch
git checkout [file_name] : 還原檔案到上一個 commit 或 追蹤前。

  1. (本機操作)如果不小心用 “git reset –hard” 指令把檔案刪除了,要怎麼救回來?

透過 reflog 來觀測 reset 前的紀錄,並透過 checkout 來還原檔案至指定的 commit 狀態

1
2
git reflog
git checkout [commit_message] [file_name]
  1. (遠端操作)如何把本機的進度推一份到 GitHub 上?

可透過 git 指令來 push 至 GitHub 上,或者透過 GitHub 網頁直接編輯與 commit & push 資料。

1
2
3
4
git status
git add .
git commit -m "commit_description"
git push
  1. (遠端操作)請說明 “git clone”、”git fetch” 跟 “git pull” 這三個指令的差異。
  • clone: 將整個檔案複製一份到你的電腦裡,並且在你的電腦裡建立相對應的標案及目錄。通常在最一開始使用。
  • fetch: 將本機端沒有,但專案有的資料把他拉下來,並且形成一個分支,達到只下載不合併的功能。
  • pull: 與 fetch 相似,將資料拉下來,但他會自動進行 merge ,因此也可以說 pull 就包含了 fetch + merge 的功能。
  1. (遠端操作)你曾經使用過 “git push -f “ 指令嗎?在什麼情境下用的?

沒有使用過。

此方法大多用與 rebase 配合使用。隨著專案的進程,commit 資訊會越來越多越來越亂,因此你會使用 rebase 來整理與修改資訊,但 rebase 會修改掉已發生的事實,因此就需要 git push -f 來進行。此方法僅推薦在於自己獨立分支上,這樣才能避免造成隊員的困擾,並且在使用前請再三確認再執行。

  1. (遠端操作)承上,如果你發現某位同事使用了 “git push -f” 把線上的東西蓋掉了,該怎麼辦?

將自己或其他同事的再次進行 git push -f 來遮蓋那位同事將線上東西蓋掉的事實即可。

  1. (遠端操作)在團隊一起工作的時候,如果你上傳了一個 commit,你發現這個 commit 有問題想取消它,你會怎麼做?
1
git revert [commit_message]