當前位置:編程學習大全網 - 源碼下載 - git mv命令如何使用

git mv命令如何使用

git 命令 (gnu interactive tools)

功能說明:文字模式下的文件管理員。

語 法:git 命令

補充說明:git命令是用來管理文件的程序,它十分類似DOS下的Norton Commander,具有互動式操作界面。它的操作方法和Norton Commander幾乎壹樣,略訴如下:

F1 :執行info指令,查詢指令相關信息,會要求您輸入欲查詢的名稱。

F2 :執行cat指令,列出文件內容。

F3 :執行gitview指令,觀看文件內容。

F4 :執行vi指令,編輯文件內容。

F5 :執行cp指令,復制文件或目錄,會要求您輸入目標文件或目錄。

F6 :執行mv指令,移動文件或目錄,或是更改其名稱,會要求您輸入目標文件或目錄。

F7 :執行mkdir指令,建立目錄。

F8 :執行rm指令,刪除文件或目錄。

F9 :執行make指令,批處理執行指令或編譯程序時,會要求您輸入相關命令。

F10 :離開git文件管理員。

----------------- Git命令具體使用-------------------------------

Git是壹個分布式的版本控制工具,本篇文章從介紹Git開始,重點在於介紹Git的基本命令和使用技巧,讓妳嘗試使用Git的同時,體驗到原來壹個版本控制工具可以對開發產生如此之多的影響,文章分為兩部分:

第壹部分,介紹Git的壹些常用命令,其中穿插介紹Git的基本概念和原理

第二部分,重點介紹Git的使用技巧,最後會在Git Hub上創建壹個開源項目開啟妳的Git實戰之旅

Git是什麽

Git 在Wikipedia上的定義:它是壹個免費的、分布式的版本控制工具,或是壹個強調了速度快的源代碼管理工具。

Git 最初被Linus Torvalds開發出來用於管理Linux內核的開發。每壹個Git的工作目錄都是壹個完全獨立的代碼庫,並擁有完整的歷史記錄和版本追蹤能力,不依賴於網絡和中心服務器。

Git 的出現減輕了許多開發者和開源項目對於管理分支代碼的壓力,由於對分支的良好控制,更鼓勵開發者對自己感興趣的項目做出貢獻。其實許多開源項目包括 Linux kernel、Samba、X.org Server、Ruby on Rails,都已經過渡到使用Git作為自己的版本控制工具。對於我們這些喜歡寫代碼的開發者嘛,有兩點最大的好處,我們可以在任何地點(在上班的地鐵 上)提交自己的代碼和查看代碼版本;我們可以開許許多多個分支來實踐我們的想法,而合並這些分支的開銷幾乎可以忽略不計。

Git 1+1

現在進入本篇文章真正的主題,介紹壹下Git的基本命令和操作,會從Git的版本庫的初始化,基本操作和獨有的常用命令三部分著手,讓大家能夠開始使用Git。

Git 通常有兩種方式來進行初始化:

git clone: 這是較為簡單的壹種初始化方式,當妳已經有壹個遠程的Git版本庫,只需要在本地克隆壹份

例如:git clone git://github.com/someone/some_project.git some_project

上面的命令就是將'git://github.com/someone/some_project.git'這個URL地址的遠程版本庫完全克隆到本地some_project目錄下面

git init和git remote:這種方式稍微復雜壹些,當妳本地創建了壹個工作目錄,妳可以進入這個目錄,使用'git init'命令進行初始化,Git以後就會對該目錄下的文件進行版本控制,這時候如果妳需要將它放到遠程服務器上,可以在遠程服務器上創建壹個目錄,並把 可訪問的URL記錄下來,此時妳就可以利用'git remote add'命令來增加壹個遠程服務器端,

例如:git remote add origin git://github.com/someone/another_project.git

上面的命令就會增加URL地址為'git: //github.com/someone/another_project.git',名稱為origin的遠程服務器,以後提交代碼的時候只需要使用 origin別名即可

Git 的基本命令

現在我們有了本地和遠程的版本庫,讓我們來試著用用Git的基本命令:

git pull:從其他的版本庫(既可以是遠程的也可以是本地的)將代碼更新到本地,例如:'git pull origin master'就是將origin這個版本庫的代碼更新到本地的master主枝,該功能類似於SVN的update

git add:是 將當前更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示記入了版本歷史中,這也是提交之前所需要執行的壹步,例如'git add app/model/user.rb'就會增加app/model/user.rb文件到Git的索引中,該功能類似於SVN的add

git rm:從當前的工作空間中和索引中刪除文件,例如'git rm app/model/user.rb',該功能類似於SVN的rm、del

git commit:提交當前工作空間的修改內容,類似於SVN的commit命令,例如'git commit -m story #3, add user model',提交的時候必須用-m來輸入壹條提交信息,該功能類似於SVN的commit

git push:將本地commit的代碼更新到遠程版本庫中,例如'git push origin'就會將本地的代碼更新到名為orgin的遠程版本庫中

git log:查看歷史日誌,該功能類似於SVN的log

git revert:還原壹個版本的修改,必須提供壹個具體的Git版本號,例如'git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20',Git的版本號都是生成的壹個哈希值

上面的命令幾乎都是每個版本控制工具所公有的,下面就開始嘗試壹下Git獨有的壹些命令:

git branch:對分支的增、刪、查等操作,例如'git branch new_branch'會從當前的工作版本創建壹個叫做new_branch的新分支,'git branch -D new_branch'就會強制刪除叫做new_branch的分支,'git branch'就會列出本地所有的分支

git checkout:Git的checkout有兩個作用,其壹是在不同的branch之間進行切換,例如'git checkout new_branch'就會切換到new_branch的分支上去;另壹個功能是還原代碼的作用,例如'git checkout app/model/user.rb'就會將user.rb文件從上壹個已提交的版本中更新回來,未提交的內容全部會回滾

git rebase:用下面兩幅圖解釋會比較清楚壹些,rebase命令執行後,實際上是將分支點從C移到了G,這樣分支也就具有了從C到G的功能

git reset:將當前的工作目錄完全回滾到指定的版本號,假設如下圖,我們有A-G五次提交的版本,其中C的版本號是 bbaf6fb5060b4875b18ff9ff637ce118256d6f20,我們執行了'git reset bbaf6fb5060b4875b18ff9ff637ce118256d6f20'那麽結果就只剩下了A-C三個提交的版本

git stash:將當前未提交的工作存入Git工作棧中,時機成熟的時候再應用回來,這裏暫時提壹下這個命令的用法,後面在技巧篇會重點講解

git config:利用這個命令可以新增、更改Git的各種設置,例如'git config branch.master.remote origin'就將master的遠程版本庫設置為別名叫做origin版本庫,後面在技巧篇會利用這個命令個性化設置妳的Git,為妳打造獨壹無二的 Git

git tag:可以將某個具體的版本打上壹個標簽,這樣妳就不需要記憶復雜的版本號哈希值了,例如妳可以使用'git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20'來標記這個被妳還原的版本,那麽以後妳想查看該版本時,就可以使用 revert_version標簽名,而不是哈希值了

Git 之所以能夠提供方便的本地分支等特性,是與它的文件存儲機制有關的。Git存儲版本控制信息時使用它自己定義的壹套文件系統存儲機制,在代碼根目錄下有壹個.git文件夾,會有如下這樣的目錄結構:

有 幾個比較重要的文件和目錄需要解釋壹下:HEAD文件存放根節點的信息,其實目錄結構就表示壹個樹型結構,Git采用這種樹形結構來存儲版本信息,那麽 HEAD就表示根;refs目錄存儲了妳在當前版本控制目錄下的各種不同引用(引用指的是妳本地和遠程所用到的各個樹分支的信息),它有heads、 remotes、stash、tags四個子目錄,分別存儲對不同的根、遠程版本庫、Git棧和標簽的四種引用,妳可以通過命令'git show-ref'更清晰地查看引用信息;logs目錄根據不同的引用存儲了日誌信息。因此,Git只需要代碼根目錄下的這壹個.git目錄就可以記錄完 整的版本控制信息,而不是像SVN那樣根目錄和子目錄下都有.svn目錄。那麽下面就來看壹下Git與SVN的區別吧

Git與SVN的不同

SVN(Subversion)是當前使用最多的版本控制工具。與它相比較,Git 最大的優勢在於兩點:易於本地增加分支和分布式的特性。

下面兩幅圖可以形象的展示Git與SVN的不同之處

------------

對 於易於本地增加分支,圖中Git本地和服務器端結構都很靈活,所有版本都存儲在壹個目錄中,妳只需要進行分支的切換即可達到在某個分支工作的效果。而 SVN則完全不同,如果妳需要在本地試驗壹些自己的代碼,只能本地維護多個不同的拷貝,每個拷貝對應壹個SVN服務器地址。舉壹個實際的例子,以前我所在 的小組使用SVN作為版本控制工具,當我正在試圖增強壹個模塊,工作做到壹半,由於會改變原模塊的行為導致代碼服務器上許多測試的失敗,所以並沒有提交代 碼。這時候上級對我說,現在有壹個很緊急的Bug需要處理, 必須在兩個小時內完成。我只好將本地的所有修改diff,並輸出成為壹個patch文 件,然後回滾有關當前任務的所有代碼,再開始修改Bug的任務,等到修改好後,在將patch應用回來。前前後後要完成多個繁瑣的步驟,這還不計中間代碼 發生沖突所要進行的工作量。可是如果使用Git, 我們只需要開壹個分支或者轉回到主分支上,就可以隨時開始Bug修改的任務,完成之後,只要切換到原來的分支就可以優雅的繼續以前的任務。只要妳願意,每 壹個新的任務都可以開壹個分支,完成後,再將它合並到主分支上,輕松而優雅。

分布式對於Git而言,妳可以本地提交代碼,所以在上面的圖 中,Git有利於將壹個大任務分解,進行本地的多次提交,而SVN只能在本地進行大量的壹次性更改,導致將來合並到主幹上造成巨大的風險。Git的代碼日 誌是在本地的,可以隨時查看。SVN的日誌在服務器上的,每次查看日誌需要先從服務器上下載下來。我工作的小組,代碼服務器在美國,每次查看小組幾年前所 做的工作時,日誌下載就需要十分鐘,這不能不說是壹個痛苦。後來我們遷移到Git上,利用Git日誌在本地的特性,我用Ruby編寫了壹個Rake腳本, 可以查看某個具體任務的所有代碼歷史,每次只需要幾秒鐘,大大方便我的工作。當然分布式並不是說用了Git就不需要壹個代碼中心服務器,如果妳工作在壹個 團隊裏,還是需要壹個服務器來保存所有的代碼的。

總結

本篇介紹了Git的基本概念、壹些常用命令和原理,大家可以嘗試動手體會壹下,下壹篇會重點介紹Git命令的使用技巧,Git附帶的工具,最後會在Git Hub上創建壹個開源項目,敬請期待

  • 上一篇:eclipse alibaba代碼規範插件怎麽使用
  • 下一篇:Python現在的就業薪資怎麽樣?
  • copyright 2024編程學習大全網