版本控制及git常用基本命令

title: 版本控制及git常用基本命令
date: 2015-12-04 11:40:04
tags: [git, version control, 版本控制]


(此文章適合聽說過git,大概知道git是什么東東,但是又不會git命令的童鞋閱讀。
時間充裕的童鞋可以到codecademy跟著教程一步步走)

Git是一個分布式的版本管理(Version Control)工具。

版本管理這個概念很多童鞋可能不是很清楚,但其實在代碼創作的過程中很可能已經使用過了一些傳統的方法,比如我初中高中的時候創作博客模板的時候,對同一個模板想做一些不同的調整,同時又擔心調整后原來的功能啊顯示啊的會受到影響,那時候還不知道github之類的東東,于是機智地

  1. 創建了很多文件夾來放不同的模板
  1. 不停的備份
  2. 如果調整后正常運行和顯示,那就使用最新的版本
  3. 如果調整后不能正常運行同時又找不出問題所在,就是用備份的上一個版本來重新創作

以上對應到版本控制系統分別是:

  1. 創建分支(branch)
  1. 提交代碼(commit)
  2. 合并分支(merge)
  3. 版本回滾(checkout)

關于git的概念及使用流程這里不詳細討論,暫時只討論一些最基本的常用的git命令

  • git init 初始化一個git倉庫,生成.git隱藏文件
  • git status 查看git倉庫的狀態,將會返回當前分支, 文件狀態等信息,可以使用-s參數查看只有文件狀態的簡潔版信息
  • git clone <repo location> <repo name> 將遠程分支克隆到本地,<repo name>參數可選,為本地repo命名,若省略,則本地repo與遠程同名
  • git add <file name> 將文件變為staged狀態,也就是告訴git哪些新的文件和修改過的文件是之后要提交的;文件名支持正則表達式
  • git rm <file name> 將文件刪除同時告訴git從git倉庫中刪除文件,可以使用 --cached 參數實現只從git倉庫中刪除而不刪除本地文件
  • git diff <file name> 查看git倉庫文件與本地文件的區別
  • git commit -m "some comment" 將修改提交到git倉庫
  • git show HEAD 顯示HEAD版本的相關信息,包括authordatecommentdiff
  • git log 查看提交記錄,包括提交的時間、作者、評論
  • git reset SHA 將本地git倉庫回退到某個版本,其中SHA為版本log中commit后的一長串字符的前7位字符
  • git reset HEAD <file name> 將本地git倉庫中的某個文件重置為git倉庫的HEAD版本
  • git checkout HEAD 使用git倉庫中的文件覆蓋當前的整個working copy,可以在修改了某些文件但想舍棄這些修改的時候使用這個命令

需要注意reset是針對本地的git倉庫,也就是你每次commit后,文件就會保存到的倉庫。
checkout是針對本地的工作副本,也就是你直接編輯的那些文件,會被overwrite

  • git branch 查看分支信息,使用-r參數查看遠程分支信息
  • git branch <branch name> 添加新的分支
  • git branch -d <branch name> 刪除分支
  • git checkout <branch name> 切換分支,可以使用-b參數,創建新分支并切換到新分支
  • git fetch 獲取遠程origin/master分支最新版本,需要手動與本地文件merge
  • git pull 獲取遠程的最新版本并與本地merge

需要注意 git fetchgit pull 的不同,通常如果本地文件有改動,則應該先fetch在 git merge origin/master

  • git stash 將本地的工作副本暫時存起來
  • git pop 將存起來的工作副本放出來…

git stashgit pop 通常在git pullgit merge的時候如果有沖突(conflict)的時候使用,pop之后有沖突的工作副本會變成如下的樣子,沖突的resolve就是選取最終的內容,然后刪除多余的內容,包括<<< ===>>>這些行也要刪除,讓代碼看起來和正常的代碼一樣。

//git pop之后的沖突文件看起來長這樣:
 <<<<<<< their code
 var a = 123;
 =======
 var a = 456;
 >>>>>>> my code
//沖突解決后,看起來應該長這樣:
 var a = 123;
  • git merge <branch name> 合并分支,將指定分支與當前分支合并

origin/master分支為遠程主分支

  • git push origin <branch name> 把分支推送到遠程
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容