linux基礎命令
find
find / -name targetfilename 查找文件
按時間查找也有參數 -atime 訪問時間
—ctime 改變狀態時間
-mtime 修改時間
find ./ -mtime 0:返回最近24小時內修改過的文件。
find ./ -mtime 1 : 返回的是前48~24小時修改過的文件。而不是48小時以內修改過的文件。
那怎么返回10天內修改過的文件?find還可以支持表達式關系運算,所以可以把最近幾天的數據一天天的加起來:
find ./ -mtime 0 -o -mtime 1 -o -mtime 2 ……雖然比較土,但也算是個方法了。
宣傳語
歷經兩個半月的準備,三次大改版,十七次小改版。le1024終于要和大家見面了。
le1024每天推薦1~3段,有趣、有愛、有故事的視頻。
為您工作、學習、生活之余增加一點快樂的感覺。程序員必看的快樂視頻網站
ls -la
(1)將文件按從新到舊排列,取第一個。
ls -t *.cpp | head -1
(2)將文件按從舊到新排列,取最后一個。
ls -rt *.cpp | tail -1
history
# export HISTTIMEFORMAT='%F %T '
# history | more
使用Ctrl + R 搜索歷史的一個快鍵鍵
如果想執行 第4條命令,那么可以執行!4
!ps 輸入!ps 并回車,將執行以ps打頭的命令
history | tail -4
http://hi.baidu.com/linkage121/item/032729f5d30502c9521c2630
sudo
su是切換用戶的命令,常用的方法是su - username
mkdir
linux mkdir 命令用來創建指定的名稱的目錄,
要求創建目錄的用戶在當前目錄中具有寫權限,
并且指定的目錄名不能是當前目錄中已有的目錄。
mkdir -p test2/test22 遞歸地創建多個目錄
rm -rf test2/test22 遞歸的刪除創建的目錄
mkdir -m 777 test3 創建權限為777的目錄
touch
-r 統一修改文件的修飾的日期
528 touch zz.txt
529 touch -r zz.txt log2012.log log2013.log
touch -t 201211142234.50 log.log
-a 或--time=atime或--time=access或--time=use 只更改存取時間。
-c 或--no-create 不建立任何文檔。
-d 使用指定的日期時間,而非現在的時間。
-f 此參數將忽略不予處理,僅負責解決BSD版本touch指令的兼容性問題。
-m 或--time=mtime或--time=modify 只更改變動時間。
-r 把指定文檔或目錄的日期時間,統統設成和參考文檔或目錄的日期時間相同。
-t 使用指定的日期時間,而非現在的時間。
chmod
http://www.cnblogs.com/peida/archive/2012/11/29/2794010.html
每一個文件或目錄的訪問權限都有三組,每組用三位來表示,
分別為文件作者的讀,寫和執行權限
作者同組的用戶的讀,寫和執行權限
系統中其他用戶的讀,寫和執行權限
-rw-r--r-- 1 root root 296k 11-12 06:03 log2012.log
第一個字符指定了文件類型.
在普通意義上一個目錄也是一個文件
第一個字符是橫線,表示是一個非目錄的文件
如果為d表示是一個目錄,從第二字符開始到第十個字符,3個字符一組,
分別表示了3組用戶對文件或者目錄的權限.權限字符用橫線代表空許可
r代表只讀,w代表寫,x代表可執行
上述文件
表示作者有讀寫權限
作者同組的用戶只有讀權限
其他用戶只有讀權限
權限范圍
u 目錄或者文件的當前用戶
g 目錄或者文件的當前群組
o 除了目錄或者文件的當前用戶或群組之外的用戶或者群組
a 所有的用戶及群組
r : 讀權限, 用數字4表示
w : 寫權限, 用數字2表示
x : 執行權限,用數字1表示
- : 刪除權限,用數字0表示
chmod u=rwx,g=rw,o=r zz (注意逗號的后面不能有空格)
chmod 764 zz
chmod ug+x,o-x log2012.log
chmod g=x log2012.log 把g的權限賦值為x
chown
http://www.cnblogs.com/peida/archive/2012/12/04/2800684.html
http://wenson.iteye.com/blog/212739
通過chown改變文件的擁有者和群組.普通用戶不能將自己的文件該變成其他的擁有者,
其操作權限一般為管理員.
chown mail:mail log2012.log
chown [選項]...[所有者][:[組]]文件...
若
chown root: log2012.log
那么改變之后 root 的所選組也就變成root了
sudo chown -R -v root:root
改變指定目錄以及其子目錄下的所有文件的擁有者和群組
-R 處理制定目錄以及其子目錄下的所有文件
-v 顯示詳細的處理信息
apt-get apt-cache
apt-cache search package 搜索包
apt-cache show package 獲取包的相關信息,如說明、大小、版本等
apt-cache depends package 了解使用依賴
apt-cache rdepends package 是查看該包被哪些包依賴
sudo apt-get install package 安裝包
sudo apt-get install package - - reinstall 重新安裝包
sudo apt-get -f install 修復安裝"-f = ——fix-missing"
sudo apt-get remove package 刪除包
sudo apt-get remove package - - purge 刪除包,包括刪除配置文件等
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安裝的包
sudo apt-get dist-upgrade 升級系統
apt-get source package 下載該包的源代碼
sudo apt-get clean && sudo apt-get autoclean 清理無用的包
sudo apt-get check 檢查是否有損壞的依賴
tar
弄清兩個概念:
打包和壓縮.
打包是指將一大堆的文件或目錄變成一個總的文件
壓縮是將一個大的文件通過一些壓縮算法變成一個小文件
這源于Linux中很多壓縮程序只能針對一個文件進行壓縮,這樣當你想要壓縮
一大堆文件時,你得先將這一大堆文件先打成一個包(tar命令),然后再用壓縮程序進行壓縮(gzip bzip2命令)
http://www.cnblogs.com/peida/archive/2012/11/30/2795656.html
用來壓縮和解壓文件。tar本身不具有壓縮功能。他是調用壓縮功能實現的
3.命令參數:
必要參數有如下:
-c 建立新的壓縮文件
-x 從壓縮的文件中提取文件
-t 顯示壓縮文件的內容
-z 支持gzip解壓文件
-j 支持bzip2解壓文件
-v 顯示操作過程
-f 指定壓縮文件
tar -cvf log.tar log2012.log 僅打包,不壓縮!
tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 壓縮
tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 壓縮
在參數 f 之后的文件檔名是自己取的,我們習慣上都用 .tar 來作為辨識。 如果加 z 參數,則以 .tar.gz 或 .tgz 來代表 gzip 壓縮過的 tar包; 如果加 j 參數,則以 .tar.bz2 來作為tar包名。
tar -zxvf /opt/soft/test/log.tar.gz 將tar包解壓縮
http://www.cnblogs.com/peida/archive/2012/11/30/2795656.html
tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是壓縮!)
.gz
解壓1:gunzip FileName.gz
解壓2:gzip -d FileName.gz
壓縮:gzip FileName
.tar.gz 和 .tgz
解壓:tar zxvf FileName.tar.gz
壓縮:tar zcvf FileName.tar.gz DirName
.bz2
解壓1:bzip2 -d FileName.bz2
解壓2:bunzip2 FileName.bz2
壓縮: bzip2 -z FileName
.tar.bz2
解壓:tar jxvf FileName.tar.b
date
date '+This date noew is =>%x, time is now =>%X, thank you!'
This date noew is =>2013年12月23日, time is now =>21時40分15秒, thank you!
sudo date -s 991128
[root@Gman root]# date -d next-day +%Y%m%d
20060328
[root@Gman root]# date -d last-day +%Y%m%d
20060326
[root@Gman root]# date -d yesterday +%Y%m%d
20060326
[root@Gman root]# date -d tomorrow +%Y%m%d
20060328
[root@Gman root]# date -d last-month +%Y%m
200602
[root@Gman root]# date -d next-month +%Y%m
200604
[root@Gman root]# date -d next-year +%Y
2007
sudo date -s '131223 21:59:00'
date -d '20131212 13:13:00'
date 設置時間格式
命令中各選項的含義分別為:
-d datestr, --date datestr 顯示由datestr描述的日期
-s datestr, --set datestr 設置datestr 描述的日期
-u, --universal 顯示或設置通用時間
cat
1.一次顯示整個文件。
$ cat filename
2.從鍵盤創建一個文件。
$ cat > filename
只能創建新文件,不能編輯已有文件.
3.將幾個文件合并為一個文件。
$cat file1 file2 > file
-n 或 –number 由 1 開始對所有輸出的行數編號
-b 或 –number-nonblank 和 -n 相似,只不過對于空白行不編號
-s 或 –squeeze-blank 當遇到有連續兩行以上的空白行,就代換為一行的空白行
-v 或 –show-nonprinting
范例:
把 linuxfile1 的檔案內容加上行號后輸入 linuxfile2 這個檔案里
cat -n linuxfile1 > linuxfile2
把 linuxfile1 和 linuxfile2 的檔案內容加上行號(空白行不加)之后將內容附加到 linuxfile3 里。
cat -b linuxfile1 linuxfile2 >> linuxfile3
cat /dev/null > /etc/test.txt 此為清空/etc/test.txt檔案內容
cp
cp -i file1 file2 1、將文檔 file1復制成file2,復制后名稱被改file2
cp -i file1 dir1 2、將文檔 file1復制到dir1目錄下,復制后名稱仍未file1
cp -r dir1 dir2
將目錄dir1 復制到dir2 目錄下,復制結果目錄改名為dir2
mv
-b :若需覆蓋文件,則覆蓋前先行備份。
-f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;
-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!
-u :若目標文件已經存在,且 source 比較新,才會更新(update)
-t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目標目錄,該選項適用于移動多個源文件到一個目錄的情況,此時目標目錄在前,源文件在后。
mv test.log test1.txt 文件改名
mv test1.txt test3 移動文件
mv log1.txt log2.txt log3.txt test3 實例三:將文件log1.txt,log2.txt,log3.txt移動到目錄test3中。
mv -i log1.txt log2.txt 將文件file1改名為file2已經存在,則詢問是否覆蓋
mv -f log3.txt log2.txt 將文件file1改名為file2,即使file2存在,也是直接覆蓋掉
mv dir1 dir2 目錄的移動
mv * ../ 移動當前文件夾下的所有文件到上一級目錄
pwd
目錄連接鏈接時,pwd -P 顯示出實際路徑,而非使用連接(link)路徑;pwd顯示的是連接路徑
cd
cd /
cd ~
grep
[options]主要參數:
-c:只輸出匹配行的計數。
-I:不區分大 小寫(只適用于單字符)。
-h:查詢多文件時不顯示文件名。
-l:查詢多文件時只輸出包含匹配字符的文件名。
-n:顯示匹配行及 行號。
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:顯示不包含匹配文本的所有行。
$ grep ‘test’ d*
顯示所有以d開頭的文件中包含 test的行。
$ grep ‘test’ aa bb cc
顯示在aa,bb,cc文件中匹配test的行。
$ grep ‘[a-z]{5}’ aa
顯示所有包含每個字符串至少有5個連續小寫字符的字符串的行。
$ grep ‘w(es)t.\1′ aa
如果west被匹配,則es就被存儲到內存中,并標記為1,然后搜索任意個字符(.),這些字符后面緊跟著 另外一個es(\1),找到就顯示該行。如果用egrep或grep -E,就不用”\”號進行轉義,直接寫成’w(es)t.*\1′就可以了
man
man bash | col -b > bash.txt
ps aux|grep
aux 分別代表
顯示其他用戶啟動的進程(a)
查看系統中屬于自己的進程(x)
啟動這個進程的用戶和它啟動的時間(u)
kill/pkill
linux 中的kill命令用來種植指定的進程(terminate a process)
的運行,是Linux下進程管理的常用的命令,通常
終止一個前臺進程可以使用Ctrl+C鍵,但是對于一個后臺進程
就須用kill命令來終止。
http://www.cnblogs.com/peida/archive/2012/12/20/2825837.html
whereis
find是最常見和最強大的查找命令
find . -name "my" 搜索當前目錄(含有子目錄) 所有文件名以my開頭的文件
find . -name "my" -ls 搜索當前目錄中,所有文件名以my開頭的文件,并顯示他們的詳細信息
find . -type f -mmin -10 搜索當前目錄中,所有過去10分鐘更新過的普通文件
如果不加-type f 參數,則搜索普通文件+特殊文件+目錄
locate命令其實是“find -name”的另一種寫法,但是要比后者快得多,
原因在于它不搜索具體目錄,而是搜索一個數據庫(/var/lib/locatedb),
這個數據庫中含有本地所有文件信息。Linux系統自動創建這個數據庫,并且每天自動更新一次,所以使用locate命令查不到最新變動過的文件。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新數據庫。
wget
Linux系統中的 wget 是一個下載文件的工具。
它用在命令行下,對于Linux用戶是必不可少的工具,
我們經常要下載一些軟件或從遠程服務器恢復備份到本地服務器。
wget支持HTTP HTTPS和FTP協議,可以使用HTTP代理
所謂的自動下載是指,wget可以在用戶退出系統之后在后臺執行
這意味你可以登錄系統,啟動一個wget下載任務,
然后退出系統,wget將在后臺執行,直到任務完成。
相對于其他大部分瀏覽器在下載大量數據時,需要用于一直的參與,這省去了極大的麻煩。
使用wget下載單個文件
wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip
使用wget- O 下載并以不同的文件名保存
wget -O wordpress.zip http://www.minjieren.com/download.aspx?id=1080
限制下載的速度
wget --limit-rate=300k http://www.minjieren.com/wordpress-3.1-zh_CN.zip
使用wget -c 斷點續傳
wget -c http://www.minjieren.com/wordpress-3.1-zh_CN.zip
使用wget-c 重新啟動下載中斷的文件,對于我們下載大文件時很有幫助
service
service命令,顧名思義,就是用于管理Linux操作系統中服務的命令
1 聲明, 這個命令不是在所有的linux發行版都有
2 此命令位于/sbin 目錄下,用file命令查看他就是一個腳本命令
3 去/etc/init.d目錄下尋找相應的服務,進行開啟和關閉等操作
4 開啟httpd服務器: service httpd start
start 可以換成restart 表示重新啟動,stop表示關閉,reload表示重新載入配置
關閉mysql服務器: service mysqld stop
強烈建議大家將service命令替換為/etc/init.d/mysqld stop
alias
用戶可以利用alias,自定指令的別名。若輸入alias,則可以列出所有的別名設置
alias的效力僅及與該次登錄的操作。
可以在/etc/profile或自己的~/.bashrc 中設定指定的別名
還有,如果你想給每一位用戶都生效的別名,請把alias la='ls -al' 一行加在/etc/bashrc最后面
/etc/bashrc 設置給全系統的
~/.bashrc 一個是設置給單用戶使用的
df/du
df -h 可以顯示目前所有檔案的最大可用空間及使用
-h表示使用[Human-readable]的輸出 也就是在檔案系統大小使用GB, MB等
易讀的格式
我們可以使用參數-i 來查看目前檔案系統inode的使用情形
所謂的 inode 是用來存放檔案及目錄的基本信息 (metadata),
包含時間、檔名、使用者及群組等。在分割扇區時,系統會先做出一堆
inode 以供以后使用,inode 的數量關系著系統中可以建立的檔案及目錄總數。
du
顯示每個文件和目錄的磁盤使用情況
du -h --max-depth=1 |sort -rh| more
輸出每個目錄的使用情況,并且按照空間大小,倒序排列
rm
-i 刪除 刪除前詢問是否需要刪除;
-f 強制刪除,無需確認。
-r 或-R 或--recursive 將目錄以及目錄下的文件或者目錄逐一刪除。
-d 或--directory 刪除目錄
1,實踐中發現除了-r外,其他的單個參數都不能夠對目錄(不管是否為空)進行刪除操作。
echo
利用 echo $PATH echo ${PATH}
diff
diff命令能比較單個文件或目錄內容,如果制定比較的是文件,則只有當輸入為文本文件時才有效.
以逐行的方式,比較文本文件的異同之處.
如果指定比較的是目錄的時候,diff命令會比較兩個目錄下名字相同的文件,列出不同的二進制
公共子目錄和只在一個目錄出現的文件
diff 的 normal 顯示格式有三種提示
a - add
c - change
d - delete
www.cnblogs.com/peida/archive/2012/12/12/2814048.html
wget
ifconfig
Linux 下網卡命令
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
配置網卡的IP地址
ifconfig eth0 192.168.0.1 netmask 255.255.255.0
若在eth0上配置了192.168.0.1 的IP地址及24位掩碼, 若想在eth0上在配置一個
可以使用下面的方法
ifconfig eth0:0 192.168.1.1 netmask 255.255.255.0
netstat
netstat 可以用來顯示網絡鏈接,路由表,接口統計,偽鏈接和組播成員
netstat -a -> ss 網絡連接
netstat -r -> ip route 路由表
netstat -i -> ip -s link 統計接口
netstat -M -> ss 偽鏈接
netstat -g -> ip maddr 組播成員
top
top命令是Linux下常用的性能分析工具,
能夠實時顯示系統中各個進程的資源占用狀況,
類似于Windows的任務管理器。
下面詳細介紹它的使用方法。top是一個動態顯示過程,
即可以通過用戶按鍵來不斷刷新當前狀態.
如果在前臺執行該命令,它將獨占前臺,
直到用戶終止該程序為止.比較準確的說,
top命令提供了實時的對系統處理器的狀態監視.
它將顯示系統中CPU最“敏感”的任務列表.
該命令可以按CPU使用.內存使用和執行時間對任務
進行排序;而且該命令的很多特性都可以通過
交互式命令或者在個人定制文件中進行設定.
http://www.cnblogs.com/peida/archive/2012/12/24/2831353.html
cron
crond 是linux 用來定期執行程序的命令.當安裝完成系統之后,
默認便會啟動此任務調度命令.crond命令每分鐘會定期檢查是否有要執行的工作
如果有要執行的工作便會自動執行該工作.
1 系統執行的工作: 系統周期性所要執行的工作, 如備份系統數據, 清理緩存
2 個人執行的工作: 某個用戶定期要做的工作, 例如每隔10分鐘檢查郵件服務器是否有新郵件
-e 執行文件編輯器來設定時程表
-r 刪除目前的時稱表
-l 列出目前的時程表
/etc/init.d/cron restart
說明 取值范圍
第一段 代表分鐘 0~59
第二段 代表小時 0~23
第三段 代表日期 1~31
第四段 代表月份 1~12
第五段 代表星期 0~6 其中 0 表示星期日
第六段 要執行的命令 命令
前五個可以全寫 *
1 * * * * date>>$HOME/test.txt
每個小時的第一分鐘執行一段命令
*/1 * * * * data>>$HOME/test.txt
每隔一分種執行一段命令
3 * * * * root /home/meng/hello.sh
每小時的第3分鐘執行
在 12 月內, 每天的早上 6 點到 12 點中,每隔 20 分鐘執行一次 /usr/bin/backup :
*/20 6-12 * 12 * /usr/bin/backup
git
git和 svn區別
1
Git是分布式的
SVN 是非分布式的
2
GIT把內容按元數據方式存儲,而SVN是按文件
所有的資源控制系統都是把文件的元信息隱藏在一個類似.svn,.cvs
等的文件夾里。如果你把.git目錄的體積大小跟.svn比較,
你會發現它們差距很大。因為,.git目錄是處于你的機器上的一個克隆版的版本庫,
它擁有中心版本庫上所有的東西,例如標簽,分支,版本記錄等。
3 GIT沒有一個全局的版本號,而SVN有
4 GIT的內容完整性要優于SVN
創建git遠程倉庫并在本地下載
git remote -v 查看遠程的對應克隆的地址
git clone git://github.com/ibugs/sample_app.git
添加一個新的遠程庫,可以指定一個簡單的名字,以便將來引用,運行
git remote add [shortname] [url]
$ git remote add pb git://github.com/paulboone/ticgit.git
當遠程創建了一個倉庫
git remote add origin https://github.com/ibugs/job.git
git push -u origin master
我們現在在rspec-test的庫,我需要新添加一個遠程的庫
git remote add tt https://github.com/ibugs/job.git
git push -u tt master
添加完遠程的庫之后,我就可以把遠程的庫中的內容pull 下來
git pull tt master
重命名
git remote rename tt zz
刪除這個遠程倉庫
git remote rm paul
創建分支,修改文件,上傳文件
git flow feature start rm
git add zzz.txt
git commmit -m ""
git push origin rm
你想添加一個目錄,但是目錄里面所有的文件你都不想上傳。
假如: web/upload 這個目錄吧。
在上面這個目錄下添加 .gitignore ,內容如下:
Ignore everything in this directory
Except this file
!.gitignore
保存后,然后:
git add web/upload
git remote update -p
git diff/checkout/reset
工作區,暫存區,版本庫區別
工作區 --> :電腦能看到的目錄
版本庫 --> :工作區中的.git文件就是版本庫
暫存區 --> :通過git add把文件放入的區域叫做暫存區.最后通過commit統一進行提交
git checkout -- file.txt 撤銷修改,返回到最后依次commit或者add狀態
場景1
當你改亂了工作區某個文件的內容, 想直接丟棄工作去的修改時,用命令git checkout -- file
場景2
當你不但該亂了工作區某個文件的內容,還添加了暫存區時,想丟棄修改,分兩步
第一步用命令git reset HEAD file 就回到了場景1, 然后按照場景1的操作
從遠程到克隆到本地倉庫
git clone https://github.com/name/gitskills.git
標簽的管理,我們通常現在版本庫中打上標簽,這樣,就唯一確定了打標簽時候的版本.
將來無論什么時候,某個標簽的版本,就是把那個打標簽的時刻的歷史版本取出來.所以,
標簽也是版本庫的一個快照.
git tag v1.0
git tag 查看標簽
git tag v1.0 master 如果再歷史記錄中忘記了標簽,可以先從log中查看歷史,然后對應的id打標簽
git tag -d v0.1 刪除標簽
git push origin :refs/tags/v1.0 刪除遠程的tag
工作區:--> 就是你電腦里能看到的目錄
版本庫:--> Git的版本庫中存了很多東西,其中最重要的稱為stage(或者叫indexde 暫存區),還有Git為我們自動創建的第一個分支
master 以及執行master的一個指針叫HEAD
版本庫中包含了 叫做 暫存區的東西
[ Working Directory ] -> (git add file ) -> [ Stage(index) ] -> ( git commit ) -> [History]
[ History ] -> ( git reset -- files ) -> [ Stage ] -> ( git checkout --file ) -> [ Working Directory ]
特殊的情況
git checkout HEAD -- files 回滾到復制最后一次提交
git規范:不能使用 commit -a,上傳前一定要diff
git log的各種參數和用法
git log
git log -2 查看兩次提交
git log --graph 以圖形的方式來顯示提交日志
git log --oneline --decorate 顯示所有的提交,只顯示提交 前面只有7個字符的編碼
git log --pretty = oneline 文件名
git log --stat -2 查看近兩次提交修改得文件
git merge --squash解析
在 my_branch 上執行 git merge --squash [otherbranch]
會把otherbranch 上的所有修改放在my_branch的暫存區上.
然后進行提交,提交之后,會在my_branch 分支上生成一個commit信息,可以保留suqsh_branch的提交信息
git flow
開發分支的
git flow feature start <your feature>
git flow feature finish <your feature>
git flow feature publish <name>
git push origin <name>
開發一個release的過程
git flow release start <release>
git flow release finish <release>
develop, master, feature, release, hotfix的區別,畫圖表示
git flow命令和git命令的對應關系
git flow feature start <your feature>
--相等于
git checkout -b myfeature develop
git flow feature finish <your feature>
--相等于
git checkout develop
git merge --no--ff myfeature
git branch -d myfeature
git push origin develop
git flow feature publish <xxx>
git push origin featureAdd
git config “branch.featureAdd.remote” “origin”
git config “branch.featureAdd.merge” “refs/heads/featureAdd”
git checkout “featureAdd”
http://yakiloo.com/getting-started-git-flow/
git flow release start <xxx>
$ git checkout -b release-1.2 develop
$ git commit -a -m "Bumped version number to 1.2"
git flow release finish <xxx>
$ git checkout master
$ git merge --no-ff release-1.2
$ git tag -a 1.2
$ git checkout develop
$ git merge --no-ff release-1.2
$ git branch -d release-1.2
git flow hotfix start <release>
git flow hotfix finish <release>
修補bug
git flow hotfix start <release>
$ git checkout -b hotfix-1.2.1 master
$ git commit -a -m "Bumped version number to 1.2.1"
$ git commit -m "Fixed severe production problem"
git flow hotfix finish <release>
$ git checkout master
$ git merge --no-ff hotfix-1.2.1
$ git tag -a 1.2.1
$ git checkout develop
$ git merge --no-ff hotfix-1.2.1
$ git branch -d hotfix-1.2.1
http://nvie.com/posts/a-successful-git-branching-model/
start,finish,publish操作
從git和git flow角度,通過命令盡可能詳盡地述一個redmine工單(#12345)從開發到上線到服務器的全過程。
lite 上線過程
git flow release start 29339
git flow release finish 29339
git push origin master
git push origin develop
git push --tags
git checkout master
git remote update --prune
git pull origin master
上線 過程
git checkout develop
git pull origin develop
git flow feature start <12345>
git checkout rm12345_wh_20132222_xxxx
git merge develop
git flow feature publish 分支
git flow feature finish rm12345_20131011_wh_xxxx
git checkout master