1. 程式人生 > >開發工具篇:Git和Github

開發工具篇:Git和Github

開發工具篇:Git和Github

Git是什麼?

Git是目前世界上最先進的分散式版本控制系統。工作原理 / 流程:

  • Workspace:工作區
  • Index / Stage:暫存區
  • Repository:倉庫區(或本地倉庫)
  • Remote:遠端倉庫 (一般公司內網選擇GitLab,外網可以選擇GitHub或者碼雲)

如果沒有Git!

  1. 不能多人並行修改伺服器的同一個檔案。
  2. 不能對檔案的每一次提交的歷史記錄進行查閱,回退。
  3. 不能對團隊中的人進行許可權控制
  4. 不能使用分支去進行多線作戰

SVN與Git的最主要的區別?

SVN是集中式版本控制系統,版本庫是集中放在中央伺服器的,而幹活的時候,用的都是自己的電腦,所以首先要從中央伺服器那裡得到最新的版本,然後幹活,幹完後,需要把自己做完的活推送到中央伺服器。集中式版本控制系統是必須聯網才能工作,如果在區域網還可以,頻寬夠大,速度夠快,如果在網際網路下,如果網速慢的話,就納悶了。最主要的問題是,如果伺服器掛了,那麼子節點上的內容只是當前狀態,這種單點故障,想恢復以前的內容就很難了。

Git是分散式版本控制系統,那麼它就沒有中央伺服器的,每個人的電腦就是一個完整的版本庫,這樣,工作的時候就不需要聯網了,因為版本都是在自己的電腦上。既然每個人的電腦都有一個完整的版本庫,那多個人如何協作呢?比如說自己在電腦上改了檔案A,其他人也在電腦上改了檔案A,這時,你們兩之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。而且每個人的機器就是一整套版本庫,可以直接去恢復伺服器的故障。

1 下載安裝

https://git-scm.com/

1.1 window傻瓜安裝

安裝完成後可以在開始選單或者滑鼠右鍵中看見Git logo,點選Git Bash會出現命令視窗,則說明成功。

1.2 linux(Centos)傻瓜安裝

yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum -y install git-core

2 基本使用篇

2.1 自報家門(全域性標識)

因為Git是分散式版本控制系統,所以需要填寫使用者名稱和郵箱作為一個標識。

注意:git config --global 引數,有了這個引數,表示你這臺機器上所有的Git倉庫都會使用這個配置。當然你也可以對某個倉庫指定的不同的使用者名稱和郵箱。(針對某個專案不帶--global引數)

git config --global user.name Heaton
git config --global user.email [email protected]
#查詢當前配置資訊
git config --list
#通過檔案檢視全域性配置資訊
cat ~/.gitconfig

2.2 初始化版本庫與區域性標識

什麼是版本庫?版本庫又名倉庫,英文名repository,你可以簡單的理解一個目錄,這個目錄裡面的所有檔案都可以被Git管理起來,每個檔案的修改,刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻還可以將檔案”還原”。簡單的理解,就是讓我們的專案交給Git大管家來幫我們管理,需要讓Git知道是哪個專案。

  1. 建立一個版本庫也非常簡單,選擇一個資料夾目錄,例如:D:\testgit。
  2. 通過命令 git init 把這個目錄變成git可以管理的倉庫。
  3. 這時候你當前testgit目錄下會多了一個.git的目錄,這個目錄是Git來跟蹤管理版本的,沒事千萬不要手動亂改這個目錄裡面的檔案,否則,會把git倉庫給破壞了。

而我們的標識資訊就在config檔案下。

沒有區域性標識就會使用全域性標識,一般情況下(推薦),使用全域性標識就好了。

區域性標識優先順序大於全域性標識。

cat .git/config
git config user.name Heaton_1
git config user.email [email protected]_1

2.3 基礎操作

2.3.1 工作區->暫存區->本地庫基礎操作

  • 使用git restore撤銷工作區修改

  • 使用git add然後使用git commit將檔案新增到本地庫

  • 使用git commit -a 將檔案新增到本地庫

2.3.2 日誌分析

2.3.3 版本跳躍

  • 使用git reset --hard 版本號,跳躍到該版本

  • 使用git reset --hard HEAD^ ,跳躍到之前的版本 (^一個就是一個版本,^^兩個就是兩個版本)
  • 使用git reset --hard HEAD~1 ,跳躍到之前的版本 (數字就是要回退的版本數)
  • 以上兩個命令只能後退版本號

  • --soft --mixed -- hard 引數對比
    • --soft (軟回退)僅僅在本地庫移動HEAD指標
    • --mixed (混合回退)在本地庫移動HEAD指標,重置暫存區
    • --hard (硬回退)在本地庫移動HEAD指標,重置暫存區,重置工作區

2.3.4 刪除檔案找回

2.3.5 比較檔案改動

3 分支使用篇:多人協作

3.1 分支操作流程

在實際開發中,我們常常會有很多開發分支,每個小夥伴在自己的開發分支上做完了事情,就會將程式碼提交到測試分支上面,由測試同學去測試,修改問題後會將程式碼合併到主分支上釋出。

當然有些公司還會有預釋出分支,修改bug分支,原理是一樣的,根據規範和喜好來咯。

3.2 分支操作

  • 檢視分支:git branch -v
  • 建立分支:git branch [分支名]
  • 切換分支:git checkout [分支名]
  • 合併分支:git merge [分支名]

3.2.1基礎分支操作

3.2.2沒有衝突的合併操作

3.2.3有衝突的合併操作

4 遠端倉庫操作

https://github.com/

github是其中一種遠端倉庫,註冊賬號,建立倉庫就可以使用了。

還有碼雲,gitlab等等遠端倉庫產品。

4.1 建立

4.2 儲存遠端倉庫地址

  • git remote -v 檢視遠端倉庫
  • git remote add [遠端倉庫別名] [遠端倉庫地址]

4.3 推送遠端倉庫

  • git push [遠端倉庫地址] [分支名]

4.4克隆

  • git clone [遠端倉庫地址]

4.5 ssh免密操作

  • 建立SSH Key。在使用者主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個檔案,如果有的話,直接跳過此如下命令,如果沒有的話,開啟命令列,
    輸入如下命令(三次回車):
    • ssh-keygen

  • 登入github,使用者頭像下開啟” settings”中的SSH Keys頁面,然後點選“Add SSH Key”,填上任意title,在Key文字框裡黏貼id_rsa.pub檔案的內容。

4.6 邀請其他開發者

4.7 拉取操作

  • git fetch [遠端庫地址] [分支名]
  • git merge [分支名]
  • git pull -->(git fetch 和 git merge 兩步操作)

4.7.1 使用者1修改檔案推送到遠端庫

4.7.2 使用者2拉取遠端庫改動(2步)

4.7.3 使用者2拉取遠端庫改動(1步)

重複4.7.1操作

4.8 多人協作衝突解決

使用者1改變檔案

使用者2改變檔案

修改衝突的檔案

4.9 遠端協作

如果未加入團隊,不是開發者,想提交一些程式碼怎麼辦呢。github有遠端協作功能。

  • 使用另一個賬戶,訪問專案地址,Fork,克隆一個專案下來

  • 修改檔案內容,提交遠端倉庫

  • pull request

  • 主賬號登陸在pull request中就可以看見該次請求了,稽核程式碼,發現主庫被修改了。

5 idea中操作git

  • 新增賬號密碼->新增修改提交推送(所有的git操作都可以在idea中進行哦)

6 github外掛

chrome --> Octotree

idea --> ignore

相關推薦

開發工具GitGithub

開發工具篇:Git和Github Git是什麼? Git是目前世界上最先進的分散式版本控制系統。工作原理 / 流程: Workspace:工作區 Index / Stage:暫存區 Repository:倉庫區(或本地倉庫) Remote:遠端倉庫 (一般公司內網選擇GitLab,外網可以選擇Git

第211天gitgithub的區別使用詳解

報錯 window 回歸 技術分享 出現 信息 -s nload 指定 一、git 1、什麽是git 它是一個源代碼管理工具,在一個項目中,凡是由開發人員編寫的都算是源代碼,源代碼有必要管理起來,讓源代碼可以被追溯,主要記錄每次變更了什麽,誰主導這次變化。人為的維護比較麻煩

Java開發工具對比EclipseIntelliJ IDEA

如果你只是想找個IDE來學習Java,或者你需要漂亮的圖示,再或者你的電腦配置並不高,那麼Eclipse是個不錯的選擇。如果你想找個能提升開發效率的IDE,想找一個更快更方便的工具,推薦你用IntelliJ IDEA。 Eclipse工具 第一:在E

把本地檔案上傳到遠端倉庫gitgithub,前提是上傳的不能是空資料夾

把本地檔案上傳到遠端倉庫:git和github 前提是上傳的不能是空資料夾,git是不能上傳空資料夾的,要是太想上傳空資料夾,就往裡面放一個readme.txt,老子搞了半天就是因為這個原因沒上傳成功我的檔案目錄,廖雪峰的部落格裡面也沒有提醒,真是太壞了 (

Python開發【筆記】git&github 快速入門

精神 源代碼 公開 平臺 per 其中 http cvs tro github入門 簡介:   很多人都知道,Linus在1991年創建了開源的Linux,從此,Linux系統不斷發展,已經成為最大的服務器系統軟件了。   Linus雖然創建了Linux,但Linux的壯大

使用gitgithub進行協同開發流程

搜到的一位大神寫的東西,感覺很不錯。收了! 它的老家:https://github.com/livoras/blog/issues/7 以下是原文內容: 目錄 前言 倉庫(Repository) 源倉庫 開發者倉庫 分

Git學習第(二)Git建立本地倉庫並與GitHub遠端倉庫關聯

本文基於Windows系統進行相關的配置。 1、建立本地Git倉庫 上一篇文章Git學習第(一)篇:Git下載與安裝中已經介紹了Git下載和安裝的方法,並按照裡面的步驟完成了安裝,接下來需要建立本地倉庫 第一步,找到需要建立Git倉庫的專案資料夾,比如我的專案為html5,

工具PyCharm常用配置功能

前言 PyCharm是一種Python IDE,帶有一整套可以幫助使用者在使用Python語言開發時提高其效率的工具,比如除錯、語法高亮、Project管理、程式碼跳轉、智慧提示、自動完成、單元測試、版本控制。此外,該IDE提供了一些高階功能,以用於支援一些通

IPhone開發工具-利用xcode profileanalyze進行效能優化

記憶體洩漏問題的解決 記憶體洩漏(Memory Leaks)是當一個物件或變數在使用完成後沒有釋放掉,這個物件一直佔有著這塊記憶體,直到應用停止。如果這種物件過多記憶體就會耗盡,其它的應用就無法執行。這個問題在C++、C和Objective-C的MRR中是比較普遍的問題。 在Objective-C中釋

Android Studio中GitGitHub使用詳解(上

一、Git和GitHub簡述 1.Git 分散式版本控制系統,最先使用於Linux社群,是一個開源免費的版本控制系統,功能類似於SVN和CVS。Git與其他版本管理工具最大的區別點和優點就是分散式; git是採用分散式版本庫機制,不需要每次都將檔案推送到版本控制伺服

微軟官宣史上最貴開發工具 75億美金收購GitHub

微軟副總裁紅衣主教Scott Gu今天的一封郵件結束了這筆軟體歷史上最大收購案,微軟給全球開發人

奪命雷公狗C/C++-----2---開發工具

實用 img nbsp log c++ 工具 技術分享 下載 開發 微軟給大家開發了一款很給力的產品他的名字叫做visual studio 2015,當然現在有2017了,但是這個還是看您自己的愛好來實用的 下載地址我就不公布了,需要的可以私密我噢奪命雷

Linux實戰第二Centos6Centos7密碼破解實戰

root恢復個人筆記分享(在線閱讀):http://note.youdao.com/noteshare?id=744d026219e72c69e606f115bd333ddcPDF版本下載請在附近中下載本文出自 “人才雞雞” 博客,請務必保留此出處http://6575793.blog.51cto.com/6

使用gitgithub管理項目代碼

你是 -s 同時 查看 現在 後來 為我 一次 官方 以前不知道使用代碼管理工具,最後寫的一些東西都沒有了,由於硬盤壞了或者不小心格式化了之類的,後來使用了Git 和Github來托管自己的代碼和讀書筆記方便了不少,到哪裏只要有網就可以把自己的東西拷貝下來繼續使用。 我這裏

關於gitgithub

config user http 簡單使用 git 添加 官網下載 教程 nsh 1.github的簡單使用教程:http://www.jianshu.com/p/f58e38f38594 記得安裝之前要安裝git軟件 官網下載即可。 然後要使用gitbash 添加自己的郵

GitGithub簡單教程

發布 code workspace align cal 團隊合作 github init 出現 網絡上關於Git和GitHub的教程不少,但是這些教程有的命令太少不夠用,有的命令太多,使得初期學習的時候需要額外花不少時間在一些當前用不到的命令上。這篇文章主要的目標是用較少的

Android Studio中GitGitHub使用詳解

可能 必須 窗口 gin 擁有 說明 詳細 對話 發現   一、Git和GitHub簡述    1.Git    分布式版本控制系統,最先使用於Linux社區,是一個開源免費的版本控制系統,功能類似於SVN和CVS。Git與其他版本管理工具最大的區別點和優點就是分布式;  

開發工具

itl targe 開發工具 lan 工具 bsp myeclipse eclips eclipse Eclipse MyEclipse MyEclipse_關閉可視化編輯器 開發工具篇

GitGithub的使用教程

span github merger tar push ssh keys 查看 刪掉 回退 Git是一款免費、開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的項目; GitHub是一個面向開源及私有軟件項目的托管平臺,因為只支持git 作為唯一的版本庫格式進行托管

gitgithub的重要性

完成 原因 們的 src 技術分享 開源 world 倉庫 地址 Git是一款免費、開源的分布式版本控制系統,github是全球最大的同性交友平臺啊呸,說錯了github是一個基於git的代碼托管平臺,付費用戶可以建私人倉庫,我們一般的免費用戶只能使用公共倉庫,也就是代碼要