網頁

顯示具有 git 標籤的文章。 顯示所有文章
顯示具有 git 標籤的文章。 顯示所有文章

2014年8月30日 星期六

[git] 如何git push/clone 免打密碼 ?

如何git push/clone 免打密碼 ?


使用時機:

不想每次git push時都要打密碼

環境:

A (192.168.0.101) Ubuntu (開發機)
B (192.168.0.100) Synology DS + Synology Git Server

概念:

在A上把public key generate出來後放到B上,並且設定好ssh即可做到ssh免密碼登入。
因為git push/clone都是走ssh,所以就可以在push/clone時免打密碼。

SSH Key Generate: (on A)

ssh-keygen -t rsa (產生/root/.ssh/id_rsa 以及/root/.ssh/id_rsa.pub)
NOTE:注意當問"Enter passphrase (empty for no passphrase):"直接enter即可,否則還是會需要輸入一個passpharse

Copy public key to B: (on A)

scp /root/.ssh/id_rsa.pub 192.168.0.100:/root/.ssh/id_rsa.git.pub

Set default git user name: (on A)

vim /root/.gitconfig
----------------------------------------------
[user]
        name = root
                    ^^^^^ 必須和 B 上的git init --bare的目錄是同個owner

Concat content into authorized_keys: (on B)

cat /root/.ssh/id_rsa.git.pub >> /root/.ssh/authorized_keys

成功後就可以從A ssh到B、A git clone/push B的project而不用輸入密碼


[git] 如何使用Synology的git package建立自己的 git server ?

如何使用Synology的git package建立自己的 git server ?

使用時機:

不想用GitHub,想建立自己的git server時,開發環境就只有你自己一個人(root)會push code

環境:

A (192.168.0.101) Ubuntu (開發機)
B (192.168.0.100) Synology DS

開始: (on B)

去package center下載Git Server

配置: (on B)

Package方面完全不用配置,啟動Git Server即可
但要console進入DS然後在/volume1下建一個目錄,譬如: /volume1/git_exmaples

建立Project: (on B)

cd /volume1
mkdir project1
cd project1
git init --bare

抓Code: (on A)

git clone ssh://192.168.0.100:/volume1/git_examples/project1


接下來...就能在這個clone下來的project做任何git能做的事情 : )

2014年7月2日 星期三

2014年6月20日 星期五

git

以下介紹我常用的git指令:

# 抓server上的某個git project
git clone ssh://[username]@[server dns name]/[directory]/projectname.git

# 建立local branch
(branchname可以從 git la上拿到)
git co -b [branchname] origin/[branchname]

# 砍掉branch
git branch -d [branchname]

# 看目前local有哪些branch
git br

# 切換到某個branch
git co [branchname]

# 抓其他branch的commit到這個branch (傳說中的 cherry-pick)
git la //確定是哪一個commit拿到hashcode
git cherry-pick [hash code]

# 抓最新版的code
git pull
or
git pull --rebase

# 和local有conflict的處理方法
git stash
git pull --reabse
git stash pop

#加入某一個file
git add [filename]

#移除某一個 file
git reset [filename]

# 加入這一個目錄以下的所有files以及子目錄
git add .

# 加入這一個目錄以下的所有被修改的files以及子目錄下被修改的files(曾經被commit in的那些files)
git add -u .

# reset all(回到剛抓下來的狀態, 你的修改code會通通消失, 請小心使用)
git reset --hard

# 回到某一個版本
git reset --hard [hashcode]

# 拿到hash code
git la
or
git log

# commit in到local git database
git ci

# 做patch
(如果尚未add)
git df > patchfilename
(如果add了)
git df --cached > patchfilename
(如果commit了)
git show [hashcodename] > patchfilename

# apply patch
patch -p1 < patchfilename

# code review 比較兩個版本
(如果add了)
git difftool --cached -U10

# 修改尚未push commit in的註解
git ci --amend

# revert 之前 commit in的
git revert [hashcode]

# 上傳到git server
git push


結論:
我常用的大概就是這樣吧,理論上應該就足夠了吧 ?