安裝略過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
添加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了