目前你們接觸到最多的版本控制工具就是Svn和Git,Git是目前世界上最早進的分佈式版本控制系統,其實 Git 跟 SVN同樣有本身的集中式版本庫或服務器,可是Git 更傾向於被使用於分佈式模式,也就是每一個開發人員從中心版本庫/服務器上chect out代碼後會在本身的機器上克隆一個跟中心版本庫如出一轍的本地版本庫;git
查看當前配置: git config --listbash
修改 git 的 name 和 email :服務器
git config --global user.name <name>
app
git config --global user.email <email>
ssh
SSH Key 密鑰生成
許多 Git 服務器都使用 SSH 公鑰進行認證。 爲了向 Git 服務器提供 SSH 公鑰,若是某系統用戶還沒有擁有密鑰,必須事先爲其生成一份。 這個過程在全部操做系統上都是類似的。 首先,你須要確認本身是否已經擁有密鑰。 默認狀況下,用戶的 SSH 密鑰存儲在其 ~/.ssh
目錄下。 進入該目錄並列出其中內容,你即可以快速確認本身是否已擁有密鑰:分佈式
$ cd ~/.ssh
$ ls
authorized_keys2 id_dsa known_hosts
config id_dsa.pub複製代碼
咱們須要尋找一對以 id_dsa
或 id_rsa
命名的文件,其中一個帶有 .pub
擴展名。 .pub
文件是你的公鑰,另外一個則是私鑰。 若是找不到這樣的文件(或者根本沒有 .ssh
目錄),你能夠經過運行 ssh-keygen
程序來建立它們。在 Linux/Mac 系統中,ssh-keygen
隨 SSH 軟件包提供;在 Windows 上,該程序包含於 MSysGit 軟件包中。ide
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/schacon/.ssh/id_rsa):
Created directory '/home/schacon/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/schacon/.ssh/id_rsa.
Your public key has been saved in /home/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
d0:82:24:8e:d7:f1:bb:9b:33:53:96:93:49:da:9b:e3 schacon@mylaptop.local
複製代碼
而後進行第一步操做,打開~/.ssh目錄下的公鑰文件
工具
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== schacon@mylaptop.local複製代碼
將公鑰內容複製下來,而後在託管項目的GitLab服務器上添加SSH KEY,具體怎麼添加能夠百度搜索一下,就幾部而已,在此不加說明;
fetch
git clone 遠程工程:git clone https://xxxxxxx.gitui
git fetch 把全部遠程分支更新到本地
git fetch origin <originName> :<localName> :把遠程對應分支更改更新到本地分支
注意:在Git中HEAD
指向的版本是當前版本,^
表示上一個版本,~N
表示上N個版本;
分支操做:
查看分支:git branch
查看遠程全部分支:git branch -r
查看本地和遠程全部分支:git branch -a
建立分支:git branch <name>
切換分支:git checkout <name>
建立並切換分支:git checkout -b <name>
合併某分支到當前分支:git merge <name>
刪除本地分支:git branch (-d | -D) <name>
刪除遠程分支:git push origin -d <name>
分支重命名:git branch (-m | -M) <oldbranch>
<newbranch>
注意: 不能刪除當前所在本地分支。
查看當前分支本地修改:git status
查看分支的commit信息(倒敘排列)
git log
查看commit id, Author, Date, commit info
git shortlog
按提交者分類顯示提交信息
git log --oneline
只輸出commit id 和 commit info
git log --stat
查看增刪查改了哪些文件
文件的添加、提交、拉取、推送、合併
添加新增文件到暫存區:git add xx
添加全部新增文件到暫存區:git add .
暫存變動文件:git stash save "暫存備註"
恢復暫存文件(並將暫存彈出棧):git stash pop (stash@{x})
提交變動文件:git commit -m "變動備註"
git push origin <currentName>
:<currentName>
把本地分支<currentName>
推送到遠程<remoteName>
分支,遠程沒有則建立
推送到遠程:git push origin <name>
比對兩個分支:git diff <name1>
<name2>
比對本地和遠程分支:git diff <name>
origin/<name>
合併某個分支:git merge <name>
注意:通常git pull 操做至關於先拉取遠程分支變化,而後自動merge ,等同於:git fetch 而後checkout當前分支再 merge 一下;
回退到上一版本:git reset --hard HEAD^
回退到上上版本:git reset --hard HEAD^^
回退到上上版本:git reset --hard HEAD~2
回退到某個版本:git reset --hard <commit id>
注:慎用hard回滾,回滾後的代碼與前一次commit提交保持一致,暫存區全部內容清除,也能夠結合使用soft和mixed兩種方式,根據本身實際狀況操做;
強制推送到遠程分支:git push -f (該命令慎用,尤爲在服務器主開發分支上操做)