前言
原文地址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001373962845513aefd77a99f4145f0a2c7a7ca057e7570000
自動幫助記錄每次文件的改動笨使,同時協(xié)作永工作
學(xué)習(xí)git命令是充分必要的
集中式和分布式
分布式每個人電腦都是一個完整的版本庫,也有類似中央服務(wù)器的電腦驶冒,但是這個服務(wù)器只是用來交互打架的修改沒有它大家也一樣干活悄窃,只是交互修改不方便而已
安裝只要安裝了xcode就可以了
倉庫:里面文件修改涩盾,刪除虑绵,添加都能被git追蹤冶共,認(rèn)識時刻都能追蹤歷史或者將來某哥時刻還原只能追蹤文本文件的改動
創(chuàng)建目錄和查看路徑
mkdir 創(chuàng)建目錄??
cd? ? 進(jìn)入到目錄里面
pwd? 用于顯示當(dāng)前的目錄
cat? 查看文件內(nèi)容
Git命令使用說明
初始化一個目錄成git的倉庫(版本庫)包括暫存區(qū)和master分支
git init查看當(dāng)前目錄的文件包括隱藏文件
ls -ah獲取git命令的手冊頁
git help使用git前需要進(jìn)行一些全局的配置
> 1脱盲、用戶目錄下的配置邑滨,當(dāng)前登陸用戶所有的倉庫調(diào)用這個配置 ~/.gitconfig
> 2、項目目錄的配置钱反,優(yōu)先級高掖看,覆蓋全局配置
配置用戶名和郵箱
git config --global user.name "wirelessqa"
git config --global user.email wirelessqa.me@gmail.com
git config --global color.ui true 讓Git顯示顏色,會讓命令輸出看起來更醒目
.gitignore 配置 不納入git管理 主要是系統(tǒng)文件,編譯文件面哥,自定義的文件 哎壳,這個文件也用推送到遠(yuǎn)程庫
https://github.com/github/gitignore ,創(chuàng)建 touch 命令
配置編輯器 git在需要輸入一些消息
git config --global core.editor emacs
配置比較工具
git config --global merge.tool vimdiff
讀取配置(同一個配置選項會出現(xiàn)多次尚卫,以最后一次為準(zhǔn))
git config --list
提交文件之前
先查看當(dāng)前的狀態(tài) ,能提示你接下來怎么做的命令归榕,比如修改工作區(qū)文件內(nèi)容,提示你添加到暫存區(qū)或者丟棄工作區(qū)修改的命令
git status
查看文件到底修改了什么
git diff
提交修改
納入git倉庫管理吱涉,把修改添加到暫存區(qū)(使用.代表將所有的修改進(jìn)行添加)
git add .
把暫存區(qū)里面的所有修改提交到當(dāng)前分支同時創(chuàng)建一個快照
git commit -m ""
如果確認(rèn)當(dāng)前所有變更都是同一個commit刹泄,可以直接加-a,就不必一個一個add了
git commit -a -m ""
工作區(qū)和版本庫里最新版本的區(qū)別
git diff HEAD -- readme.txt
查看提交歷史
git log --pretty=oneline
撤銷修改
git checkout -- readme.txt
> 1怎爵、修改后還沒添加到暫存區(qū) 特石,撤銷修改回到最近一次commit的狀態(tài),也就是和版本庫里面的狀態(tài)一樣
> 2鳖链、修改后被添加到暫存區(qū)了县匠,又做了修改 ,撤銷修改就回到添加到暫存區(qū)后的狀態(tài),也就是跟暫存區(qū)里面的狀態(tài)保持一致
> 3撒轮、用版本庫里的版本替換工作去的版本乞旦,無論工作區(qū)是修改還是刪除
可以把暫存區(qū)的修改撤銷掉
git reset HEAD file
提交文件刪除修改到暫存區(qū)
git rm test.txt
版本回退
git的版本回退知識改了head 指針,順便把工作區(qū)的文件更新掉了
git reset --hard HEAD^
或
git reset --hard 3628164
查看命令歷史
可以看到reset和commit等命令歷史题山,可以利用這個命令查看最近一次 commitid
git reflog
工作區(qū)和暫存區(qū)
工作區(qū):電腦上能看到的目錄 ,里面有個.git 隱藏目錄這個不算工作區(qū)兰粉,是git的版本庫
版本庫里面包含了暫存區(qū)stage和git為我們自動創(chuàng)建第一個分支
遠(yuǎn)程庫管理
查看遠(yuǎn)程庫信息
git remote -v
修改遠(yuǎn)程倉庫地址(在已經(jīng)add了遠(yuǎn)程倉庫地址,使用它進(jìn)行修改地址)
git remote set-url origin https://github.com/USERNAME/OTHERREPOSITORY.git
關(guān)聯(lián)遠(yuǎn)程庫(添加遠(yuǎn)程倉庫地址)
git remote add origin git@github.com:linhbcode/first-test.git
本地的master分支推送到遠(yuǎn)程的master分支上顶瞳,原則就是master分支要與遠(yuǎn)程同步 玖姑,dev 分支開發(fā)分支,也需要遠(yuǎn)程同步
git push origin master
master分支推送到遠(yuǎn)程的master分支慨菱,本地master 分支和遠(yuǎn)程master分支建立關(guān)聯(lián)
git push -u origin master
Git自動把本地的master分支和遠(yuǎn)程的master分支對應(yīng)起來了焰络,并且,遠(yuǎn)程倉庫的默認(rèn)名稱是origin
git clone git@github.com:linhbcode/first-test.git
git pull 如果提示沖突解決沖突 抓去信息碰到?jīng)]有鏈接的 有兩種方式解決
> 1符喝、git branch --set-upstream branch-name origin/branch-name 建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián)
> 2闪彼、git pull origin branchname
分支管理
1、不完整的代碼在其它分支上提交
2、每個提交都在一個時間線上的節(jié)點(diǎn)上畏腕,分支相當(dāng)于指向一個節(jié)點(diǎn)的指針
head 本質(zhì)上是指向分支的指針
創(chuàng)建并切換分支
git checkout -b dev
本地分支創(chuàng)建和遠(yuǎn)程分支相同的分支缴川,主要是倉庫從遠(yuǎn)程clone過來的(一般要先git fetch,再git checkout -b branch-name origin/branch-name)
git checkout -b branch-name origin/branch-name
創(chuàng)建分支
git branch dev
切換分支 , 如果當(dāng)前的工作只完成一半描馅,還沒發(fā)提交的話
git checkout dev
可以用 git stash 保存工作現(xiàn)場 把夸,在用它之前可以 git stash list 查看有幾個暫存的列表
查看有幾個暫存的列表
git stash list
保存工作現(xiàn)場
git stash
恢復(fù) 工作現(xiàn)場
git stash apply
來刪除 工作現(xiàn)場
git stash drop
查看當(dāng)前分支
git branch
查看遠(yuǎn)程分支
git branch -r
合并分支
git merge dev
刪除分支
git branch -d dev
強(qiáng)行刪除分支
git branch -D dev
(刪除遠(yuǎn)程分支)冒號前面的空格不能少,原理是把一個空分支push到server上铭污,相當(dāng)于刪除該分支恋日。
git push origin :branch-name
提交本地test分支作為遠(yuǎn)程的master分支
git push origin test:master
提交本地test分支作為遠(yuǎn)程的test分支
git push origin test:test
剛提交到遠(yuǎn)程的test將被刪除,但是本地還會保存的嘹狞,不用擔(dān)心
git push origin :test
查看分支合并圖
git log --graph
查看提交歷史
git log --pretty=oneline --abbrev-commit
合并分支
git merge branchname
合并分支的時候不采用ff模式(分支刪除了還能看的到分支歷史信息)
git merge --no-ff -m "merged bug fix 101" issue-101
標(biāo)簽管理
描述開發(fā)歷程谚鄙,在發(fā)布一個版本的時候打一個標(biāo)簽
查看所有的標(biāo)簽
git tag
對莫一個提交歷史打一個標(biāo)簽
git tag v1.0 [commit id]
查看標(biāo)簽信息
git show [tagname]
正式開發(fā)下最好用這條語句標(biāo)注下這個標(biāo)簽的描述
git tag -a v0.1 -m "version 0.1 released" 3628164
刪除標(biāo)簽
git tag -d v0.1
推送標(biāo)簽
git push origin v1.0
推送全部標(biāo)簽
git push origin --tags
遠(yuǎn)程刪除標(biāo)簽(先從本地刪除標(biāo)簽)
git push origin :refs/tags/v0.9
ssh配置
Git配置文件config
結(jié)語
目前就整理了些常用的命令,足夠?qū)Ω镀匠5墓ぷ髁说笕蓿绻蠹疫€想讀讀Git原理的話闷营,建議看看原文地址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001373962845513aefd77a99f4145f0a2c7a7ca057e7570000,里面講的特別全知市。
iOS技術(shù)交流:566912706