Git學習筆記

//配置email地址和名字
git config --global user.name "Your Name"
git config --global user.email "email@example.com"git

//把當前目錄變爲git倉庫,建好後會多出一個.git目錄
git initshell

//文件添加,放入暫存區
git add *bash

//文件提交,提交暫存區的內容;若是最新改動沒有add,這個改動不會被commit
git commit -m "comment"服務器

//顯示當前提交狀況
git statusapp

//查看修改內容,只支持純文本文件
git diff readme.txtssh

//查看歷史日誌
git log --pretty=onelineui

//回到上一個版本HEAD^, 上上一個版本HEAD^^, 往上100個版本HEAD~100
git reset --hard HEAD^spa

//回到指定版本,commit_id只須要寫前幾位
git reset --hard commit_id日誌

//查看commit_id日誌
git reflogorm

//把該文件的修改所有撤銷,回到最近一次commit或add的狀態
//沒有放入暫存區時,撤銷修改就回到和版本庫同樣的狀態
//文件已添加到暫存區後,又做了修改,撤銷修改就回到添加到暫存區的狀態
git checkout -- readme.txt

//撤銷某個文件暫存區的修改
git reset HEAD readme.txt

//刪除文件
git rm test.txt

//建立SSH Key
ssh-keygen -t rsa -C "youremail@example.com"

//關聯一個遠程庫
git remote add origin git@server-name:path/repo-name.git

//關聯後推送分支內容
git push -u origin branch-name

//每次本地提交後,推送最新修改
//本地新建的分支若是不推送到遠程,對其餘人就是不可見的
git push origin branch-name

//若是推送失敗,由於遠程分支比你的本地更新,須要先抓取遠程的最新提交
git pull

//若是git pull提示"no tracking information",則須要創建本地分支和遠程分支的關聯
git branch --set-upstream branch-name origin/branch-name

//在本地建立和遠程分支對應的分支
git checkout -b branch-name origin/branch-name

//查看遠程庫的信息
git remote -v

//克隆一個git repository
git clone git@server-name:path/repo-name.git

//建立分支
git branch dev

//切換分支
git checkout dev

//建立分支並切換到分支
git checkout -b dev

//查看分支
git branch
git branch -a

//合併指定分支到當前分支
git merge dev

//合併分支時禁用fast forward,從而保留分支信息,建立新的提交
git merge --no-ff -m "merge with no-ff" dev

//刪除分支
git branch -d dev

//強行刪除一個沒有合併的分支,將丟失修改
git branch -D feature1

//查看分支合併狀況
git log --graph --pretty=oneline --abbrev-commit

//保存現場,這樣你能夠先作其它事,能夠屢次保存
git stash

//恢復現場,stash內容並不刪除
git stash apply

//能夠手動刪除stash內容
git stash drop

//恢復現場同時刪除stash內容
git stash pop

//查看stash內容
git stash list

//恢復到指定的stash
git stash apply stash@{0}

//建立標籤
git tag v1.0

//查看標籤
git tag
git show tagname

//建立標籤,附帶說明
git tag -a v0.1 -m "version 0.1 released" commit_id

//對某個commit_id打上標籤
git log --pretty=oneline --abbrev-commit
git tag v0.9 commit_id

//用私鑰簽名一個標籤,採用PGP簽名,先要安裝gpg
git tag -s v0.2 -m "signed version 0.2 released" commit_id

//刪除標籤
git tag -d tagname

//推送某個標籤到遠程
git push origin tagname

//推送所有未推送過的本地標籤
git push origin --tags

//要刪除遠程標籤,先從本地刪除
git tag -d v0.9
git push origin :refs/tags/v0.9

//讓git顯示顏色
git config --global color.ui true

//要忽略某些文件,須要編寫.gitignore文件並提交該文件
Thumbs.db
*.pyc
*.egg
build
Content/photos/

//配置命令的別名,--global針對當前用戶起做用,不加則針對當前倉庫
//能夠在配置文件.git/config中查看已經添加的別名
//當前用戶的git配置文件則在用戶目錄下的.gitconfig文件中
git config --global alias.st status
git st

//配置命令的別名,把暫存區的修改撤銷
git config --global alias.unstage 'reset HEAD'
git unstage test.py

//配置命令的別名,讓其顯示最後一次提交信息
git config --global alias.last 'log -1'
git last

//搭建git私有服務器
$ sudo apt-get install git
$ sudo adduser git
收集全部須要登陸的用戶的公鑰id_rsa.pub文件,把全部公鑰
導入到/home/git/.ssh/authorized_keys文件裏,一行一個
選定一個目錄做爲Git倉庫,好比/srv/sample.git,在/srv目錄下輸入命令:
$ sudo git init --bare sample.git
建立一個裸倉庫,裸倉庫沒有工做區,由於服務器上的Git倉庫純粹是爲了共享
服務器上的Git倉庫一般都以.git結尾。而後,把owner改成git:
$ sudo chown -R git:git sample.git
建立的git用戶不容許登陸shell,這能夠經過編輯/etc/passwd文件完成
git:x:1001:1001:,,,:/home/git:/bin/bash
改成:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
這樣,git用戶能夠正常經過ssh使用git,但沒法登陸shell
由於咱們爲git用戶指定的git-shell每次一登陸就自動退出
如今,能夠經過git clone命令克隆遠程倉庫:
$ git clone git@server:/srv/sample.git
要方便管理公鑰,用Gitosis
要像SVN那樣變態地控制權限,用Gitolite

相關文章
相關標籤/搜索