安裝
- centos
yum install git
- ubuntu
apt-get install git
- 源碼安裝
wget https://www.kernel.org/pub/software/scm/git/git-2.5.0.tar.gz
tar zxvf git-2.5.0.tar.gz
cd git-2.5.0
./configure
make && make install
配置
git --version //查看版本
git配置文件位置 ~/.gitconfig
git config --global user.name "你的git帳戶名" //配置git帳戶名
git config --global user.email "你的git帳戶郵箱" //配置帳戶郵箱
1、AutoCRLF
#提交時轉換爲LF,檢出時轉換爲CRLF--Windows使用
git config --global core.autocrlf true
#提交時轉換爲LF,檢出時不轉換--Mac Uniux上使用
git config --global core.autocrlf input
#提交檢出均不轉換--僅運行在windows上使用
git config --global core.autocrlf false
2、SafeCRLF
#拒絕提交包含混合換行符的文件
git config --global core.safecrlf true
#容許提交包含混合換行符的文件
git config --global core.safecrlf false
#提交包含混合換行符的文件時給出警告
git config --global core.safecrlf warn
設置區分大小寫
git config --global core.ignorecase false
避免PULLING提交合並
git config --global branch.autosetuprebase always
顏色高亮
git config --global color.ui true
git config --global color.status auto
git config --global color.branch auto
設置默認編輯器
git config --global core.editor vim
設置默認的合併工具
git config --global merge.tool vimdiff
查看配置
git config --global --list
SSH key生成
ssh-keygen -t rsa -C "你的郵箱" //生成的你的祕鑰
cat ~/.ssh/id_rsa.pub //查看是ssh密鑰:cd ~/.ssh
在github上面添加ssh 祕鑰
多個ssh key共存/切換
依次生成key
ssh-keygen -t rsa -C "你的郵箱" -f ~/.ssh/github
添加私鑰
ssh-add ~/.ssh/github
若是執行ssh-add時提示"Could not open a connection to your authentication agent",能夠現執行命令:
ssh-agent bash
而後再運行ssh-add命令。
# 能夠經過 ssh-add -l 來確私鑰列表
ssh-add -l
# 能夠經過 ssh-add -D 來清空私鑰列表
ssh-add -D
在~/.ssh中增長config配置文件
vi ~/.ssh/config
內容
#github home-win-key
Host github.com ##能夠隨意命名,連接時使用這個名字
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/github
#oschina home-win-key
Host git.oschina.net ##能夠隨意命名,連接時使用這個名字
HostName git.oschina.net
User git
Port 22
IdentityFile ~/.ssh/oschina
#coding home-win-key
Host git.coding.net ##能夠隨意命名,連接時使用這個名字
HostName git.coding.net
User git
Port 22
IdentityFile ~/.ssh/coding
git remote 修改遠端 git@git.oschina.net:xx/xx 爲別名(Host):xx/xx
測試配置
ssh -T git@git地址(例如:git.oschina.net、github.com)
命令
git init //初始化環境
git clone 項目地址 //在本地創建遠程倉庫的副本
git status //查看當前目錄的git狀態,包含當前所在的分支,是否有新增文件,是否有修改文件等
git status -s //簡潔模式顯示
git config -l //顯示git配置
git log //查看提交的歷史記錄,包含日誌、版本號等。(":wq" 退出日誌查看狀態)
git reflog //查看全部日誌包含刪除日誌
git stash //將當前分支還沒有commit的內容保存到暫存區
git stash list //當前分支的暫存區暫存列表
git stash pop //從新加載最後一次保存到暫存區的內容
git diff 文件名稱 //查看文件修改內容,「---」爲更改前內容,「+++」爲更改後內容
git diff HEAD^ HEAD //兩次提交的差別
git diff 35d9747a0cddeadf8a7ce76f518bc5be1ad54d6c^ d7ad404505f79c6678c04bb6c09c1607fc5d5ae9
git tag //用來爲代碼歷史記錄中的某一個點指定一個永久的書籤, 通常來講它用於發佈相關事項
git branch //查看本地倉庫的全部分支
git branch -r //查看遠程分支
git branch –a //查看本地&遠端倉庫的全部分支
git branch -v //查看各個分支最後一次提交
git branch 分支名稱 //建立分支
git branch -d 分支名稱 //刪除本地分支
git branch -D 分支名稱 //強制刪除分支
git branch --merged //查看合併前的分支
git branch –-no-merged //查看哪些分支未合併入當前分支
git checkout 分支名稱 //切換到指定分支
git checkout –b 分支名稱 //建立分支並切換到新建分支
git add 文件名稱 //在工做目錄中新增文件:示例:git add README.md
git add . //添加全部文件到倉庫
git reset 文件名稱 //撤銷添加
git commit –m "備註" //提交當前目錄全部修改到本地倉庫
git commit –a //提交全部修改,該操做會打開vim手動指定要提交的文件。(":wq" 保存並退出)
git reset --hard commit_id //撤銷提交
git pull <遠程主機名> <遠程分支名>:<本地分支名> //取回遠程主機某個分支的更新,再與本地的指定分支合併。
git pull origin next:master //取回origin主機的next分支,與本地的master分支合併
//若是遠程分支是與當前分支合併,則冒號後面的部分能夠省略
git pull origin next
//上面命令表示,取回origin/next分支,再與當前分支合併。實質上,這等同於先作git fetch,再作git merge。
git fetch origin
git merge origin/next
git fetch <遠程主機名> //將某個遠程主機的更新,所有取回本地
git fetch <遠程主機名> <分支名> //將某個遠程主機的指定分支更新取回本地
git merge 分支名稱 //將指定分支合併覆蓋到當前分支
git rebase 分支名稱 //把提交(補丁)臨時存放到.git/rebase中,更新到最新版本,把補丁應用到最新分支中
//rebase解決衝突,解決完衝突執行git add 無需執行git commit 執行 git rebase --continue
git rebase –skip //跳過
git rebase --abort //任什麼時候候能夠執行,終止合併返回rebase前狀態
git reset --hard HEAD^
git reset --hard 3628164 git 的版本都是很長的字符串
git revert
git push <遠程主機名> <本地分支名>:<遠程分支名> //將本地分支的更新,推送到遠程主機
git push origin master:master //將本地master推送到遠端master
//可寫git push origin master
git push origin test:test //提交本地test分支做爲遠程的test分支
git push origin :master //若是省略本地分支名,則表示刪除指定的遠程分支,由於這等同於推送一個空的本地分支到遠程分支。
# 等同於
$ git push origin --delete master //刪除origin主機的master分支
注意:
git push ssh://git@dev.lemote.com/rt4ls.git master // 把本地倉庫提交到遠程倉庫的master分支中
等價於
git remote add origin ssh://git@dev.lemote.com/rt4ls.git //添加遠端別名
合併後衝突解決辦法
1. 提交所有
git commit -a
2. 若是不想提交所有,那麼能夠經過添加 -i 選項
git commit file/to/path -i -m "merge"
git流程
git flow
https://about.gitlab.com/2014/09/29/gitlab-flow/
中文版 http://www.15yan.com/story/6yueHxcgD9Z/
git各類流程介紹
https://github.com/oldratlee/translations/blob/master/git-workflows-and-tutorials/README.md
git-flow 備忘清單
http://danielkummer.github.io/git-flow-cheatsheet/index.zh_CN.html