1. 程式人生 > >不學習就淘汰

不學習就淘汰

摘自GitHub入門與實踐

設定SSH KEY

  • GitHub 上連線已有倉庫時的認證,是通過使用了 SSH 的公開金鑰認證方式進行的。現在讓我們來建立公開金鑰認證所需的 SSH Key,並將其新增至 GitHub。已經建立過的讀者,請用現有的金鑰進行設定。
    • 執行下面的命令建立 SSH Key。

      $ ssh-keygen -t rsa -C "[email protected]"
      Generating public/private rsa key pair.
      Enter file in which to save the key
      (/Users/your_user_directory/.ssh/id_rsa): 按回車鍵
      Enter passphrase (empty for no passphrase): 輸入密碼
      Enter same passphrase again: 再次輸入密碼
    • [email protected]”的部分請改成您在建立賬戶時用的郵箱地址。密碼需要在認證時輸入,請選擇複雜度高並且容易記憶的組合。
    • 輸入密碼後會出現以下結果。

      Your identification has been saved in /Users/your_user_directory/.ssh/id_rsa.
      Your public key has been saved in /Users/your_user_directory/.ssh/id_rsa.pub.
      The key fingerprint is:
      fingerprint值 [email protected]

      The key's randomart image is:
      +---[RSA 2048]----+
      |. .+E=o |
      |o.o.++o++= |
      |.=.*oo oB . |
      |==*.+ =o * |
      |Boo= * .S o |
      |o.+ + . |
      | o |
      | |
      | |
      +----[SHA256]-----+
    • id_rsa 檔案是私有金鑰,id_rsa.pub 是公開金鑰。
  • 新增公開金鑰,在 GitHub 中新增公開金鑰,今後就可以用私有金鑰進行認證了。
    • 點選右上角的賬戶設定按鈕(Account Settings) ,選擇 SSH and GPG Keys 選單。點選 new SSH Key 之後,會出現如圖3.2 的輸入框。在 Title 中輸入適當的金鑰名稱。Key 部分請貼上 id_rsa.pub 檔案裡的內容。id_rsa.pub的內容可以用如下方法檢視。

      $ cat ~/.ssh/id_rsa.pub
      ssh-rsa 公開金鑰的內容
      [email protected]

    • 新增成功之後,建立賬戶時所用的郵箱會接到一封提示“公共金鑰新增完成”的郵件。
  • 完成以上設定後,就可以用手中的私人金鑰與 GitHub 進行認證和通訊了。讓我們來實際試一試。
$ ssh -T [email protected]
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is  fingerprint值  .
Are you sure you want to continue connecting (yes/no)?  輸入yes
Enter passphrase for key '/c/Users/ww/.ssh/id_rsa': (這裡需要輸入建立SSH Key時設定的密碼)
  • 出現如下結果即為成功。
Hi baozc! You've successfully authenticated, but GitHub does not provide shell access.

連線github出錯,解決

如果出現錯誤:

$ git push mp master
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

可以採用如下方法:

$ vim .ssh/config

Host github.com
User [email protected].com 註冊時的郵箱
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443

測試連線是否成功:

$ ssh -T git@github.com
Enter passphrase for key '/c/Users/Administrator/.ssh/id_rsa':
Hi baozc! You've successfully authenticated, but GitHub does not provide shell access.

公開程式碼

  •  clone 已有倉庫,嘗試在已有倉庫中新增程式碼並加以公開。首先將已有倉庫 clone 到身邊的開發環境中。、
    • 倉庫的路徑,在程式碼倉庫介面選擇 Clone or download > Use SSH > 複製對應路徑

      λ git clone [email protected]:baozc/test.git
      Cloning into 'test'...
      Enter passphrase for key '/c/Users/ww/.ssh/id_rsa':(這裡會要求輸入 GitHub 上設定的公開金鑰的密碼)
      remote: Counting objects: 6, done.
      remote: Compressing objects: 100% (4/4), done.
      remote: Total 6 (delta 0), reused 3 (delta 0), pack-reused 0
      Receiving objects: 100% (6/6), done.
      Checking connectivity... done.
    • 認證成功後,倉庫便會被 clone 至倉庫名後的目錄中。將想要公開的程式碼提交至這個倉庫再 push 到 GitHub 的倉庫中,程式碼便會被公開。
    • 程式碼預設下載到使用者目錄下 ~ or C盤 使用者 對應使用者名稱資料夾下

進行 push

  • 提交程式碼後,只有執行 push,GitHub 上的倉庫才會被更新。
$ git push
Enter passphrase for key '/c/Users/ww/.ssh/id_rsa':
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 349 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:baozc/test.git
   8cc4ff1..6a2c236  master -> master
  • 這樣一來程式碼就在 GitHub 上公開了。

git操作命令

  • git init 初始化倉庫,如果初始化成功,執行了 git init命令的目錄下就會生成 .git 目錄。這個 .git 目錄裡儲存著管理當前目錄內容所需的倉庫資料。
  • git status 檢視倉庫的狀態,工作樹和倉庫在被操作的過程中,狀態會不斷髮生變化。在 Git 操作過程中時常用 git status命令檢視當前狀態,可謂基本中的基本。
    • 當檔案太多時,進入某個資料夾,使用git status . 可以只檢視這個資料夾中的git狀態。
  • git add 向暫存區中新增檔案,如果只是用 Git 倉庫的工作樹建立了檔案,那麼該檔案並不會被記入 Git 倉庫的版本管理物件當中。要想讓檔案成為 Git 倉庫的管理物件,就需要用 git add命令將其加入暫存區(Stage 或者 Index)中。暫存區是提交之前的一個臨時區域。
    • git add xx命令可以將xx檔案或目錄新增到暫存區
    • git add -A .來一次新增所有改變的檔案。注意 -A 選項後面還有一個句點. git add -A表示新增所有內容
    • git add . 表示新增新檔案和編輯過的檔案不包括刪除的檔案
    • git add -u 表示新增編輯或者刪除的檔案,不包括新新增的檔案。
  • git commit 儲存倉庫的歷史記錄
    • 格式 git commit -m description,例 git commit -m "提交描述"windows下,請注意使用雙引號,否則可能出現錯誤:error: pathspec 'commit'' did not match any file(s) known to git.
    • 如果想要記述得更加詳細,請不加 -m,直接執行 git commit命令。執行後編輯器就會啟動。在編輯器中記述提交資訊的格式如下:
      • 第一行:用一行文字簡述提交的更改內容
      • 第二行:空行
      • 第三行以後:記述更改的原因和詳細內容
      • 將提交資訊按格式記述完畢後,請儲存並關閉編輯器,以 #(井號)標為註釋的行不必刪除。隨後,剛才記述的提交資訊就會被提交。
      • 中止提交 如果在編輯器啟動後想中止提交,請將提交資訊留空並直接關閉編輯器,隨後提交就會被中止。
    • 只要按照上面的格式輸入,今後便可以通過確認日誌的命令或工具看到這些記錄。
    • 在以 #(井號)標為註釋的 Changes to be committed(要提交的更改)欄中,可以檢視本次提交中包含的檔案。
    • git 提交出現這個錯誤:fatal: Unable to create ‘project_path/.git/index.lock’: File exists.
      • 解決方案:需要刪除.git\index.lock,在cmder中無法刪除,可以使用git bash。
  • git log 檢視提交日誌,包括可以檢視什麼人在什麼時候進行了提交或合併,以及操作前後有怎樣的差別。
    • 只顯示提交資訊的第一行 可以在 git log命令後加上 --pretty=short
    • 只顯示指定目錄、檔案的日誌 只要在 git log命令後加上目錄名,便會只顯示該目錄下的日誌。如果加的是檔名,就會只顯示與該檔案相關的日 志。
    • 顯示檔案的改動 如果想檢視提交所帶來的改動,可以加上 -p 引數,檔案的前後差別就會顯示在提交資訊之後。
    • 檢視更改前後的差別 git diff命令可以檢視工作樹、暫存區之間的差別。在沒把檔案加入暫存區時,使用git diff會顯示暫存區和工作樹之間的差別
      • 及沒把修改檔案加入暫存區前,使用git diff進行比對,如果已經把修改的檔案加入暫存區了,使用git diff是無法比對的。
    • 檢視工作樹和最新提交的差別 git diff HEAD檢視本次提交與上次提交之間有什麼差別, HEAD 是指向當前分支中最新一次提交的指標。
      • 即指git add新增到暫存區的檔案和上次提交(工作樹)檔案的差別
      • 不妨養成這樣一個好習慣:在執行 git commit命令之前先執行git diff HEAD命令,檢視本次提交與上次提交之間有什麼差別,等確認完畢後再進行 提交。
    • 比對檔案更改前後差別,沒新增暫存區時使用git diff,新增暫存區後使用git diff head
    • 比較本地分支和遠端分支的差別 git log 本地分支名.. 遠端主機名/遠端分支名,可以加-p引數比較具體修改
  • git diff命令總結:
    • working tree:就是你所工作在的目錄,每當你在程式碼中進行了修改,working tree的狀態就改變了。
    • index file:是索引檔案,它是連線working treecommit的橋樑,每當我們使用git-add命令來登記後,index file的內容就改變了,此時index file就和working tree同步了。
    • commit:是最後的階段,只有commit了,我們的程式碼才真正進入了git倉庫。我們使用git commit就是將index file裡的內容提交到commit
    • git diff:是檢視working tree與index file的差別的。
    • git diff --cached:是檢視index file與commit的差別的。
    • git diff HEAD:是檢視working tree和commit的差別的。(你一定沒有忘記,HEAD代表的是最近的一次commit的資訊)
    • 檢視簡單的diff結果,可以加上–stat引數:git diff --stat
  • git diff輸出格式:

    $ git diff --cached
    diff --git a/gfm/git/git.md b/gfm/git/git.md
    index 87dd5e5..22b5c0d 100644
    --- a/gfm/git/git.md
    +++ b/gfm/git/git.md
    @@ -83,6 +83,7 @@ To github.com:baozc/test.git
     ## git操作命令
     - `git init` 初始化倉庫,如果初始化成功,執行了 `git init`命令的目錄下就會生成 .git 目錄。這
     - `git status` 檢視倉庫的狀態,工作樹和倉庫在被操作的過程中,狀態會不斷髮生變化。在 Git 操作
    +       - 當檔案太多時,進入某個資料夾,使用`git status .` 可以只檢視這個資料夾中的git狀態。
     - `git add` 向暫存區中新增檔案,如果只是用 Git 倉庫的工作樹建立了檔案,那麼該檔案並不會被記
    (Stage 或者 Index)中。暫存區是提交之前的一個臨時區域。
            - `git add xx`命令可以將xx檔案或目錄新增到暫存區
            - `git add -A .`來一次新增所有改變的檔案。注意 -A 選項後面還有一個句點. `git add -A`
    • 第一行表示結果為git格式的diff。進行比較的是a版本的git.md(變動前),b版本的git.md(變動後)
    • 第二行表示兩個版本的git雜湊值(index區域的87dd5e5物件,與工作目錄區域的22b5c0d物件進行比較),最後的六位數字是物件的模式(普通檔案,644許可權)。
    • 第三行表示進行比較的兩個檔案。 “—”表示變動前的版本,”+++”表示變動後的版本。

      --- a/gfm/git/git.md
      +++ b/gfm/git/git.md
    • 後面的行都與官方的合併格式diff相同。
      • 差異按照差異小結進行組織,每個差異小結的第一行都是定位語句,由@@開頭,@@結尾。
      • @@ -83,6 +83,7 @@表示在原始檔第83行開始的6行和目標檔案第83行開始的7行構成一個差異小結
      • 這個差異小結中,目標檔案添加了一行- 當檔案太多時,進入某個資料夾……
        • 開頭的行,是隻出現在原始檔中的行(紅色表示刪除該行),+ 開頭的行,是隻出現在目標檔案中的行

git分支命令

  • git branch檢視分支。可以看到 master 分支左側標有“*”(星號),表示這是我們當前所在的分支
    • 加 -a 引數可以同時顯示本地倉庫和遠端倉庫的分支資訊。
    • -r 引數只顯示遠端分支
    • -v 顯示分支詳情
    • -vv 顯示本地分支與遠端分支的追蹤關係
  • git checkout -b——建立並切換分支
  • git checkout - 切換回上一個分支,像上面這樣用“-”(連字元)代替分支名,就可以切換至上一個分支。
  • 特性分支 顧名思義,是集中實現單一特性(主題),除此之外不進行任何作業的分支。在日常開發中,往往會建立數個特性分支,同時在此之外再保留一個隨時可以釋出軟體的穩定分支。穩定分支的角色通常由 master 分支擔當。即便在開發過程中發現了 BUG,也需要再建立新的分支,在新分支中進行修正。
  • 主幹分支 是剛才我們講解的特性分支的原點,同時也是合併的終點。通常人們會用 master 分支作為主幹分支。主幹分支中並沒有開發到一半的程式碼,可以隨時供他人檢視。有時我們需要讓這個主幹分支總是配置在正式環境中,有時又需要用標籤 Tag 等建立版本資訊,同時管理多個版本釋出。擁有多個版本釋出時,主幹分支也有多個。
  • git merge——合併分支,為了在歷史記錄中明確記錄下本次分支合併,我們需要建立合併提交。因此,在合併時加上 --no-ff 引數。
    • 例:git merge --no-ff feature-A,隨後編輯器會啟動,用於錄入合併提交的資訊。預設資訊中已經包含了是從 feature-A 分支合併過來的相關內容,所以可不必做任何更改。將編輯器中顯示的內容儲存,關閉編輯器
  • git log  -- graph 以圖表形式檢視分支

更改提交的操作

  • git reset ——回溯歷史版本
    • git rest --hard hashId 要讓倉庫的 HEAD、暫存區、當前工作樹回溯到指定狀態,需要用到 git rest --hard hashId命令
    • git reflog 檢視當前倉庫的操作日誌 git log命令只能檢視以當前狀態為終點的歷史日誌
  • 檢視衝突部分並將其解決,如下衝突:
#Git教程
<<<<<<< HEAD
-feature-A
=======
-fix-B
>>>>>>> fix-B
- ======= 以上的部分是當前 HEAD 的內容,以下的部分是要合併的 fix-B 分支中的內容
- 修改後:
    ```
    # Git教程
    - feature-A
    - fix-B
    ```

- git commit --amend——修改提交資訊,要修改上一條提交資訊,可以使用該命令。

```
$ git commit --amend
```

- 執行上面命令後,編輯器就會啟動

    ```
    old commit message

    #Please enter the commit message for your changes. Lines starting
    #with '#' will be ignored, and an empty message aborts the commit.
    #Date:      Tue Nov 29 14:14:25 2016 +0800
    #On branch bao
    #Your branch is up-to-date with 'mp/bao'.
    #Changes to be committed:
    #       modified:   test
    #Changes not staged for commit:
    #       modified:   git.md
    ```
- 編輯器中顯示的內容如上所示,其中包含之前的提交資訊。
- 修改提交資訊後儲存

- git rebase -i——壓縮歷史。在合併特性分支之前,如果發現已提交的內容中有些許拼寫錯誤等,不妨提交一個修改,然後將這個修改包含到前一個提交之中,壓縮成一個歷史記錄。
- 多次提交記錄合併成一次

推送至遠端倉庫

相關推薦

學習淘汰

摘自GitHub入門與實踐 設定SSH KEY GitHub 上連線已有倉庫時的認證,是通過使用了 SSH 的公開金鑰認證方式進行的。現在讓我們來建立公開金鑰認證所需的 SSH Key,並

學習一無所知

ive pro str 12px fff 分享圖片 情況下 響應 直接 在第一周,我寫的作業都只需要利用已有的一點皮毛知識,但小知識不學不練也確實不會。 第一點,找圖片裏的顏色RGB值:可以用電腦的附件畫圖,選擇顏色吸管點擊顏色打開調色盤就可以顯示RGB值;也可以使用QQ,

程式設計師上網吐槽:學習感覺特別空虛,網友:都是被現實逼的

程式設計師作為網際網路行業的“螺絲釘”,在外界看來程式設計師的工作是非常枯燥泛味的,但是對喜愛這一行的人來說,每天都是充滿激情與挑戰的。因為在網際網路世界裡,程式設計師可以編織出自己想象中的“一切”。但是這“一切”是不穩定的,需要及時更新,比如解決bug,所以不少程式設計師都是充滿焦慮的。就有一名程

如何學習視覺化監控你的爬蟲!爬蟲一個小心會犯法的!

好,開始今天的文章。 今天主要是來說一下怎麼視覺化來 監控你的爬蟲的狀態 。 相信大家在跑爬蟲的過程中,也會好奇自己養的爬蟲一分鐘可以 爬多少頁面 , 多大的資料量 ,當然查詢的方式多種多樣。今天我來講一種視覺化的方法。 關於爬蟲資料在mongodb裡的版本我寫了一個可以熱更新配置的版本

大資料開發學習 重難點全面解析,如果你知道快收藏吧

大資料開發工程師,很多人都向往的職業,但總有這樣那樣的理由,在逼迫這自己放棄。明明知道大資料良好的前景,明明知道學完大資料可以找到一份很好的工作,但就是不會對自己下狠心。大資料培訓老師總結了學生在學習大資料開發過程中遇到的難點,幫助大家逐一攻克難關!   大資料開發,有4個階段: 1、資料

算法的學習像打副本

慢慢 大腦 副本 未來 nbsp 你會 數學基礎 滿了 連續 想連續幾周每天都研究算法是不怎麽現實的一件事情。   算法的學習就像打副本。網遊大都是這樣子的,團本每周都有固定的CD,每個團本有幾個BOSS,相應的BOSS掉落固定的裝備和材料等。首先,團本有周CD

robotframework 判斷下拉框是否存在,如果存在執行下拉框操作,存在跳過執行下拉框操作,進行下一步操作;

新頁面 存在 robot sel log 是否 work val image #本人新手,僅做學習記錄之用 因為工作要求,打開的ui頁面,根據前面篩選的條件不同,跳轉的新頁面不同,本記錄涉及的就是有下拉框和沒有下拉框,所以要對新打開的頁面進行判斷;run keyword

C#winform判斷鼠標30秒關閉窗口

csharp pri nbsp spa nth nvi () class mouse public partial class BaseForm : Form { private Timer timer; int x, y;

爬蟲:網頁裏元素的xpath結構,scrapy一定找的到

源代碼 發現 插件 結構 完成 網頁 分享 動態生成 http 這種情況原因是html界面關聯的js文件可能會動態修改DOM結構,這樣瀏覽器完成了動態修改DOM,在 瀏覽器上看到的DOM結構,就和後臺抓到的DOM結構不通 舉例:新浪微博發的微博,在瀏覽器通過firebug的

機器學習:用神經模塊網絡學習推理

model tensor 作用 參考 我們 arr 生成 人工 相關 機器不學習 jqbxx.com-機器學習好網站 假設我們正在建造一個家用機器人,並希望它能夠回答與它周圍的一些問題。我們可能會它問這樣的問題: 我們如何確保機器人可以正確回答這些問題?深度學習的標準

機器學習:一種提升預測能力的方法-機器學習模型

範圍 和集 最重要的 機器 免費 現實 良好的 例子 永恒 機器不學習 jqbxx.com -機器學習好網站 沒有哪個機器學習模型可以常勝,如何找到當前問題的最優解是一個永恒的問題。 幸運的是,結合/融合/整合 (integration/ combinat

機器學習:word2vec是如何得到詞向量的?

梯度 true day loss class win dex 得到 word2vec 機器不學習 jqbxx.com -機器學習、深度學習好網站 word2vec是如何得到詞向量的?這個問題比較大。從頭開始講的話,首先有了文本語料庫,你需要對語料庫進行預處理,這個處理流

如數據存在插入,存在更新

插入數據 指定 插入行 ast select OS 原子操作 定義 重復記錄 最近在寫爬蟲時遇到一個問題,有些數據有隔一段時間後重新爬,我想讓Mysql執行以下功能,當mysql有一條數據時,如果新數據更來就更新,如果沒有,就插入, 方法一、手工判斷 插入一條數據的時候,

SQL註入其實很簡單,別一留神被利用了

SQL註入 sqlmap SQL防註入 SQL註入這個詞相信大家應該都不陌生,而且每年都會有這樣子的事情發生,下面我先帶大家回憶11年兩期起比較經典的案例事件: 1、SONY索尼事件2011年4月,著名的×××組織Anonymous***SONY一個網站,一星期後才被發現7千萬的用戶個人信息,其中

結構中如果包含AnsiString,是能簡單的復制?

手表 爆炸 復制 南方 故事 天空 難受 中間 兩個 今年春遲,春節已過去很久天氣依然寒冷。對於生於南方的我來說, 10 攝氏度 以下的氣溫足以讓我很難受。 周末,天空透過窗隙投進來一束灰白的光,讓我讀取到今天又是陰冷的一天。伸手去摸床頭櫃上的手表,時間已是中午。記得昨晚是

機器學習:基於知識圖譜推理的關系推演

操作 投影 bow 分數 和源 裏的 常見 ati 直接 對於知識圖譜的關註可以分為兩個方面:知識圖譜的構建和基於知識圖譜數據結構的應用。知識圖譜的構建主要關註如何整合結構化、非結構化的數據,實現用統一的語義數據結構如三元組RDF形式的數據存儲。基於知識圖譜的應用主要關註如

SSH連接linux時,長時間操作斷開的解決方案(增強版)

正常 每分鐘 指定 防止 variable 當前 實現 客戶 不發送 1、第一次嘗試失敗 修改/etc/ssh/sshd_config文件, 找到 ClientAliveInterval 0 ClientAliveCountMax 3 並將註釋符號("#")去掉, 將Cli

Python3基礎 setattr 設置對象的屬性值,如果屬性存在創建一個

down strong 訪問 8.0 rmp 一個 nac rtc pro ? python : 3.7.0 OS : Ubuntu 18.04.1 LTS

Python3基礎 setattr 設置對象的屬性值,如果屬性存在創建

att finish 5.1 python 解釋型 anaconda markdown block 訪問 ? python : 3.7.0 OS : Ubuntu 18.04.1

UML基本語法,這都看放棄學UML吧~

百度百科上面對UML的解釋: 簡單地說,UML是軟體開發的圖紙——它對於軟體的意義就像建築物的圖紙對於建築物一樣。 這裡主要解釋基本語法(以下使用starUML繪製): 類(class): 一般來說,類圖用這樣的矩形表示,第一行是類名(抽象類類名用斜體),第二行是類的