Git版本控制工具

1.安裝git
  下載安裝git

  從[https://git-for-windows.github.io](https://git-for-windows.github.io/)
  下載(網(wǎng)速慢的同學(xué)請移步[國內(nèi)鏡像]
  (https://pan.baidu.com/s/1kU5OCOB#list/path=%2Fpub%2Fgit)),
  然后按默認(rèn)選項安裝即可

安裝完成后,在開始菜單里找到“Git”->“Git Bash”,蹦出一個類似命令行窗口的東西,就說明Git安裝成功!

安裝完成后,還需要最后一步設(shè)置,在命令行輸入:
(配置電子郵件和用戶名,git需要知道你是誰)

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
2.創(chuàng)建版本庫

什么是版本庫呢?版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄里面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。

在本地創(chuàng)建版本庫
特別提示:window版本的項目目錄一定要包含父目錄,否則會很容易出現(xiàn)這樣那樣的錯誤(親測!!!各位小伙伴注意)

首先,選擇一個合適的地方,創(chuàng)建一個空目錄;
其次,通過git init命令把這個目錄變成Git可以管理的倉庫:

$ git init

瞬間Git就把倉庫建好了,而且告訴你是一個空的倉庫(empty Git repository),當(dāng)前目錄下多了一個.git的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄里面的文件,不然改亂了,就把Git倉庫給破壞了

(如果沒出現(xiàn)這個文件說明電腦隱藏了不可見文件夾或文件在控制面板禮文件夾選項里勾選這個選項就出現(xiàn)了)

3.創(chuàng)建一個文件
例如: index.txt
  內(nèi)容隨便寫,如  hello

接下來用命令git add告訴Git,把文件添加到倉庫:
(特別提示,txt文件最好不要用文本編輯器更改,很容易出現(xiàn)問題)

$ git add index.txt

然后用命令git commit告訴Git,把文件提交到倉庫

$ git commit -m "添加了一個文本文件"
4.遠(yuǎn)程倉庫

1.首先登錄你的githup

2.右上角點擊+號,創(chuàng)建一個新的倉庫(new repository),填寫上倉庫的名字和基本描述,確定,一個遠(yuǎn)程倉庫就創(chuàng)建好了,是不是很簡單

3.接下來創(chuàng)建SSH Key

  $ ssh-keygen -t rsa -C "youremail@example.com"

youremail@example.com是你自己的郵件地址,記得一定要更改
執(zhí)行完成之后會在c盤的/用戶/本機(jī)用戶名/.ssh 文件夾內(nèi)生成三個文件
里面有id_rsaid_rsa.pub兩個文件,這兩個就是SSH Key的秘鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。

4.登陸GitHub,點擊右上角的頭像,打開“settings”,然后,點“[SSH and GPG keys]”,填上任意Title,在Key文本框里粘貼id_rsa.pub文件的內(nèi)容:
點擊add ssh key添加完成

5.關(guān)聯(lián)遠(yuǎn)成倉庫
目前,在GitHub上的這個learngit倉庫還是空的,GitHub告訴我們,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關(guān)聯(lián),然后,把本地倉庫的內(nèi)容推送到GitHub倉庫。

現(xiàn)在,我們根據(jù)GitHub的提示,在本地的倉庫下運(yùn)行命令:

$ git remote add origin git@github.com:jsformat/virus.git

請千萬注意,把上面的jsformat替換成你自己的GitHub賬戶名,否則,你以后推送是推不上去的,因為你的SSH Key公鑰不在我的賬戶列表中。

添加后,遠(yuǎn)程庫的名字就是origin,這是Git默認(rèn)的叫法,也可以改成別的,但是origin這個名字一看就知道是遠(yuǎn)程庫。

6.現(xiàn)在就可以通過以下命令把本地庫的所有內(nèi)容推送到遠(yuǎn)程庫上:

$ git push -u origin master

執(zhí)行完成之后查看你的遠(yuǎn)成倉庫是不是文件被推送上來了。。
(正常的操作現(xiàn)在一個文件已經(jīng)被推送上來)

另外當(dāng)提交的遠(yuǎn)成倉庫出現(xiàn) 的一些問題

[git push origin master 報錯的解決方法]

1 錯誤提示如下:
 2 [root@linux1 php]# git push -u origin master
 3 To git@github.com:kangvcar/Results-Systems--PHP.git
 4  ! [rejected]        master -> master (fetch first)
 5 error: failed to push some refs to 'git@github.com:kangvcar/Results-Systems--PHP.git'
 6 hint: Updates were rejected because the remote contains work that you do
 7 hint: not have locally. This is usually caused by another repository pushing
 8 hint: to the same ref. You may want to first merge the remote changes (e.g.,
 9 hint: 'git pull') before pushing again.
10 hint: See the 'Note about fast-forwards' in 'git push --help' for details.
原因:

GitHub遠(yuǎn)程倉庫中的README.md文件不在本地倉庫中。

解決方案:

我們只需加上 --rebase 參數(shù)然后再重新 push 一次即可

$ git pull --rebase origin master
$ git push -u origin master
對于拉取遠(yuǎn)成倉庫文件到本地
    git clone https://github.com/jsformat/virus.git
     //https://github.com/jsformat/virus.git 這個地址是你遠(yuǎn)程倉庫地址
刪除本地文件然后同步到遠(yuǎn)程倉庫
  git rm a.txt  //刪除本地的a.txt

然后提交本次修改

git commit "刪除a.txt文件"

最后將文件同遠(yuǎn)成倉庫更新

  git push
對于版本回退

首先,Git必須知道當(dāng)前版本是哪個版本,

在Git中,用HEAD表示當(dāng)前版本

上一個版本就是HEAD^,上上一個版本就是HEAD^^,當(dāng)然往上100個版本寫100個^比較容易數(shù)不過來,所以寫成HEAD~100。

我們要把當(dāng)前版本回退到上一個版本就可以使用git reset命令

  git reset --hard HEAD^
  //或者
   git reset --hard 上一個版本號

回退過之后如果想在回來,
如果當(dāng)前的命令行窗口并沒有關(guān)閉,你可以找到ID號并且執(zhí)行:

  git reset --hard 上一個版本號的ID

如果窗口已經(jīng)關(guān)閉了,git提供了一個命令

git reflog //用來記錄你的每一次命令,可以找到對應(yīng)的ID號

git分支操作

git 創(chuàng)建分支, 切換分支, 合并分支, 刪除分支及提交[commit提交到本地倉庫push名利提交到遠(yuǎn)程服務(wù)器], 檢出[pull], 沖突修改, 本地倉庫同步遠(yuǎn)程服務(wù)器[pul和push命令l]操作

開發(fā)中常用操作

刪除文件:git rm 文件名[刪除本地git倉庫文件, 提交后遠(yuǎn)程服務(wù)器上的文件才會消失]

查看狀態(tài):git status

添加記錄:git add 文件名 或 git add . [將文件提交到遠(yuǎn)程git服務(wù)器上]

添加描述:git commit -m "描述或備注類似svn提交時的注釋"

同步數(shù)據(jù):git pull  [獲取git遠(yuǎn)程服務(wù)器上的數(shù)據(jù)也可以具體到某一分支如: git pull origin 分支名]

提交數(shù)據(jù):git push origin 分支名

分支操作

查看分支:git branch

創(chuàng)建分支:git branch 分支名

切換分支:git checkout 分支名

創(chuàng)建+切換分支:git checkout -b 分支名

合并某分支到當(dāng)前分支:git merge 分支名

  [比如,如果要將開發(fā)中的分支(deve),合并到穩(wěn)定分支(master),
     首先切換的master分支:git checkout master。
     然后執(zhí)行合并操作:git merge deve。
     如果有沖突,會提示你,調(diào)用git status查看沖突文件。
     解決沖突,然后調(diào)用git add或git rm將解決后的文件暫存。
     所有沖突解決后,git commit 提交更改。]

注意點:

分支衍合
分支衍合和分支合并的差別在于,分支衍合不會保留合并的日志,不留痕跡,而 分支合并則會保留合并的日志。
要將開發(fā)中的分支(dev),衍合到穩(wěn)定分支(master)。
首先切換的master分支:git checkout master。
然后執(zhí)行衍和操作:git rebase deve
如果有沖突,會提示你,調(diào)用git status查看沖突文件。
解決沖突,然后調(diào)用git add或git rm將解決后的文件暫存。
所有沖突解決后,git rebase --continue 提交更改。

刪除分支:git branch -d 分支名

刪除分支執(zhí)行g(shù)it branch -d 分支名
如果該分支沒有合并到主分支會報錯,可以用以下命令強(qiáng)制刪除git branch -D 分支名

刪除遠(yuǎn)程分支:git push origin :name
需要注意的是origin后面有空格

撤銷修改:git checkout -- file
對應(yīng)圖片操作

branch.png

對于提交到分支的文件的操作步驟

1.新建本地倉庫,并且初始化

  git init

2.添加文件到暫存區(qū)

  git add -A //全部文件

3.提交文件

  git commit -m "描述"

4.將遠(yuǎn)程信息拉取到本地(比如遠(yuǎn)程分支的信息,這步可以不做)

git fetch

5.查看分支信息(建立在第4步的基礎(chǔ)上)

git branch -r  //所有遠(yuǎn)程分支信息

6.新建本地分支

git branch newBranch  //newBranch 為分支名

7.切換到該分支

git checkout newBranch

8.關(guān)聯(lián)遠(yuǎn)程倉庫

git remote add origin git@github.com:jsformat/virus.git //我的遠(yuǎn)程倉庫

9.提交文件到該分支

git push origin

刪除遠(yuǎn)程分支文件或者文件夾

git rm -r --cached a/2.txt //刪除a目錄下的2.txt文件   刪除a目錄git rm -r --cached a

git commit -m "刪除a目錄下的2.txt文件" 

git push
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,362評論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,013評論 3 423
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,346評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,421評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,146評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,534評論 1 325
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,585評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,767評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,318評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,074評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,258評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,828評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,486評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,916評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,156評論 1 290
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,993評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,234評論 2 375

推薦閱讀更多精彩內(nèi)容