一、安裝git
1、LINUX
查看是否安裝git:
$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
Debian或Ubuntu Linux,通過一條 sudo apt-get install git 就可以直接完成Git的安裝
老一點的Debian或Ubuntu Linux,寫sudo apt-get install git-core
其他Linux版本,可以直接通過源碼安裝。先從Git官網下載源碼,然後解壓,依次輸入:./config,make,sudo make install這幾個命令安裝就好了
2、Mac OS X
如果你正在使用Mac做開發,有兩種安裝Git的方法。
第一種是安裝homebrew,然後通過homebrew安裝Git,具體方法請參考homebrew的文檔:http://brew.sh/。
第二種方法更簡單,也是推薦的方法,就是直接從AppStore安裝Xcode,Xcode集成了Git,不過默認沒有安裝,你需要運行Xcode,選擇菜單“Xcode”->“Preferences”,在彈出窗口中找到“Downloads”,選擇“Command Line Tools”,點“Install”就可以完成安裝了
3、Windows
從http://msysgit.github.io/下載,安裝
Git->Git Bash,能彈出命令行窗口說明安裝成功
最後設置,在命令行中:
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
查看 git config命令的--global參數
二、創建版本庫 repository
1、選擇創建目錄
$ mkdir learngit
$ cd learngit
$ pwd //pwd命令用於顯示當前目錄
2、通過git init命令把這個目錄變成Git可以管理的倉庫
$git init
此目錄下會出現 .git目錄,如果你沒有看到.git目錄,那是因爲這個目錄默認是隱藏的,用ls -ah命令就可以看見
3、操作
文件添加到倉庫
$git add test.txt
提交所添加文件到倉庫
$git commit -m "wrote a test file" //-m後面輸入的是本次提交的說明
總結:
初始化一個Git倉庫,使用git init命令。
添加文件到Git倉庫,分兩步:
第一步,使用命令git add <file>,注意,可反覆多次使用,添加多個文件;
第二步,使用命令git commit -m,完成
三、修改文件
$ git status 命令查看結果
$ git diff 命令查看修改內容
$ git add <file>
$ git commit -m ""
$ git log 命令查看全部修改記錄 //q退出
//最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file
加上 --pretty=oneline
返回到以前的版本:
$ git reset --hard HEAD^ //HEAD爲當前版本,上一個版本就是HEAD^,上上版本HEAD^^,上100個版本 HEAD~100
進入到未來的版本 //需要commit id 例如:3628164...
$ git reset --hard 3628164
查看所有commit id
$ git reflog
撤銷修改
$ git chechout -- <file> //直接丟棄工作區的修改
$ git reset HEAD file //把暫存區的修改撤銷掉
刪除文件
工作區:$ rm <file>
版本庫:$ git rm 再git commit
誤刪恢復:$ git checkout -- <file>
四、遠程倉庫
在.ssh文件夾中需要id_rsa和id_rsa.pub文件
如果沒有:$ ssh-keygen -t rsa -C "email"
添加遠程庫
登錄GitHub,Create a new repo,創建一個新倉庫
$ git remote add origin [email protected]:michaelliao/lenrngit.git
把本地的數據推送到遠程庫上
$ git push -u origin master
從遠程庫克隆
Initialize this repository with a README
克隆本地庫:
$ git clone [email protected]:michaellian/gitskills.git
$ cd gitskills //進入文件夾
$ ls //展現文件
Git支持多種協議,包括https,但通過ssh支持的原生git協議速度最快
五、分支管理
主分支:master
$ git checkeout -b <name> //創建分支;git checkout 再加上 -b參數表示創建並切換
$ git branch //查看當前分支
$ git branch <name> //創建分支
$ git checkout <name> //切換分支
$ git merge <name> //命令用於合併指定分支到當前分支
$ git branch -d <name> //刪除分支
$ git log --graph //查看分支合併圖
$ git merge --no--ff -m "" <name> //--no--ff表示禁用fast forward,因爲本次合併要創建一個新的commit,所以 -m 參數
$ git stash // 儲藏
$ git stash list //查看儲藏內容
$ git stash apply //恢復儲藏,stash內容不刪除
$ git stash drop //刪除儲藏
$ git stash pop //恢復,同時刪除儲藏
$ git stash apply stash@{0} //恢復指定儲藏
$ git remote //查看遠程庫信息
$ git remote -v //查看詳細信息
$ git push origin <branch-name> //推送分支到遠程庫
$ git pull origin dev:dev //拉取遠程資源
$ git checkout -b branch-name origin/branch-name //在本地創建和遠程分支對應的分支,本地和遠程分支的名稱最好一致
$ git branch --set-upstream branch-name origin/branch-name //建立本地分支和遠程分支的關聯
六、標籤
$ git tag <name> //創建新標籤
$ git tag //查看所有標籤
$ git tag <commit id> //給指定commit加標籤
$ git show <tagname> //查看標籤信息
$ git tag -a <tagname> -m "說明" //添加說明
$ git tag -s <tagname> -m "" //用PGP簽名標籤
$ git push origin <tagname> //把指定標籤推送到遠程
$ git push origin --tags //推送所有標籤
$ git tag -d <tagname> //刪除指定標籤
$ git push origin :refs/tags/<tagname> //刪除遠程的標籤
七、自定義git
$ git config --global color.ui true //讓git顯示顏色
$ git config --global alias.st status //status設置爲st
配置文件.git/config
$ cat .git/config //查看配置文件
八、搭建git服務器
第一步:安裝git
$ sudo apt-get install git
第二步:創建一個git用戶,用來運行git服務
$ sudo adduser git
第三步:創建證書登錄
收集所有需要登錄的用戶公鑰,id_rsa.pub,導入到/home/git/.ssh/suthorized_keys中
第四步:初始化git倉庫
選定倉庫目錄,假定/srv/sample.git,在/srv目錄下
$ sudo git init --bare sample.git
Git就會創建一個裸倉庫,裸倉庫沒有工作區,因爲服務器上的Git倉庫純粹是爲了共享,所以不讓用戶直接登錄到服務器上去改工作區,並且服務器上的Git倉庫通常都以.git結尾。然後,把owner改爲git
$ sudo chown -R git:git sample.git
第五步:禁用shell登錄
出於安全考慮,第二步創建的git用戶不允許登錄shell,這可以通過編輯/etc/passwd文件完成。找到類似下面的一行
git:x:1001:1001:,,,:/home/git:/bin/bash 改爲
git:x:1001:1001:,,,:/home/git:/user/bin/git-shell
這樣,git用戶可以正常通過ssh使用git,但無法登錄shell,因爲我們爲git用戶指定的git-shell每次一登錄就自動退出
第六步:克隆遠程倉庫
$ git clone git@server:/srv/sample.git
要方便管理公鑰,用Gitosis
要像SVN那樣變態地控制權限,用Gitolite
常用命令:
vi filename進入編輯模式 wq退出編輯模式
git init
git remote add origin git@git....
git pull origin dev
git status
git add <file>
git commit -m "寫提交內容"
git push origin dev:dev//上傳本地到遠程
git pull origin dev:dev//下載遠程到本地
git log//查看本地倉庫
教程網址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000