Git簡介及操作
Git簡介及操作
版本控制系統
本地版本控制系統:采用某種簡單的數據庫來記錄文件的歷次更新差異。
集中化的版本控制系統(Centralized Version Control Systems,簡稱 CVCS): 這類系統,諸如 CVS、Subversion(SVN) 以及 Perforce 等,都有一個單一的集中管理的服務器,保存所有文件的修訂版本,而協同工作的人們都通過客戶端連到這臺服務器,取出最新的文件或者提交更新。
分布式版本控制系統(Distributed Version Control System,簡稱 DVCS):在這類系統中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客戶端并不只提取最新版本的文件快照,而是把代碼倉庫完整地鏡像下來。 這么一來,任何一處協同工作用的服務器發生故障,事后都可以用任何一個鏡像出來的本地倉庫恢復。 因為每一次的克隆操作,實際上都是一次對代碼倉庫的完整備份。
Git操作命令
1)git clone命令
用于克隆遠程存儲庫
1.先創建一個存儲庫目錄,在此目錄右鍵git bash
彈出git命令行
輸入以下命令
$ git clone http://git.oschina.net/yiibai/sample.git
還可以配置參數,例如–recursive,作用:initialize submodules in the clone
$ git clone --recursive https://github.com/dmlc/xgboost
這些鏈接一般可以在網上倉庫找到
2)git常用操作,實際上是linux命令
系統信息
arch 顯示機器的處理器架構(1)
uname -m 顯示機器的處理器架構(2)
uname -r 顯示正在使用的內核版本
dmidecode -q 顯示硬件系統部件 - (SMBIOS / DMI)
hdparm -i /dev/hda 羅列一個磁盤的架構特性
hdparm -tT /dev/sda 在磁盤上執行測試性讀取操作
cat /proc/cpuinfo 顯示CPU info的信息
cat /proc/interrupts 顯示中斷
cat /proc/meminfo 校驗內存使用
cat /proc/swaps 顯示哪些swap被使用
cat /proc/version 顯示內核的版本
cat /proc/net/dev 顯示網絡適配器及統計
cat /proc/mounts 顯示已加載的文件系統
lspci -tv 羅列 PCI 設備
lsusb -tv 顯示 USB 設備
date 顯示系統日期
cal 2007 顯示2007年的日歷表
date 041217002007.00 設置日期和時間 - 月日時分年.秒
clock -w 將時間修改保存到 BIOS
文件和目錄
cd /home 進入 '/ home' 目錄'
cd .. 返回上一級目錄
cd ../.. 返回上兩級目錄
cd 進入個人的主目錄
cd ~user1 進入個人的主目錄
cd - 返回上次所在的目錄
pwd 顯示工作路徑
ls 查看目錄中的文件
ls -F 查看目錄中的文件
ls -l 顯示文件和目錄的詳細資料
ls -a 顯示隱藏文件
ls *[0-9]* 顯示包含數字的文件名和目錄名
tree 顯示文件和目錄由根目錄開始的樹形結構(1)
lstree 顯示文件和目錄由根目錄開始的樹形結構(2)
mkdir dir1 創建一個叫做 'dir1' 的目錄'
mkdir dir1 dir2 同時創建兩個目錄
mkdir -p /tmp/dir1/dir2 創建一個目錄樹
rm -f file1 刪除一個叫做 'file1' 的文件'
rmdir dir1 刪除一個叫做 'dir1' 的目錄'
rm -rf dir1 刪除一個叫做 'dir1' 的目錄并同時刪除其內容
rm -rf dir1 dir2 同時刪除兩個目錄及它們的內容
mv dir1 new_dir 重命名/移動 一個目錄
cp file1 file2 復制一個文件
cp dir/* . 復制一個目錄下的所有文件到當前工作目錄
cp -a /tmp/dir1 . 復制一個目錄到當前工作目錄
cp -a dir1 dir2 復制一個目錄
ln -s file1 lnk1 創建一個指向文件或目錄的軟鏈接
ln file1 lnk1 創建一個指向文件或目錄的物理鏈接
touch -t 0712250000 file1 修改一個文件或目錄的時間戳 - (YYMMDDhhmm)
file file1 outputs the mime type of the file as text
iconv -l 列出已知的編碼
iconv -f fromEncoding -t toEncoding inputFile > outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding.
find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" \; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick)
文件搜索
find / -name file1 從 '/' 開始進入根文件系統搜索文件和目錄
find / -user user1 搜索屬于用戶 'user1' 的文件和目錄
find /home/user1 -name \*.bin 在目錄 '/ home/user1' 中搜索帶有'.bin' 結尾的文件
find /usr/bin -type f -atime +100 搜索在過去100天內未被使用過的執行文件
find /usr/bin -type f -mtime -10 搜索在10天內被創建或者修改過的文件
find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 結尾的文件并定義其權限
find / -xdev -name \*.rpm 搜索以 '.rpm' 結尾的文件,忽略光驅、捷盤等可移動設備
locate \*.ps 尋找以 '.ps' 結尾的文件 - 先運行 'updatedb' 命令
whereis halt 顯示一個二進制文件、源碼或man的位置
which halt 顯示一個二進制文件或可執行文件的完整路徑
3)git submodule
用于初始化,更新或檢查子模塊
git submodule [--quiet] add [<options>] [--] <repository> [<path>]
git submodule [--quiet] status [--cached] [--recursive] [--] [<path>…?]
git submodule [--quiet] init [--] [<path>…?]
git submodule [--quiet] deinit [-f|--force] (--all|[--] <path>…?)
git submodule [--quiet] update [<options>] [--] [<path>…?]
git submodule [--quiet] summary [<options>] [--] [<path>…?]
git submodule [--quiet] foreach [--recursive] <command>
git submodule [--quiet] sync [--recursive] [--] [<path>…?]
git submodule [--quiet] absorbgitdirs [--] [<path>…?]
示例:
1.添加子模塊
$ git submodule add http://github.com/chaconinc/DbConnector
Cloning into 'DbConnector'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 0), reused 11 (delta 0)
Unpacking objects: 100% (11/11), done.
Checking connectivity... done.
默認情況下,子模塊會將子項目放到一個與倉庫同名的目錄中,本例中是 “DbConnector”。 如果你想要放到其他地方,那么可以在命令結尾添加一個不同的路徑。
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: .gitmodules
new file: DbConnector
.gitmodules 文件。 該置文件保存了項目 URL 與已經拉取的本地目錄之間的映射:
$ cat .gitmodules
[submodule "DbConnector"]
path = DbConnector
url = http://github.com/chaconinc/DbConnector
2.克隆含有子模塊的目錄:
克隆一個含有子模塊的項目,克隆這樣的項目時,默認會包含該子模塊目錄,但其中還沒有任何文件。
$ git clone http://github.com/chaconinc/MainProject
Cloning into 'MainProject'...
remote: Counting objects: 14, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 14 (delta 1), reused 13 (delta 0)
Unpacking objects: 100% (14/14), done.
Checking connectivity... done.
$ cd MainProject
$ ls -la
total 16
drwxr-xr-x 9 schacon staff 306 Sep 17 15:21 .
drwxr-xr-x 7 schacon staff 238 Sep 17 15:21 ..
drwxr-xr-x 13 schacon staff 442 Sep 17 15:21 .git
-rw-r--r-- 1 schacon staff 92 Sep 17 15:21 .gitmodules
drwxr-xr-x 2 schacon staff 68 Sep 17 15:21 DbConnector
-rw-r--r-- 1 schacon staff 756 Sep 17 15:21 Makefile
drwxr-xr-x 3 schacon staff 102 Sep 17 15:21 includes
drwxr-xr-x 4 schacon staff 136 Sep 17 15:21 scripts
drwxr-xr-x 4 schacon staff 136 Sep 17 15:21 src
$ cd DbConnector/
$ ls
$
其中有 DbConnector 目錄,不過是空的。 你必須運行兩個命令:git submodule init 用來初始化本地配置文件,而 git submodule update 則從該項目中抓取所有數據并檢出父項目中列出的合適的提交。
$ git submodule init
Submodule 'DbConnector' (http://github.com/chaconinc/DbConnector) registered for path 'DbConnector'
$ git submodule update
Cloning into 'DbConnector'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 0), reused 11 (delta 0)
Unpacking objects: 100% (11/11), done.
Checking connectivity... done.
Submodule path 'DbConnector': checked out 'c3f01dc8862123d317dd46284b05b6892c7b29bc'
不過還有更簡單一點的方式。 如果給 git clone 命令傳遞 –recursive 選項,它就會自動初始化并更新倉庫中的每一個子模塊。
$ git clone --recursive http://github.com/chaconinc/MainProject
Cloning into 'MainProject'...
remote: Counting objects: 14, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 14 (delta 1), reused 13 (delta 0)
Unpacking objects: 100% (14/14), done.
Checking connectivity... done.
Submodule 'DbConnector' (http://github.com/chaconinc/DbConnector) registered for path 'DbConnector'
Cloning into 'DbConnector'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 0), reused 11 (delta 0)
Unpacking objects: 100% (11/11), done.
Checking connectivity... done.
Submodule path 'DbConnector': checked out 'c3f01dc8862123d317dd46284b05b6892c7b29bc'
智能推薦
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
猜你喜歡
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...
styled-components —— React 中的 CSS 最佳實踐
https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...
19.vue中封裝echarts組件
19.vue中封裝echarts組件 1.效果圖 2.echarts組件 3.使用組件 按照組件格式整理好數據格式 傳入組件 home.vue 4.接口返回數據格式...