Git是目前世界上最先進的分散式版本控制系統(沒有之一)。使用Svn的請參考《版本控制-svn伺服器搭建和常用命令(centos 6.3)》,下麵介紹Git的常用命令 常用命令 簡單版 升級版 其他 伺服器搭建 本地伺服器搭建 Gitolite搭建 一、簡單版 1、創建版本庫 2、新增修改,新增文件 ...
Git是目前世界上最先進的分散式版本控制系統(沒有之一)。使用Svn的請參考《版本控制-svn伺服器搭建和常用命令(centos 6.3)》,下麵介紹Git的常用命令
常用命令
伺服器搭建
1、創建版本庫
git init
2、新增修改,新增文件到緩存區
git add
3、比較文件的差異
git diff
4、查看倉庫狀態
git status
5、從緩存區提交修改(新增)到版本庫
git commit -m 'add a.txt'
6、查看提交日誌
git log (--pretty=oneline)
7、HEAD表示當前版本,HEAD^表示上個版本,HEAD^^上上個版本,HEAD~100表示網上100個版本
8、更新到指定版本(沒有撤銷本地修改)
git reset --hard HEAD^ git reset --hard 3628164 # 能區分一個版本的commit id即可
9、查看每一次命令
git reflog
10、撤銷工作區的修改
git checkout --file
假設錯誤修改了readme.txt,並且git add到了緩存區
git reset HEAD readme.txt # 回到最新版本,撤銷緩存區的修改
git checkout --readme.txt # 撤銷本地修改
11、刪除文件
刪除本地文件直接rm
刪除版本庫文件
git rm a.txt git commit -m‘rm a.txt’
刪除暫存區文件
git rm --cache a.txt git checkout HEAD(a.txt) # 會清除工作區和暫存區的修改
1、從github添加遠程倉庫(origin是遠程庫預設名稱,可以更改)
git remote add origin [email protected]:***/learngit.git
2、把本地的所有修改推送到遠程庫(push是用本地的master分支,-u是表示第一次將遠程庫的master和本地的master關聯)
git push (-u) origin master
3、克隆一個倉庫(支持ssh和https協議,ssh原生且最快)
git clone [email protected]:***/gitskills.git
4、創建一個分支並切換到該分支(git鼓勵使用分支)
git checkout -b dev
等於兩個命令
git branch dev
git checkout dev
5、分支命令
查看分支:git branch 創建分支:git branch <name> 切換分支:git checkout <name> 創建+切換分支: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是穩定版本,開發的在其他分支上,穩定後合併到master。
合併分支時,加上--no-ff參數就可以用普通模式合併,合併後的歷史有分支,能看出來曾經做過合併,而fast forward(預設)合併就看不出來曾經做過合併
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、多人協作
用下麵命令推送自己的修改
git push origin branch-name
如果推送失敗,則因為遠程分支比你的本地更新,需要先用 git pull 試圖合併;如果合併有衝突,則解決衝突,併在本地提交;沒有衝突或者解決掉衝突後,再用下麵命令推送就能成功
git push origin branch-name
如果git pull提示“no tracking information”,則說明本地分支和遠程分支的鏈接關係沒有創建,用命令
git branch --set-upstream branch-name origin/branch-name
10、標簽操作
git tag <name> # 新建標簽,預設為HEAD,可以指定commit id git 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工作區的根目錄下創建一個特殊的.gitignore文件,然後把要忽略的文件名填進去,Git就會自動忽略這些文件。我們並不需要從頭寫.gitignore文件,GitHub已經為我們準備了各種配置文件,只需要組合一下就可以使用了。所有配置文件可以直接線上瀏覽: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文件中
詳情可參考廖雪峰官方網站 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
1、安裝git
yum install git -y [root@master git]# git version git version 1.7.1
2、新建git賬號
[root@master git]# useradd git [root@master git]# passwd git [root@master git]# mkdir /data1/git
3、生成ssh key
[root@master git]# su - git [git@master ~]$ ssh-keygen -t rsa [git@master .ssh]$ cd ~/.ssh/ [git@master .ssh]$ touch authorized_keys [git@master .ssh]$ chmod 600 authorized_keys
收集所有需要登錄的用戶的公鑰,就是他們自己的id_rsa.pub
文件,把所有公鑰導入到/home/git/.ssh/authorized_keys
文件里,一行一個。
4、初始化git倉庫
切回Root賬戶 [root@master ~]# cd /data1/git/ [root@master git]# git init --bare project.git Initialized empty Git repository in /data1/git/project.git/ [root@master git]# chown -R git: /data1/git/
5、禁用shell登陸
處於安全考慮一般禁用git賬戶被遠程登陸shell。修改/etc/passwd
[root@master git]# vim /etc/passwd 將 git:x:502:502::/home/git:/bin/bash 修改為 git:x:502:502::/home/git:/usr/bin/git-shell
[root@master git]# su - git fatal: What do you think I am? A shell?
6、其他地方克隆倉庫
現將公鑰添加到 authorized_keys文件中
git clone ssh://git@master:322/data1/git/project.git
管理公鑰可以使用 Gitosis ,因為authorized_keys文件大了很難管理。管理許可權請參考下麵
參考官網 https://git-scm.com/book/zh/v1/伺服器上的-Git-Gitolite
1、前期準備
git伺服器[email protected],git admin機器[email protected]
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.15 root@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 [email protected]:322/home
2、Admin使用
git clone
git@10.16.4.15 git clone ssh://[email protected]:322/gitolite-admin
add user
1)獲取用戶的public ssh key,例如[email protected]
2)將`1`的pub存放到[email protected] /home/git/gitolite-admin/keydir 文件夾下
3)修改/home/git/gitolite-admin/conf/gitolite.conf,賦予`1`用戶的倉庫許可權
4)git add && git commit -m 'add user test...' && git push origin master
5)登陸[email protected],git clone `3`中的倉庫
3、許可權控制
參考 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
原創文章,轉載請備註原文地址 http://www.cnblogs.com/lxmhhy/p/6038243.html
知識交流討論請加qq群:180214441。謝謝合作