2015年1月26日 星期一

git教學(github、gitlab)


平常用gitlab比較習慣,因為project可以設定private(免費),不過github還是比較多人使用,所以剛好就來學學github怎麼用。

在安裝之前要確定已經安裝Command Line Tools和簽署Xcode的license(Xcode 6.1以下還要安裝Command Line Tools),詳細在這
安裝Xcode後安裝Command Line Tools
安裝Xcode後簽署license



只要安裝好Command Line Tools就有git指令可以用了

github


首先先到github官網申請一個帳號,Username和Email很重要別亂打,如果要github和gitlab共存的話,Username不要使用特殊符號包含空白鍵

建立後登入,左上方先建立一個「repository」(Project),這個名字就是專案名稱,別人也會靠這個名字搜尋

Repository name: 專案名稱
Description: 專案的描述(optional)
Public: 公開專案,Private: 私有專案(要錢)
Initialize this repository with a README: 自動產生README文件(也可以之後手動)
還蠻方便的是也可以自動產生ignore檔案和license

建立好之後就長這樣~

接下來就是指令的事了,先設定好git的config,以下指令做一次就OK了
git config --global user.name "你的Username"
git config --global user.email "你的Email"

所以我要用的指令為
git config --global user.name "QbsuranAlang"
git config --global user.email "jr89197@hotmail.com"

接著就可以產生sshkey,首先先切換目錄到~/.ssh
cd ~/.ssh

首先先檢查有沒有這些檔案,如果有的話備份起來或是看要移除還是怎樣
id_dsa.pub
id_ecdsa.pub
id_ed25519.pub
id_rsa.pub

接著要讓在本地端的電腦能夠透過git上傳專案(當然其他文件也可以),要產生sshkey,以下指令產生sshkey
ssh-keygen -t rsa -C "你的Email"

ssh-keygen -t rsa -C "jr89197@hotmail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/QbsuranAlang/.ssh/id_rsa): (直接return)
Enter passphrase (empty for no passphrase): (直接return)
Enter same passphrase again: (直接return)

這樣在~/.ssh就會產生id_rsa和id_rsa.pub,id_rsa.pub就是公開的sshkey,用以下指令複製到剪貼簿
cat ~/.ssh/id_rsa.pub | pbcopy

接著到github網站上,切換到「Settings」頁面->左邊「SSH Keys」->右邊「Add SSH key」

將剪貼簿內的內容複製上去到Key,Title取個能夠識別的字就好了

這樣就新增好ssh key了,要測試ssh key能不能正常使用,以下指令
ssh -T git@github.com

如果第一次使用的話應該會出現,打yes就好了
The authenticity of host 'github.com (192.30.252.130)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx8.
Are you sure you want to continue connecting (yes/no)? yes (打yes)
Warning: Permanently added 'github.com,192.30.252.130' (RSA) to the list of known hosts.

出現這個表示成功
Hi QbsuranAlang! You've successfully authenticated, but GitHub does not provide shell access.

接著,要把剛剛新增好的Repository移動到本地端,直接複製
git clone git@github.com:你的Username/Repository名字.git
git clone git@github.com:QbsuranAlang/Test.git
或是
git clone 網址
git clone https://github.com/QbsuranAlang/Test

接著基本操作呢

新增檔案
git add filename
git add .

寫commit
git commit -m 'your commit'

在push前如果需要修改commit
git commit --amend

push上去
git push -u origin master

刪除檔案
git rm filename (這樣做只是移除掉在git組態檔中上傳的檔案並未真正刪除檔案)
rm filename (真正刪除檔案)


這邊要注意的是,如果在呼叫git rm之前就先刪除掉檔案的話,使用git add會發生問題以下問題
warning: You ran 'git add' with neither '-A (--all)' or '--ignore-removal',
whose behaviour will change in Git 2.0 with respect to paths you removed.
Paths like 'a.php' that are
removed from your working tree are ignored with this version of Git.

* 'git add --ignore-removal ', which is the current default,
  ignores paths you removed from your working tree.

* 'git add --all ' will let you also record the removals.

Run 'git status' to check the paths you removed from your working tree.

所以他就說了以下指令解決
git add --all .

如果要忽略掉不要上傳的檔案就寫.gitignore檔案,建立.gitignore檔案
vim .gitignore

例如在Mac OSX中最討人厭的檔案「.DS_Store」,就直接寫.DS_Store上去,接著如果需要忽略.o的檔案就寫*.o,所以這個時候.gitignore檔案應該長這樣
.DS_Store
*.o

每次要做更新之前固定步驟:add->commit->push

例如這次新增ignore檔案後應該要這樣做
test [master●●] % git add . (直接新增當下目錄最快)
test [master●] % git commit -m 'add ignore'
[master cce39ca] add ignore
 2 files changed, 2 insertions(+)
 create mode 100644 .gitignore
 delete mode 100644 a.php
test [master] % git push -u origin master
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 323 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:QbsuranAlang/Test.git
   dc8fcce..cce39ca  master -> master
Branch master set up to track remote branch master from origin.



gitlab


gitlab用法跟github差不多,只是他的private專案免費

一樣申請帳號,如果要跟github共存的話,Username和Email請跟github相同(申請後可以再修改Username)

申請好後一樣需要設定好git的config和將ssh key放入,設定git一樣指令(之前做過就不需要了)
git config --global user.name "你的Username"
git config --global user.email "你的Email"

產生ssh key就看上面吧,放ssh key的地方在右上角「Profile Settings」->左邊「SSH Keys」->右邊「Add SSH Key」


一樣要測試能不能正常使用,以下指令注意是gitlab不是github
ssh -T git@gitlab.com

OK後就來建立專案了,右上角「New project」


就依需求建立吧

建立專案後會出現這個,只要做中間的「Create a new repository」

mkdir Test
cd Test
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin git@gitlab.com:Qbsuran_Alang/Test.git
git push -u origin master


指令做完後reload網頁就OK囉



參考
Git 教學(1) : Git 的基本使用: 'http://gogojimmy.net/2012/01/17/how-to-use-git-1-git-basic/'
Git 教學研究站: 'http://dylandy.github.io/Easy-Git-Tutorial/index.html'


1 則留言:

  1. 請問如果同一個專案,想要push 到gitlab 和github ,是不是local 的目錄要做區分,還是同一個目錄就可以呢?
    謝謝!

    回覆刪除