0%

Git / GitHub 實際操作

在本地使用 git 版本控制

init 初始化

  • 在要使用版本控制的檔案夾裡輸入 init 初始化,以 ls -la 可看到隱藏的 .git 檔案夾
  • 使用 git status 觀察版本狀態

git add 加入版本控制檔案

  • 使用 git add [fileName] 加入要版本控制的檔案,或是使用 git add . 表示全部加入
  • 使用 git status 會發現有兩區域: staged (加入)/ untracked (沒加入)版本控制,可使用 git rm —cached [fileName] 將已加入的檔案移出至 untracked。
  • 要 add 才能 commit

git commit 新建一個版本

  • 使用 git commit 新建一個版本,或出 vim 文字編輯器 ( i insert / :q 退出),會出現 commit 是空的(empty)訊息。
  • 以 git commit -m “[訊息]”
    git commit 如出現錯誤,跳出設定帳號跟姓名的畫面,請輸入以下指令
  1. git config –global user.name “your name”
  2. git config –global user.email “youremail”

git log 歷史紀錄

  • 使用 git log 會出現所有 commit 的歷史紀錄編號,q 離開 log

git checkout 回到過去某個版本狀態

  • 使用 git log —online 會出現 commit 短版本列表,前 7 碼為版本簡碼,後面是 commit 時輸入的訊息。
  • 使用 git checkout [版本碼] 即可回到要去的版本時間點,用 git log 觀察這個版本時間點之後的版本都會看不見。
  • 使用 git checkout master 回去現在的時間點版本,再用 git log 觀察就可看到所有版本。

.gitignore 忽略檔案

在檔案夾裡增加一個 .gitignore 檔案,裡面寫上不要加入版本控制裡的檔案,這樣 git 就不會每次提醒,例如連線資料、test、log 等系統自動產生的檔案。

  • touch .gitignore 產生檔案
  • vim .gitignore 編輯檔案
  • Git commit -am “commit message” 可直接 add+commit 但只會加入曾經加入的,而不會加入新的檔案。所以每次有新檔案時最好使用 git add [fileName] 加入,或用 git add . 全部加入再 commit。

小筆記

git checkout -b [分支名] 可直接開分支並切換過去
git -d [分支名] 把分支刪除
git diff 可看上一次做的變動,q 退出

在本地端開分支 branch –> 合併主版本 merge

設分支 branch

  • 用 git branch -v 看有哪些 branch 主分支為 master,也會顯示這支分支最後一個 commit
  • 原本在 master,創另一個分支 :git branch [分支名]
  • 切換到那個分支:git checkout [分支名]
  • 刪除分支:git branch -d [分支名]
  • 切換分支 :git checkout [分支名]
  • 用 git branch -v 查看現在在哪個分支(顯示綠色)

merge branch to master 將分支合併到主支幹

  • git [分支] merge : 把某一分支合併過來 master
  • git branch -d [分支] : 合併後即可把原本的分支刪除

合併時發生衝突 conflict

  • 主支和分支同時修改時,分支要合併至主支時,會產生 auto-merging [fileName]CONFLICT (content) : Merge conflict in [fileName]automatic merge failed; fix conflicts and then commit the result.
  • 用 git status 查看會以 both modified : [fileName] 顯示有問題的檔案
  • 進入有問題的 [fileName] 手動修改,=====為兩版本分隔,<<<<< [分支名]。將其中一個刪除與更正存檔,再 commit 一次,再合併。
  • git status 顯示 resolve conflicts 表示衝突解決。

注意 + 小觀念

Git : 版本控制的程式
GitHub : 放 git repository 的存儲庫
有用 git 不一定要用 GitHub,但用 GitHub 就一定要會用到 git
忘記切回 test 分支,所以後來無法順利 merge 到 master 分支,雖然後來看似解決,但還真不知道自己是怎麼解決的,就是試了幾個間,跟著打就好了...這樣其實有點可怕,下次再注意!

把本地端 code 放上 GitHub

Create a new repository 在 github 開一個新的存儲庫

  • 填入 Repository name 和 Description,就好有使用技術關鍵字
  • 選擇 Public 或 Private
  • Initialize this repository whit a README 可以先不選
  • Add .gitignore 和 a license 都選預設 None

方法ㄧ) 在本地端還沒有 code 可使用這種方法

…or create a new repository on the command line
echo “# github.io-“ >> README.md
git init
git add README.md
git commit -m “first commit”
git remote add origin [https://github.com/tsuifei/倉庫位址.git]
git push -u origin master

方法二) 在本地端已經有 code 用這種把 code push 到 github 的方法。

…or push an existing repository from the command line
從本地 push 到遠端
git remote add origin [https://github.com/tsuifei/倉庫位址.git]
git push -u origin master 把 code push 到 github 的這個 master 主支上 通常這之後會要你的 github 的帳號和密碼,有輸入才算與遠端相通 單字 : remote 遠端 / origin 代號
-u -> set-upstream

方法三) 以引入的方式將 code 放進來

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

把本地端最新的版本推上 GitHub

git push

  • 本地端 : 把檔案 commit 之後, 使用 git push origin master 推到主支上
  • Github 端 : 重新整理頁面後 branch 會更新,commits 數量也會增加
  • 如果只有 commit 沒 push,Github 端不會變動
  • 可開分支 再 git push origin [分支名] ,再到 Github 端看就有兩個 branch

把 Github 端上最新版本 拉下本地端

git pull

  • 先到要拉下來的位置
  • 執行 git pull origin master
  • 如有 conflict 可依上述 merge 的衝突解決方式處理。

把其他人 Github 端上的 code 拉下本地端

git clone (42 就是用這種方法)

  • 先到要拉下來的位置
  • 執行 git colne [https://github.com/tsuifei/倉庫位址.git] 可自行取名
  • git clone 之後可以 commit 因為在本地端,且專案是別人的,所以如果執行 push 會因無權限而無法執行

將別人的專案變成自己的

  • 使用 Fork 功能,再使用 clone 方式將專案拉下至本地端

其他

直接在 Github 端 commit 修改檔案

  • 選要修改的檔案,按 icon 筆(Edit this file)
  • 直接在檔案下方下 commit 選擇要 commit 的支,通常選(commit directly to the master branch)

Git 問題處理集合

Git 提示 fatal: remote origin already exists 錯誤解決辦法

使用 git 上傳至遠程 github 倉庫的時候出現提示錯誤:fatal: remote origin already exists.
1、先刪除遠端 Git 倉庫
$ git remote rm origin

2、再增加遠端 Git 倉庫
$ git remote add origin [git@github.com:遠端位址]

如果執行 git remote rm origin 有出現錯誤訊息的話,可以手動修改 gitconfig 文件的內容
$ vi .git / config
把[remote “origin”] 那一行刪掉就可以了。