git是一套版本管理系統。看到「git版本管理」,一大部分盆友已經轉身想走,在你握著門把手準備開門走人時,請最後聽我說完最後一句:人人都需要版本管理,git可以幫你少交停電/藍屏/宕機稅,提高產出效率,不來一發嗎?
試過半夜寫匯報ppt嗎?』匯報ppt』→』匯報ppt1』→』匯報ppt11』→』匯報ppt2015-03-17』→』匯報ppt2015-03-17新』→』匯報ppt2015-03-17新1』……無休止的命名鬥爭,這就是自然而然的版本管理,只不過,沒有好的工具,所以顯得一團mess。
來吧,fork有用有趣的東西,git你應該在意的東西,日拱一卒,打造我們的作品。
git實現在本地和遠端進行版本管理。
四個空間概念:工作目錄(workspace),暫存區(index),本地倉庫(local repository),遠端倉庫(remote repository)
想象一下,我們開乙個包子店(做的不是同一款包子,見諒)~
配合下面這張圖,我們對git就有乙個基本概念了。
git系統的實質更像是一棵大樹,樹幹(就是head啦)是最後一次提交的成果。在樹幹上,你可以開無數的分支(就是branch啦)胡弄,弄亂了也不怕,大不了剪掉再開乙個,樹幹不受任何影響。折騰ok的分支,最後可以merge到預設branch也就是master上。
用技術性語言描述,分支用來將特性開發絕緣開來。在建立倉庫的時候,master 是「預設的」分支。在其他分支上進行開發,完成後再將它們合併到主分支上。
那origin又是什麼?origin是遠端預設的倉庫。clone完成之後,git會自動將遠端倉庫命名為origin。
那head和master又是什麼關係?head其實只是個指標,指向當前最近commit的branch。而master是本地預設的branch,所以head經常都是指向master。另外head是官方定義的,而master和origin都是大家常用的命名,並不一定要叫master和origin。[2]
git的好處之一是,包子包好後,還可以回退……
捷徑:工作目錄
本地倉庫
遠端倉庫
最常用:git command --help
需要進入目標目錄進行操作
建立新倉庫:git init
建立乙個本地倉庫的轉殖版本:git clone /path/to/repository
轉殖遠端伺服器上的倉庫:git clone username@host:/path/to/repository
git status
staged:已在index,等待被commit.
unstaged:檔案做了改動,但還不能被commit.
untracked:git還沒有開始跟蹤,需要先add.
deleted:檔案已被刪除,等待remove.
staging area:commit前把檔案們收集到一起,以便打包commit。
新增到暫存區(讓git開始跟蹤更改,也就是從untracked變為tracked):git add 或 git add *
新增全部檔案:git add -a, -a 表示包含刪除的檔案。
git reset: git reset 從staging area移除檔案。
「commit」 可以理解為一次快照,幫助我們把所有改動以timeline的方式組織起來。
提交改動(到head,但還沒到遠端伺服器):git commit -m
「**提交資訊」git commit -m 'add all files'
把所有當前目錄下的檔案加入暫存區域再執行commit:git commit -a
提交到遠端倉庫:git push origin master
(可以把 master 換成你想要推送的任何分支)。如果還沒有轉殖現有倉庫,並想將倉庫連線到某個遠端伺服器:git remote add origin
。
將檔案推送到遠端倉庫中:git push -u origin master
。遠端倉庫預設叫origin
。-u
告訴git記住引數,下次可以直接使用push。
更新本地倉庫至最新改動:git pull origin master
checkout命令用於從歷史提交(或者暫存區域)中拷貝檔案到工作目錄,也可用於切換分支
切換分支:git checkout
新建並切換到分支:git checkout -b new_branch
等同於:git branch new_branch + git checkout new_branch
把檔案從暫存區域複製到工作目錄,用來丟棄本地修改:git checkout --
回滾到複製最後一次提交:git checkout head --
git diff
從index中撤銷所有檔案:git reset
從index中撤銷最後一次add的檔案:git reset --
恢復之前版本:git reset --hard
回滾到最近一次:git checkout --
合併其他分支到當前分支:
git merge
從硬碟和index移除檔案:git rm
刪除分支git branch -d
[1]. git簡明指南
[2]. what are the git concepts of head, master, origin?
[3]. try git
[4]. **git
[5]. pro git中文版
[6]. gitmagic中文版
git多使用者管理
需要為每乙個倉庫設定user email,但是不會出錯啊 羅里吧嗦的直接敲重點 取消git的global使用者以及郵箱 git config global unset user name gitconfig global unset user email在不同的倉庫中配置不同的user email,...
GIT配置多使用者
在公司工作的時候有時候想提交一點 到github上,然後一台電腦上就需要配置兩個賬號分別訪問github和公司的gitlab為什麼要生成兩個key的原因我也不清楚,望路過的大佬指點下.分別用如下的命令給兩個賬戶生成key,儲存位置和密碼隨意,注意名稱不要一樣不要覆蓋了ssh keygen t rsa...
git多使用者管理及許可權控制
用過svn的朋友都知道,每個開發者都需要乙個svn賬號,通過這個檢視專案的提交記錄,可以更加清楚專案的開發情況,便於版本控制。git也是如此。所以我們說其實git在很多方面和svn是很相識的。提到使用者,那麼使用者的管理和許可權控制就是避不開的話題了。一.新建使用者 新增git賬號其實就是新增乙個系...