1. 程式人生 > >GIT---看我一步步入門(Windows Git Bash)

GIT---看我一步步入門(Windows Git Bash)

0 前言

    不同的版本控制工具的比較這裡就不介紹了,我的入門是從windows開始的,而且是使用純命令方式(Git Bash),當然也可以結合TortoiseGit或者msysgit中的GIT Gui工具,這個工具可以通過介面方式來操作管理。     我們要管理專案,首先要建立一個GIT伺服器系統,來管理專案版本。但是有的條件有限,我們搞不起伺服器,只能藉助第三方了,github就是很好的選擇,它是一個網站,已經部署好了GIT系統,我們只需要註冊個賬號,然後就可以免費當我們的GIT伺服器了,作為開發專案託管,msysgit是GIT版本控制系統在windows下的開源版本,在Linux系統下我們需要編譯安裝git。
    開始學習之前,需要對一些概念要理解,比如倉庫,分支啊啥的,不過不理解沒關係,在實踐的過程中我們慢慢就會懂了。不懂的概念要學會去找資料瞭解,遇到的問題不要放過,要解決。相信很快就可以入手了!     下面簡單的說下github(remote)服務端和本地的關係,在本地可以獨立建立倉庫,並在本地管理,這就不需要接觸到pull/push/fetch了,如果你想把專案託管到github,則需要pull/push/fetch了。像個人開發的專案就可以不必利用github來託管,即不用GIT伺服器系統。

1 安裝

2 配置

  • GIT中文亂碼
    D:\Program Files (x86)\Git\etc中的git-completion.bash檔案最後一行加上(重新開啟bash才有效):
    echo "alias ls='ls --show-control-chars --color=auto'" >> git-completion.bash
  • 在GIT終端輸入下面的命令可以提高GIT的輸出格式
    git config --global color.branch auto     git config --global color.diff auto     git config --global color.interactive auto     git config --global color.status auto
  • 設定你的名字和email,這些是在提交commit時的簽名
$ git config --global user.name "FreeApe" $ git config --global user.email "[email protected]"
  • 設定完名字和email後,會在主目錄裡新建了一個全域性的配置檔案.gitconfig,如果不用全域性設定,則在上一步中不用加--global引數,然後會在當前專案中的.git/config檔案增加了以上的設定內容
$ cat .gitconfig [user]        name = FreeApe        email = [email protected]
  • 當不用global時只是對當前專案進行設定,如warning: LF will be replaced by CRLF...出現是因為預設換行符為Linux系統下,為LF,而windows下的換行符是不一樣的,為CRLF。出現這個警告,我們可以對專案進行設定(可以加--global):
$ git config core.autocrlf false
  • SSH Key生成及github上新增SSH Key(一種不需要密碼,用於受信的電腦,有點類似淘寶證書之類的)
    • 檢查電腦上是否已有SSH Key,有的話會列出所有.pub檔案,重新生成的話可以刪除它們
      • $ ls -al ~/.ssh
    • 產生一個新的SSH Key
      • $ ssh-keygen -t rsa -b 4096 -C "[email protected]"
        • Generating public/private rsa key pair.
        • Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
        • Enter passphrase (empty for no passphrase): [Type a passphrase]不輸入密碼的話則為空密碼
        • Enter same passphrase again: [Type passphrase again]
        • Your identification has been saved in /Users/you/.ssh/id_rsa.
        • Your public key has been saved in /Users/you/.ssh/id_rsa.pub.
        • The key fingerprint is:
        • 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db [email protected]
    • 新增SSH Key到ssh-agent
      • $ ssh-agent -s  
        • #啟動ssh-agent 到後臺
        • Agent pid 59566
      • $ ssh-add ~/.ssh/id_rsa
        • Could not open a connection to your authentication agent.???
    • 新增SSH Key 到你的賬戶
      • $ clip < ~/.ssh/id_rsa.pub
        • #複製id_rsa.pub檔案內容到黏貼板
      • 然後將複製的內容黏貼到github.com上的賬戶中的Setting中的SSH Keys中。
    • 測試連線
      • $ ssh -T [email protected]
        • The authenticity of host 'github.com (207.97.227.239)' can't be established.
        • # RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
        • # Are you sure you want to continue connecting (yes/no)?選擇yes
        • Hi username! You've successfully authenticated, but GitHub does not
        • # provide shell access.如果username為你的賬戶名,則測試連線成功。

3 操作

一般操作都帶有引數,可以通過新增-h引數選項來檢視幫助。如$ git add -h 。而且一般的命令都跟Linux中操作相同,如rm刪除檔案,mkdir新建目錄等。

3.1 常用操作

  • 獲取Git倉庫
可以通過從已有的倉庫中克隆或者新建一個倉庫。
    • clone一個倉庫。克隆一個倉庫可以用多種協議來實現,如https、ssh、git(具體區別可以去了解)等,不過我們都必須知道倉庫地址(Git URL)
      • $ git clone https://github.com/freeape/hello-world.git
      • $ git clone [email protected]:freeape/hello-world.git
      • $ git clone git://github.com/freeape/hello-world.git
    • 新建一個倉庫需要登入github.com或者$ git --bare init,而建立本地倉庫$ git init(注:如果要push,肯定是要有個遠端倉庫的)
  • 新增內容:$ git add [options] [--] <pathspec>...
  • 撤銷新增內容:$ git rm --cached <added_file_to_undo>
    • 注:在還沒有提交之前,不小心將其他的內容新增進來了可以用此命令,沒有提交,不存在HEAD版本,所有千萬不能用$ git reset HEAD命令,這樣會刪除你本地的內容,服務端又沒儲存,那你就不能恢復了,不過可以用恢復工具,但是這個不靠考。
  • 檢視當前工作倉庫的狀態:$ git status
  • 提交新增的檔案到快取區:$ git commit
  • 將提交的檔案上傳到伺服器:$ git push
  • 指定預設主機來push:$ git push -u origin master
  • 如果遠端主機的版本比本地新,強推:$ git push -f origin master
  • 不管遠端是否有沒有這個分支,均推上去:$ git push --all origin master
  • 從伺服器上更新取回到本地:$ git pull = $ git fetch + $ git merge
  • 新增遠端倉庫(SSH方式):$ git remote add origin [email protected]:UserName/Repository.git
  • 檢視當前遠端倉庫:$ git remote -v
  • 檢視操作日誌:$ git log
  • 刪除檔案跟蹤並且刪除檔案系統中的檔案file:$ git rm file
  • 刪除檔案跟蹤但不刪除檔案系統中的檔案file: $ git rm --cached file
  • 檢視遠端主機名為origin的資訊:$ git remote show origin
  • 新增遠端主機:$ git remote add 主機名 網址,如$ git remote add origin [email protected]/UserName/Repository.git
  • 刪除本機連線的遠端主機test(只是刪除本機與服務端的倉庫連線):$ git remote rm test
  • 重新命名遠端主機名:$ git remote rename 原主機名 新主機名
  • 檢視遠端分支:$ git branch -r
  • 檢視所有分支:$ git branch -a
    • $ git branch -a
    • * master
    • remotes/origin/master
    • 表示本地主機的當前分支為master,遠端分支為origin/master
  • 建立一個名為test的分支:$ git branch test
  • 切換到test分支:$ git checkout test
  • 在origin/master基礎上建立newBranch分支:$ git checkout -b newBrach origin/master
  • 合併分支:$ git merge newBranch
  • 刪除分支:$ git branch -d newBranch
  • 顯示當前工作版本和HEAD的區別:$ git diff HEAD
    • 注:diff裡面a表示前面那個變數,b表示第二個變數
  • 將兩個分支(branch1 branch2)的最新一次提交做比較:$ git diff branch1 branch2
  • 比較上次提交和上上次提交:$ git diff HEAD^ HEAD
  • 比較當前目錄和分支test的差別:$ git diff test
  • 檢視尚未提交的目錄更新了那些部分:$ git diff --stat 或者$ git status
  • 設定branch 命令別名:$ git config --global alias.br branch
  • 檢視所有提交的HEAD版本:$ git reflog
  • 恢復某個版本:$ git reset --hard 12abc3d

3.2 例項操作

  1. 在本機中新建GitTest 資料夾:
  2. 進入這個資料夾:
  3. 初始化GitTest 資料夾,生成了.git資料夾,即建立了本地倉庫:
  4. 建立GitTest.txt 文字檔案,並輸入“GitTest!”字串:
  1. 列出GitTest資料夾中所有檔案和目錄:
  2. 檢視當前倉庫狀態:
  3. 將GitTest.txt檔案新增進快取區:
  1. 解決warning:CRLF will be replaced by LF in GitTest.txt:
  2. 檢視當前倉庫狀態:
  3. 提交內容:
到上面幾步,本地處理完了,接下來如果要把倉庫push到伺服器上還需要做一些工作,如在github.com上建立遠端倉庫,生成SSH Key,並新增到設定,最後才是push。
  1. 在github上登入並建立伺服器端倉庫:
  1. 當前倉庫新增遠端倉庫:
  2. 檢測是否新增成功:
  3. 更新遠端版本到本機倉庫:
  1. push本機倉庫內容到伺服器倉庫:

4 後續學習和了解

  • branch/checkout
  • 其他命令的引數選項功能
  • 不同協議傳輸方式區別
  • markdown程式設計
  • ...

相關推薦

GIT---步步入門Windows Git Bash

0 前言     不同的版本控制工具的比較這裡就不介紹了,我的入門是從windows開始的,而且是使用純命令方式(Git Bash),當然也可以結合TortoiseGit或者msysgit中的GIT

git學習筆記1-剛剛入門霜之小刀

git學習筆記1-剛剛入門(霜之小刀) 歡迎轉載和引用,若有問題請聯絡 若有疑問,請聯絡 Email : [email protected] QQ:2279557541 1、git中檔案的狀態 這個一開始我都挺難理解的,因為我以前是使用sv

Elasticsearch學習,請先篇!Elasticsearch教程01|MVP講堂

作者:阿里雲MVP 銘毅 上節內容:死磕 Elasticsearch 方法論:普通程式設計師高效精進的 10 大狠招!下節連結:Elasticsearch增、刪、改、查操作深入詳解(Elasticsearch教程02) 題記:Elasticsearch研究有一段時間了,現特將Elasticsearch相關

MongoDB入門安裝與配置

  https://www.cnblogs.com/cbw-mango/p/7987682.html   一.簡介 MongoDB  是一個基於分散式檔案儲存的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。 mon

CentOS下Git伺服器搭建與客戶端windows和centos搭建

一.伺服器端 1.yum安裝Git伺服器 yum install -y git 2.建立一個git使用者,用來執行git服務 useradd git 3.建立客戶端登入證書 注,收集所有需要登入的使用者的公鑰,就是他們自己生成的id_rsa.pub檔案,把所有公鑰複製到/

git和碼雲使用教程Windows二方法

  本Git和碼雲入門操作 一方面 簡潔明瞭,忽略對簡單的碼雲註冊的演示,只做文字引導;另一方面,重點突出,對git連結碼雲容易採坑的地方,詳細步驟。且本文有兩種Git軟體連結碼雲的方法,一種是視窗也程式碼輸入;另一種是介面操作,各有千秋,歡迎“品嚐”。 1.程

mycat安裝及入門windows下安裝

一、安裝及啟動: 1.安裝 切換到mycat 目錄 mycat.bat install 2.啟動 mycat.bat start 3.查詢執行狀態 mycat.bat status 4.停止服務 mycat.bat stop 二、配置檔案介紹  

python如何玩“跳跳”!windows安桌版本請進!

郵箱 技術 通過 xxx jump 如何 imp adb bsp 最近“跳一跳”,很火爆,有木有? 看了一下網上的教程,動作搭建了一下環境,就可以用腳本自動跑起來啦!!! 下面說一下android手機的實現過程: 首先,是python環境的搭建   環境的搭建, 1,安裝p

MongoDB 用法入門windows

根據 all 默認 set www 安裝包 屬性 str red 概述 大家對數據庫肯定不陌生,肯定也有很多人用過MySQL,但是在用MySQL的時候各種建表,寫表之間的關聯讓人非常頭疼。 MongoDB也是一種數據庫,但是它不是用表,而是用集合來裝數據的,我對這種數據儲存

、ESP8266入門基於LUA開發

opera 包括 blog 情況 探索 到你 哈哈哈 打開 雜項 序 一入坑便停不下來。。。 還挺有意思的哈,233,,,, 資料雜,自己一個一個去找確實浪費了不少時間,而且大多還都是英文的,需要硬著頭皮看。 這次實踐入門,更是對英語的重要確信無疑。Github必

菜鳥帶你原始碼——不懂你打ArrayList原始碼分析基於java 8

文章目錄 看原始碼並不難 軟體環境 成員變數: 構造方法 核心方法 get方法 remove方法 add方法 結束 看原始碼並不難 如何學好程式設計?如何寫出優質的程式碼?如

各種排序演算法,步步更新,桶排序,氣泡排序,選擇排序,快速排序

部分方法來自我關注的博主  J_小浩子  謝謝 1 桶排序  bucketsort 1 桶排序 #include <stdio.h>//桶排序基本說明 int main(){     int data1[11]={0},tem

Mycat入門Windows環境

Mycat(Windows環境)(1) 初入門 Mycat 是SQL叢集中介軟體,基於阿里開源的Cobar產品而研發,Cobar的穩定性、可靠性、優秀的架構和效能 1. MyCat準備 安裝 mysql 安裝jdk 1.8

Zabbix實戰篇步步帶你到郵件報警

zabbix純內網環境監控伺服器傳送郵件報警 尊敬的各位大佬,親愛的小白們,以及正在剛入門zabbix的精英們,你們好,本文章適讀範圍: 大佬:瞅一眼就行了。 小白:我去,這是啥有點看不太懂。 正在入門zabbix:這文章還可以,先存下來,說不定以後有用。 打醬油的

mysql 反思 windows常用命令

最近對mysql 的索引想深入的瞭解一下,於是乎就寫了個這。 1.使用場景描述:有些公司線上不能直接用資料庫工具連線,因為沒有暴露出外部連結的介面,於是乎我們只能通過跳板機登入上伺服器在連線上想要連線的資料庫。 2.首先是登入mysql:    先進入mysql 的命令

Linux程式設計:入門建立自己的靜態庫

專案檔案最終的樹目錄,生成目標程式後,可以刪除中間檔案   note:靜態庫以lib開頭 ,比如mylib.a 靜態庫缺點:很多程式使用一個函式庫的函式時,會產生很多個副本。 共享庫.so可以解決此問題。 建立自己的函式,放在不同的標頭檔案中,只定義不宣告,並用gcc編譯 /

STM32F4discovery_CDC_Device資料傳輸的步步實現USB2.0FS

1. 需求 某專案需要微控制器把ADC資料上傳到電腦。方法有兩種:1、USB;2、乙太網。百度必應了一番,發現有人用過NXP的LPC的一款帶USB2.0 HighSpeed phy的片子,但是採用BGA封裝,開發難度上了一個層次。這兩年內使用的STM32F1、F4比較多,對

步步探尋打款系統的建立過程

1.專案背景 初始階段 業務方訂單稽核通過後,會有離線任務不斷輪訓向支付中心發起呼叫,支付中心打款處理完成後會返回ifSuccess(是否落庫),state,code,error Message等。如果落庫且code為打款成功,訂單業務狀態會修改為打款成功。 發

關於javascript的原型和原型鏈,就夠了

溫故 建立物件的三種方式 通過物件直接量 通過new建立物件 通過Object.create() js中物件分為兩種 函式物件 普通物件 仔細觀察如下程式碼 function Foo(name) { this.name = name; } var fo

懂Transformer內部原理含PyTorch實現

Transformer註解及PyTorch實現 原文:http://nlp.seas.harvard.edu/2018/04/03/attention.html   作者:Alexander Rush  轉載自機器之心:https://www.jiqizhixin.com/artic