git && gitlab 使用

 安裝略過html

使用

基於公鑰的認證登陸,方便對用戶進行權限控制linux

useradd -s /usr/bin/git-shell testgit  #建立一個用戶  或者直接useradd testgit   而後去/etc/passwd 修改testgit用戶的bash 爲/usr/bin/git-shell
passwd testgit                            #更改密碼
cd /home/testgit/ #進入家目錄,
git init --bare testgit.git             #初始化一個倉庫 chown -R testgit:testgit /home/testgit        #更改目錄權限 mkdir .ssh && cd .ssh/ && touch authorized_keys

將用戶的公鑰寫進去就ok了,訪問路徑爲 ssh://testgit@ip:/home/testgit/testgit.git

 

git clone備份後爲 .git的目錄文件,此文爲將此類文件恢復至 gitlabgit

1#從原地址克隆一份裸版本庫,好比本來託管於 GitHub。
git clone –bare git://github.com/username/project.git

#而後到新的 Git 服務器上建立一個新項目,好比 GitCafe。
#以鏡像推送的方式上傳代碼到 GitCafe 服務器上。
cd project.git
git push --mirror git@gitcafe.com/username/newproject.git
#刪除本地代碼
cd ..
rm -rf project.git

 

實例(此方法會保留原有源碼庫的全部分支)github

 

 

 到新服務器 GitCafe 上找到 Clone 地址,直接 Clone 到本地就能夠了。shell

git clone git@gitcafe.com/username/newproject.git

這種方式能夠保留原版本庫中的全部內容。
提交前要刪除本地remotes中的分支引用,這樣就不會將remotes裏面的遠程分支也推到服務器上去: 

另外還能夠直接修改當前倉庫的遠程地址,而後push一下就能將歷史都提交上去: git remote set-url origin remote_git_address

 

初次創建項目,代碼上傳與下載windows

http方式:
Git global setup            ###(gitlab客戶端上執行(linux/windows(gitbash)))
git config --global user.name "gaoxinjie"
git config --global user.email "gaoxinjie@lavion.com.cn"


Create a new repository            ###建立一個新倉庫    
git clone http://gaoxinjie@iZ2zei7b23po43up3908hrZ/my_object/work.git
cd work
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master


Existing folder            ###在一個存在的文件夾下上傳代碼
cd existing_folder
git init
git remote add origin http://gaoxinjie@iZ2zei7b23po43up3908hrZ/my_object/work.git
git add .
git commit
git push -u origin master


Existing Git repository            ###在一個存在的git倉庫下上傳代碼
cd existing_repo
git remote add origin http://gaoxinjie@iZ2zei7b23po43up3908hrZ/my_object/work.git
git push -u origin --all
git push -u origin --tags

ssh方式:

Command line instructions
Git global setup

git config --global user.name "gaoxinjie"
git config --global user.email "gaoxinjie@lavion.com.cn"


Create a new repository
git clone git@iZ2zei7b23po43up3908hrZ:my_object/work.git
cd work
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master


Existing folder
cd existing_folder
git init
git remote add origin git@iZ2zei7b23po43up3908hrZ:my_object/work.git
git add .
git commit
git push -u origin master


Existing Git repository
cd existing_repo
git remote add origin git@iZ2zei7b23po43up3908hrZ:my_object/work.git
git push -u origin --all
git push -u origin --tags

 

gitlab

添加sshkeybash

ssh-keygen -t rsa
將id_rsa.pub 上傳到sshkyes 便可

 

使用服務器

建立分支: $ git branch mybranch
切換分支: $ git checkout mybranch
建立並切換分支: $ git checkout -b mybranch
列出全部分支: $ git branch

更新master主線上的東西到該分支上:$git rebase master

切換到master分支:$git checkout master
更新mybranch分支上的東西到master上:$git rebase mybranch

 

修改並提交app

文件作了修改之後要先 git add 文件名 
而後 提交: git commit -a -m "add **.txt"
而後 push到遠程服務器:  git push origin develop(分支名)


對最近一次commit的進行修改:git commit -a –amend

commit以後,若是想撤銷最近一次提交(即退回到上一次版本)並本地保留代碼:git reset HEAD^

 

合併分支ssh

下面兩條命令的意思是切換到master分支,並將mybranch的分支的內容合併到master分支

$ git checkout master
$ git merge mybranch (merge from mybranch) 

例: develop分支添加了內容,而且合併到master分支

 

 

刪除分支: $ git branch -d mybranch
強制刪除分支: $ git branch -D mybranch
列出全部分支: $ git branch
查看各個分支最後一次提交: $ git branch -v


查看哪些分支合併入當前分支: $ git branch –merged
查看哪些分支未合併入當前分支: $ git branch –no-merged

更新遠程庫到本地: $ git fetch origin
推送分支: $ git push origin mybranch
取遠程分支合併到本地: $ git merge origin/mybranch
git log -p master..origin/master    ####比較本地的master分支和origin/master分支的差異
取遠程分支並分化一個新分支: $ git checkout -b mybranch origin/mybranch
刪除遠程分支:$ git push origin :mybranch

 

git pull && git fetch

git pull

命令的做用是,取回遠程主機某個分支的更新,再與本地的指定分支合併。它的完整格式稍稍有點複雜。 $ git pull
<遠程主機名> <遠程分支名>:<本地分支名> 好比,取回origin主機的next分支,與本地的master分支合併,須要寫成下面這樣。 $ git pull origin next:master $ git pull origin next 上面命令表示,取回origin/next分支,再與當前分支合併。實質上,這等同於先作git fetch,再作git merge。 $ git fetch origin $ git merge origin/next git fetch

一旦遠程主機的版本庫有了更新(Git術語叫作commit),須要將這些更新取回本地,這時就要用到git fetch命令。 $ git fetch
<遠程主機名> 上面命令將某個遠程主機的更新,所有取回本地。 默認狀況下,git fetch取回全部分支(branch)的更新。若是隻想取回特定分支的更新,能夠指定分支名。 $ git fetch <遠程主機名> <分支名> 好比,取回origin主機的master分支。 $ git fetch origin master 所取回的更新,在本地主機上要用」遠程主機名/分支名」的形式讀取。好比origin主機的master,就要用origin/master讀取。 git branch命令的-r選項,能夠用來查看遠程分支,-a選項查看全部分支。 $ git branch -r

 

 git rebase

rebase(參考連接: http://www.cnblogs.com/kym/archive/2010/08/12/1797937.html)
$ git checkout mybranch
$ git rebase master (rebase from master)


舉例: 
$ git checkout server
$ git rebase –onto master server client
$ git checkout master
$ git merge client (fostforward)
$ git rebase master server (checkout sever)
$ git merge server
$ git branch -d client
$ git branch -d server

 

回滾

 

備份

使用Gitlab一鍵安裝包安裝Gitlab很是簡單, 一樣的備份恢復與遷移也很是簡單. 使用一條命令便可建立完整的Gitlab備份:

gitlab-rake gitlab:backup:create
使用以上命令會在/var/opt/gitlab/backups目錄下建立一個名稱相似爲1393513186_gitlab_backup.tar的壓縮包, 這個壓縮包就是Gitlab整個的完整部分, 其中開頭的1393513186是備份建立的日期.

Gitlab 修改備份文件默認目錄

你也能夠經過修改/etc/gitlab/gitlab.rb來修改默認存放備份文件的目錄:

gitlab_rails['backup_path'] = '/mnt/backups'
/mnt/backups修改成你想存放備份的目錄便可, 修改完成以後使用gitlab-ctl reconfigure命令重載配置文件便可.


一樣, Gitlab的從備份恢復也很是簡單:

將備份文件拷貝到新服務器 /var/opt/gitlab/backups目錄下

# 中止相關數據鏈接服務
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

# 從1393513186編號備份中恢復
gitlab-rake gitlab:backup:restore BACKUP=1393513186

# 啓動Gitlab
sudo gitlab-ctl start

Gitlab遷移

遷移如同備份與恢復的步驟同樣, 只須要將老服務器/var/opt/gitlab/backups目錄下的備份文件拷貝到新服務器上的/var/opt/gitlab/backups便可(若是你沒修改過默認備份目錄的話). 
可是須要注意的是新服務器上的Gitlab的版本必須與建立備份時的Gitlab版本號相同. 好比新服務器安裝的是最新的7.60版本的Gitlab, 那麼遷移以前, 最好將老服務器的Gitlab 升級爲7.60在進行備份. 關閉註冊功能: Admin(左側菜單欄)
-->settings --> Sign-in Restrictions Sign-upenbaled 關閉註冊功能 Sign-inenbaled 關閉註冊登陸功能

 

建立倉庫簡單示例

useradd -s /usr/bin/git-shell testgit   #建立一個用戶  或者直接useradd testgit   而後去/etc/passwd 修改testgit用戶的bash 爲/usr/bin/git-shell
passwd testgit                            #更改密碼
cd /home/testgit/                        #進入家目錄,
git init --bare cloudapp.git             #初始化一個倉庫

chown -R testgit:testgit /home/testgit        #更改目錄權限
mkdir .ssh && cd .ssh/ && authorized_keys

將用戶的公鑰寫進去就ok了
相關文章
相關標籤/搜索