亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

版本控制-Git服務器搭建和常用命令使用

Original 2016-11-08 09:58:08 641
abstract:Git是目前世界上最先進的分布式版本控制系統(tǒng)(沒有之一)。下面介紹Git的常用命令  一、簡單版  1、創(chuàng)建版本庫git init  2、新增修改,新增文件到緩存區(qū)git add  3、比較文件的差異git diff  4、查看倉庫狀態(tài)git status  5、從緩存區(qū)提交修改(新增)到版本庫git commit -m 

Git是目前世界上最先進的分布式版本控制系統(tǒng)(沒有之一)。下面介紹Git的常用命令

  一、簡單版

  1、創(chuàng)建版本庫

git init

  2、新增修改,新增文件到緩存區(qū)

git add

  3、比較文件的差異

git diff

  4、查看倉庫狀態(tài)

git status

  5、從緩存區(qū)提交修改(新增)到版本庫

git commit -m 'add a.txt'

  6、查看提交日志

git log (--pretty=oneline)

  7、HEAD表示當前版本,HEAD^表示上個版本,HEAD^^上上個版本,HEAD~100表示網(wǎng)上100個版本

  8、更新到指定版本(沒有撤銷本地修改)

git reset --hard HEAD^
git reset --hard 3628164  # 能區(qū)分一個版本的commit id即可

  9、查看每一次命令

git reflog

  10、撤銷工作區(qū)的修改

git checkout --file 

 

假設錯誤修改了readme.txt,并且git add到了緩存區(qū)

git reset HEAD readme.txt   # 回到最新版本,撤銷緩存區(qū)的修改
git checkout --readme.txt   #  撤銷本地修改

  11、刪除文件

刪除本地文件直接rm

刪除版本庫文件

git rm a.txt 
git commit -m‘rm a.txt’

刪除暫存區(qū)文件

git rm --cache a.txt
git checkout HEAD(a.txt)  # 會清除工作區(qū)和暫存區(qū)的修改

  二、升級版

  1、從github添加遠程倉庫(origin是遠程庫默認名稱,可以更改)

git remote add origin git@github.com:***/learngit.git

  2、把本地的所有修改推送到遠程庫(push是用本地的master分支,-u是表示第一次將遠程庫的master和本地的master關(guān)聯(lián))

git push (-u) origin master

  3、克隆一個倉庫(支持ssh和https協(xié)議,ssh原生且最快)

git clone git@github.com:***/gitskills.git

  4、創(chuàng)建一個分支并切換到該分支(git鼓勵使用分支)

git checkout -b dev

等于兩個命令

git branch dev
git checkout dev

  5、分支命令

查看分支:git branch
創(chuàng)建分支:git branch <name>
切換分支:git checkout <name>
創(chuàng)建+切換分支:git checkout -b <name>
合并某分支到當前分支:git merge <name>
刪除分支:git branch –d(D) <name>
刪除遠程分支:git push origin :serverfix

  6、查看分支合并情況日志

git log –graph
git log --graph --pretty=oneline --abbrev-commit

  7、分支管理策略

master是穩(wěn)定版本,開發(fā)的在其他分支上,穩(wěn)定后合并到master。

合并分支時,加上--no-ff參數(shù)就可以用普通模式合并,合并后的歷史有分支,能看出來曾經(jīng)做過合并,而fast forward(默認)合并就看不出來曾經(jīng)做過合并

git merge --no-ff -m "merge with no-ff" dev
git log --graph --pretty=oneline --abbrev-commit

  8、掛起工作場景

git stash    # 掛起
git stash list   # 查看
git stash pop  # 恢復并刪除
等于 
git stash apply && git stash drop

  9、多人協(xié)作

用下面命令推送自己的修改

git push origin branch-name

如果推送失敗,則因為遠程分支比你的本地更新,需要先用 git pull 試圖合并;如果合并有沖突,則解決沖突,并在本地提交;沒有沖突或者解決掉沖突后,再用下面命令推送就能成功

git push origin branch-name

如果git pull提示“no tracking information”,則說明本地分支和遠程分支的鏈接關(guān)系沒有創(chuàng)建,用命令

git branch --set-upstream branch-name origin/branch-name

  10、標簽操作

git tag <name>    # 新建標簽,默認為HEAD,可以指定commit idgit tag -a <tagname> -m "blablabla..."    # 指定標簽信息
git tag -s <tagname> -m "blablabla..."    # 用PGP簽名標簽名
git tag   # 查看所有標簽
git show <tagname>   # 看到說明
git tag -d <tagname>   # 本地刪除標簽
git push origin <tagname>   # 推送標簽到遠程倉庫
git push origin --tags   # 一次性推送所有標簽到遠程倉庫

PGP簽名的標簽是不可偽造的,因為可以驗證PGP簽名。驗證簽名的方法比較復雜

要刪除遠程倉庫的標簽需要使用

git tag -d <tagname>git push origin :refs/tags/<tagname>

  三、其他

  1、忽略文件

在Git工作區(qū)的根目錄下創(chuàng)建一個特殊的.gitignore文件,然后把要忽略的文件名填進去,Git就會自動忽略這些文件。我們并不需要從頭寫.gitignore文件,GitHub已經(jīng)為我們準備了各種配置文件,只需要組合一下就可以使用了。所有配置文件可以直接在線瀏覽:https://github.com/github/gitignore

  2、配置別名

git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch

每個倉庫的Git配置文件都放在.git/config文件中

  四、搭建Git服務器

詳情可參考廖雪峰官方網(wǎng)站 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

  五、Gitolite搭建教程

參考官網(wǎng) https://git-scm.com/book/zh/v1/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-Gitolite

  1、前期準備

git服務器git@10.16.4.14,git admin機器git@10.16.4.15

root@10.16.4.14$ useradd git
root@10.16.4.14$ passwd git
root@10.16.4.14$ su - git
admin git@10.16.4.15root@10.16.4.15$ useradd git
root@10.16.4.15$ passwd git
root@10.16.4.15$ su - git
root@10.16.4.15$ ssh-keygen -t -P ''

send git.pub to git@10.16.4.14:322/home

  2、Admin使用

git clone

git@10.16.4.15 git clone ssh://git@10.16.4.14:32200/gitolite-admin

add user

1)獲取用戶的public ssh key,例如test@10.1.32.164.pub
2)將`1`的pub存放到git@10.16.4.15 /home/git/gitolite-admin/keydir 文件夾下
3)修改/home/git/gitolite-admin/conf/gitolite.conf,賦予`1`用戶的倉庫權(quán)限
4)git add && git commit -m 'add user test...' && git push origin master
5)登陸test@10.1.32.164,git clone `3`中的倉庫

  3、權(quán)限控制

參考 https://git-scm.com/book/zh/v1/服務器上的-Git-Gitolite

參考 http://perthcharles.github.io/2015/08/24/setup-gitolite-service-git-1

  4、解決密碼過期問題

[git@Dev_10_16_4_15 gitolite-admin]$ git push origin master 
WARNING: Your password has expired.
Password change required but no TTY available.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

解決命令

[root@Dev_10_16_4_14 ~]# chage -M 999 git


Release Notes

Popular Entries