1. 程式人生 > >Git初體驗

Git初體驗

“Git是什麼?

Git是目前世界上最先進的分散式版本控制系統(沒有之一)。

Git有什麼特點?簡單來說就是:高階大氣上檔次!“                                     -------------------廖雪峰

————————————————————————————————————————————————————————

2018.8.22新增

// git bash生成ssh(我的是碼雲的)
ssh-keygen -t rsa -C "[email protected]:jxwacoolboy/Spring-Cloud-Config-Test.git"
// 檢視生成的rsa祕鑰
cat ~/.ssh/id_rsa.pub
// 第一次執行git先和版本庫同步一下,會把伺服器上的readme和license等同步到本地,不然直接提交會抱錯
//git pull --rebase origin master

//初始化版本庫
git init
// 本地commit之後會自動建立master分支,此後才能自己建立新的分支
git branch study_git01
// 切換到study_git01分支
git checkout study_git01
// git gui可以開啟gui工具方便提交和同步
// 指定遠端倉庫
 git remote add origin https://gitee.com/jxwacoolboy/Spring-Cloud-Config-Test.git
// 本地關聯遠端分支
 git branch --set-upstream-to=origin/study_git01 study_git01
// 從遠端倉庫上拉取檔案
git pull origin study_git01
// 有時會報錯如下:
// fatal: refusing to merge unrelated histories
// 這是因為因為兩個倉庫不同,發現refusing to merge unrelated histories,無法pull,
// 要把兩個不同的專案合併
git pull origin study_git01 --allow-unrelated-histories

————————————————————————————————————————————————————————

建立一個版本庫:

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit

pwd命令用於顯示當前目錄。我的電腦上,這個倉庫位於/Users/michael/learngit

然後,通過git init命令把這個目錄變成Git可以管理的倉庫,然後你能在目錄下看到一個空的倉庫(empty Git repository),細心的可以發現當前目錄下多了一個.git的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裡面的檔案,不然改亂了,就把Git倉庫給破壞了。

如果你沒有看到.git目錄,那是因為這個目錄預設是隱藏的,用ls -ah命令就可以看見。

新增檔案到Git倉庫,分兩步:

  1. 使用命令git add <file>,注意,可反覆多次使用,新增多個檔案;
  2. 使用命令git commit -m <message>,完成。                                                        

例如:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

git status 可以檢視當前版本庫中檔案的狀態,比如,你修改一個檔案之後輸入命令可以看到如下:

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   readme.txt

no changes added to commit (use "git add" and/or "git commit -a")

上面的命令輸出告訴我們,readme.txt被修改過了,但還沒有準備提交的修改。

如果能看看具體修改了什麼內容,,可以使用git diff這個命令看看(git diff是工作區(work dict)和暫存區(stage)的比較,而git diff -cached是暫存區(stage)和分支(master)的比較,暫存區(stage)是git add之後檔案儲存的一塊區域,工作區(work dict)就是真正git commit之後檔案提交到分支的。git diff --staged 暫存與倉庫的差異【add之後,commit之前】,git diff commit_id_1 commit_id_2用來比較2個commit之間區別,git diff HEAD -- readme.txt命令可以檢視readme.txt檔案在工作區和版本庫裡面最新版本的區別)

$ git diff readme.txt 
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.

回退到上個版本可以使用git reset命令:

$ git reset --hard HEAD^
HEAD is now at e475afc add distributed

HEAD^表示回退到上個版本,上上一個版本就是HEAD^^,當然往上100個版本可以寫成HEAD~100

Git提供了一個命令git reflog用來記錄你的每一次命令:

$ git reflog
e475afc [email protected]{1}: reset: moving to HEAD^
1094adb (HEAD -> master) [email protected]{2}: commit: append GPL
e475afc [email protected]{3}: commit: add distributed
eaadf4e [email protected]{4}: commit (initial): wrote a readme file

git log命令顯示從最近到最遠的提交日誌,如果嫌輸出資訊太多,看得眼花繚亂的,可以試試加上--pretty=oneline引數(另外,git log --onelinegit log --pretty=oneline的區別就是前者的id只顯示7位)

$ git log --pretty=oneline
1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append GPL
e475afc93c209a690c39c13a46716e8fa000c366 add distributed
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file

git版本庫分為暫存區和分支,暫存區實在執行git add 命令之後,將你的這一次修改加入到暫存區(git版本庫管理的是修改而不是檔案,也就是說暫存區存的是哪個檔案進行了修改,並不知道具體改了什麼),然後執行git commit之後,將暫存區的修改提交至版本庫。也就是說,當你修改了一個檔案沒有執行git add時,執行git commit是不會把你這個修改提交的。

git checkout -- file

可以丟棄工作區的修改:

$ git checkout -- readme.txt

命令git checkout -- readme.txt意思就是,把readme.txt檔案在工作區的修改全部撤銷,這裡有兩種情況:

一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

一種是readme.txt已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。

總之,就是讓這個檔案回到最近一次git commitgit add時的狀態。

git reset HEAD file

可以把暫存區的修改撤銷掉(unstage),重新放回工作區;

git reset命令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用HEAD時,表示最新的版本。

當你使用刪除檔案test.txt ( rm test.txt ) 時,Git知道你刪除了檔案,因此,工作區和版本庫就不一致了,git status命令會立刻告訴你哪些檔案被刪除了;現在你有兩個選擇,

    一是確實要從版本庫中刪除該檔案,那就用命令git rm  test.txt刪掉,並且git commit

    另一種情況是刪錯了,因為版本庫裡還有呢,所以可以很輕鬆地把誤刪的檔案恢復到最新版本:

$ git checkout -- test.txt

git checkout -- file其實是用版本庫裡的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”。

相關推薦

Git體驗——git項目開發流程

創建目錄 管理 文本 目錄 ria 遠程 歷史 zookeepe clas 眾所周知,Git是一款版本控制軟件,之前總是習慣把每次修改後的代碼打包並且標註好時間等信息加以區分,使用git之後就完全不需要這麽做了。 1.安裝git: 官網下載安裝即可,沒什麽復雜的步驟 2.新

VScode的Git體驗

最近越來越覺得VScode好用了,這裡要說的是VScode裡面整合的Git,這幾天用著就感覺很舒服~~ 首先,你得安裝Git for windows(官網下載),然後在git倉庫的資料夾下開啟VScode,VScode的git就會被啟用~~ 如果沒有自動啟用,那你可能需要配置一下git

Git體驗

“Git是什麼? Git是目前世界上最先進的分散式版本控制系統(沒有之一)。 Git有什麼特點?簡單來說就是:高階大氣上檔次!“                                     -------------------廖雪峰 —————————

git系列1之安裝體驗(windows)

conf pan cnblogs it管理 png 下一步 rac -1 stage 1.百度雲盤地址 https://pan.baidu.com/s/1o8vAt78 2.下載後雙擊直接下一步下一步即可 3.創建一個目錄,並在目錄中創建文件README.CD 4.

體驗之開源Git服務Gogs

gogs搭建教程 是否覺得Gitlab吃記憶體?是否覺得高富帥和diao絲直接差的是伺服器配置?推薦一款開源的git伺服器Gogs,從此翻身做富帥; Gogs具有佔用記憶體小,速度快,併發高的特點;1核2G雲伺服器穩穩帶起; 在我體驗完Gogs給我帶來的快感以後,不得不說go

git 使用詳解(3)-- 體驗

Git 基礎 本章將介紹幾個最基本的,也是最常用的 Git 命令,以後絕大多數時間裡用到的也就是這幾個命令。讀完本章,你就能初始化一個新的程式碼倉庫,做一些適當配置;開始或停止跟蹤某些檔案;暫存或提交某些更新。我們還會展示如何讓 Git 忽略某些檔案,或是名稱符合特定模式

小程序體驗:手把手教你寫出第一個小程序(一)

輸入框 個人 創建 公測 快速 nsh 成功 too 調用 本文筆者將根據quick start中的範例代碼,帶大家簡單地剖析一下小程序的運行方式,並介紹小程序開發中一些通用的特性,帶著大家一步步寫出自己的小程序。 適用對象:前端初學者,對小程序開發感興趣者 tip

vue.js2.0 自定義組件體驗

最新 解綁 然而 blog bool template 警告 rem 組件 理解 組件(Component)是 Vue.js 最強大的功能之一。組件可以擴展 HTML 元素,封裝可重用的代碼。在較高層面上,組件是自定義元素, Vue.js 的編譯器為它添加特殊功能。在有些

weblogic體驗

xsd 體驗 target java語言 註意 true 中間件 鼠標 使用 之前一直是用的tomcat,由於業務需要,需要使用weblogic部署項目,在這裏大概的記錄一下 weblogic是oracle出品的WEB容器,確切的說是一個基於JavaEE架構的中間件,使用

python體驗

list python 字典 python初體驗:1.python種類 CPython 代碼 -> C字節碼 -> 機器碼 (一行一行) pypy 代碼 -> C字節碼 -> 機器碼 全部轉換完 -> 執行 其他Python 代碼 -&g

Android逆向分析體驗

目錄 搜索 比較 .com -1 動態調試 總結 為我 修改 一、 準備知識 1. 懂Java Android開發。 2. 懂NDK ,C 語言 Android 動態鏈接庫.SO開發。 3.

【Spark深入學習 -15】Spark Streaming前奏-Kafka體驗

rod htm 新的 callback tails 包括 -c 舉例 清理 ----本節內容------- 1.Kafka基礎概念 1.1 出世背景 1.2 基本原理 1.2.1.前置知識 1.2.2.架構和原理 1.2.

vue.js 體驗— Chrome 插件開發實錄

原創 控件 https ext 方案 程序實現 瀏覽器中 display 博客 歡迎大家關註騰訊雲技術社區-博客園官方主頁,我們將持續在博客園為大家推薦技術精品文章哦~ 作者:陳緯傑 背景 對於經常和動畫開發打交道的開發者對於Animate.css這個動畫庫不

1Python全棧之路系列之Django體驗

編寫程序 online 網絡開發 程序員 堪薩斯 Python全棧之路系列之Django初體驗Django不得不說在Python中是一個非常強大的全棧框架,而且入門也比較簡單,只要你學完了基本的Django知識,接著再做一兩個項目,不大不小就成,然後你再去學其它的框架你會發現,在那些小而美

flask+jsonp跨域前後臺交互(接口體驗

script keys 返回 == 方法 png 前後臺 true run 1 # -*- coding: utf-8 -*- 2 from flask import Flask, jsonify 3 import psutil, time,json 4 5

Hibernate_01_體驗

基礎上 font cal close mysq getprop build nec address Hibernate的一個小例子(慕課網教程整理的代碼): 首先在eclipse--help--Eclipse MarketPlace中搜索“jboss Tool” 導入hi

zTree體驗(一)——小試牛刀

插件 root tracking per margin 接受 dsm 獲取 實現 zTree 是一個依靠 jQuery 實現的多功能 “樹插件”。優異的性能、靈活的配置、多種功能的組合是 zTree 最大長處。 ——zTree官網 zTree v3

phantomjs2.1 體驗

http dom canvas ima 行為 pen 廣告 自動 str 上次看了一下scrapy1.1的新手指南 決定寫個小爬蟲實驗一下 目標網站是http://www.dm5.com/manhua-huofengliaoyuan準備爬取漫畫火鳳燎原的已有章節,將圖片保存

Maven項目搭建(一):Maven體驗

測試類 java平臺 存在 ack 做的 rar cli maven2 試用 今天給大家介紹一個項目管理和綜合工具:Maven。 Maven: maven讀作 [‘meivin],本意是指可以被信任的領域專家,致力於傳播知識(來自於http://en.wikip

python的體驗

多行註釋 導致 passwd 判斷語句 swd pytho 對齊 輸入 tab 最近由於畢業答辯,導致一些博客沒有更新,見諒,今天我們開始一些新的內容   1.python的註釋     單行註釋:#     多行註釋:       ‘‘‘        這是多行註釋