我來記筆記啦-Git本地倉庫和遠程Github倉庫

1. Git簡介

  • Git 是目前世界上最早進的分佈式版本控制系統git

  • Git的做用是源代碼管理github

  • Git的誕生shell

做者是 Linux 之父:Linus Benedict Torvaldsvim

當初開發 Git 僅僅是爲了輔助 Linux 內核的開發(管理源代碼)服務器

Git會在根目錄下建立一個.git隱藏文件夾,做爲本地代碼倉庫ssh

Git操做流程:
Git服務器(拉取代碼) --> 本地倉庫 --> 客戶端(提交) --> 本地倉庫 --> Git服務器

2. 工做區暫存區和倉庫區

  • 工做區

對於添加修改刪除文件的操做,都發生在工做區中分佈式

  • 暫存區

暫存區指將工做區中的操做完成小階段的存儲,是版本庫的一部分測試

  • 倉庫區

倉庫區表示我的開發的一個小階段的完成,倉庫區中記錄的各版本是能夠查看並回退的網站

可是在暫存區的版本一旦提交就再也沒有了。版本控制

3. Git單人本地倉庫

# 安裝git
 sudo apt-get install git
 
 # 查看安裝版本
 git --version
 
 # 建立本地倉庫,會在建立倉庫目錄下生成.git目錄
 cd $HOME/gittest/
 git init   --初始化本地倉庫
 
 # 配置我的信息,會記錄在.git目錄下config
  git config user.name '張三'
  git config user.email 'zhangsan@163.com'
  
  # 新建文件,查看文件狀態
  git status   --新建文件在工做區
  
  # 添加項目中全部文件
  git add .
  或者
  # 添加指定文件
  git add login.txt  --添加後文件在暫存區
  
  # 提交到倉庫區
  git commit -m '版本描述'
  
  # 若是文件修改可用添加和提交合並命令
  git commit -am "版本描述"
  
  # 查看歷史版本
  git log
  或者
  git reflog
  
  注意:git reflog 能夠查看全部分支的全部操做記錄(包括commit和reset的操做),包括已經被刪除的commit記錄,git log 則不能察看已經刪除了的commit記錄

4. 回退版本

# 查看版本
git refog

# 回退到最新版本的前一個版本
git reset --hard HEAD^

# 回退到以前具體的一個版本
git reset --hard 版本號
  • HEAD表示當前最新版本
  • HEAD^表示當前最新版本的前一個版本
  • HEAD^^表示當前最新版本的前兩個版本,以此類推...
  • HEAD~1表示當前最新版本的前一個版本
  • HEAD~10表示當前最新版本的前10個版本,以此類推...

5. 撤銷修改

  • 只能撤銷工做區、暫存區的代碼,不能撤銷倉庫區的代碼
  • 撤銷倉庫區的代碼就至關於回退版本操做

5.1 撤銷工做區代碼

# 只修改了內容沒有add添加
git checkout 文件名   --至關於同步了git服務器的代碼

5.2 撤銷暫存區代碼

  • 修改了文件內容,並add到暫存區
# 第一步:將暫存區代碼撤銷到工做區
git reset HEAD  文件名
# 第二步:撤銷工做區代碼
git checkout 文件名

6. Git遠程倉庫Github

6.1建立遠程倉庫

  • Github網站上建立遠程倉庫

Github網站上註冊一個用戶並建立一個測試項目。

Github網址: https://github.com/

# 點擊code下選擇https網址進行復制
例如:
https://github.com/ceshi/info.git

6.2 配置遠程倉庫SSH

# 配置全局git配置文件路徑:~/.gitconfig
vim ~/.gitconfig    --寫入如下內容設置name和email
[user]
name = ceshi
email = 747479317@qq.com
解釋:
name 是github用戶名
email 是github註冊時的郵箱

# 或者使用如下命令設置name和email
cd $HOME
git config --global user.name "github用戶名"
git config --global user.email "github註冊時的郵箱"

# 查看是否設置成功
git config --global --list 

# 生成ssh key祕鑰
ssh-keygen -t rsa -C "github註冊時的郵箱"
執行後一直回車,出現選擇時輸入Y,而後一直回車到最後。

# 生成祕鑰文件, 複製文件內的內容即爲key值
cat ~/.ssh/id_rsa

# 登錄github選擇 Settings --> SSH and GPG keys --> new SSH key
- Title   --隨便寫一個名字
- Key     --粘貼上面生成的key值
點擊 Add SSH key 添加一個key值

6.3 克隆項目

  • 準備經理的文件 $HOME/manager/
  • 準備張三的文件 $HOME/zhangsan/

經理的工做

  • 立項:克隆遠程倉庫+配置身份信息+建立項目+推送項目到遠程倉庫

  • 1.克隆遠程倉庫的命令

    cd $HOME/manager/
    
     # 克隆遠程倉庫到本地,網址爲6.1複製的github建立的測試倉庫網址
     git clone https://github.com/ceshi/info.git
  • 2.配置經理身份信息

cd $HOME/manager/info
  git config user.name '經理'
  git config user.email 'manager@163.com'
  • 3.建立項目
cd $HOME/manager/info
  mkdir test
  vim test/ceshi.py   --寫一個測試文件
  • 4.推送項目到遠程倉庫
# 工做區添加到暫存區
  git add .
  # 暫存區提交到倉庫區
  git commit -m '立項'
  # 推送到github遠程倉庫
  git push
  
  此時test/ceshi.py這個項目文件就推送到github測試項目上了。
  • 5.設置推送到github密碼有效期
# 每次 push 都須要輸入github帳號與密碼
# 設置記住密碼(默認15分鐘):
git config --global credential.helper cache
# 若是想本身設置時間,能夠這樣作(1小時後失效):
git config credential.helper 'cache --timeout=3600'
# 長期存儲密碼:
git config --global credential.helper store

張三的工做

  • 獲取項目:克隆項目到本地、配置身份信息

  • 1.克隆項目到本地

    cd $HOME/zhangsan/info
    # 克隆遠程倉庫到本地,網址爲6.1複製的github建立的測試倉庫網址
    git clone https://github.com/ceshi/info.git
  • 2.配置張三身份信息

cd $HOME/zhangsan/info
 git config user.name '張三'
 git config user.email 'zhangsan@163.com'

6.4 多人協同開發

  • 經理修改測試項目
cd $HOME/manager/info
# 修改測試文件
vim test/ceshi.py   

# 將修改提交到本地倉庫區
git commit -am '經理修改1'

# 將本地倉庫區代碼推送到遠程倉庫
git push
  • 張三修改測試項目
cd $HOME/zhangsan/info

# 從遠程倉庫同步代碼
git pull

# 修改測試文件
vim test/ceshi.py   

# 將修改提交到本地倉庫區
git commit -am '張三修改1'

# 將本地倉庫區代碼推送到遠程倉庫
git push

這樣就實現了張三和經理協同開發

總結

  • 要使用git命令操做倉庫,須要進入到倉庫內部
  • 要同步服務器代碼就執行:git pull
  • 本地倉庫記錄版本就執行:git commit -am '版本描述'
  • 推送代碼到服務器就執行:git push
  • 編輯代碼前要先pull,編輯完再commit,最後推送是push

6.5 解決代碼衝突

  • 經理修改測試項目
cd $HOME/manager/info
# 修改測試文件
vim test/ceshi.py   

# 將修改提交到本地倉庫區
git commit -am '經理修改2'

# 將本地倉庫區代碼推送到遠程倉庫
git push
  • 張三修改測試項目
cd $HOME/zhangsan/info

# 直接修改測試文件,沒有git pull從遠程服務器拉取文件
vim test/ceshi.py   

# 將修改提交到本地倉庫區
git commit -am '張三修改2'

# 將本地倉庫區代碼推送到遠程倉庫
git push    --報錯提示須要先pull

# pull時提示有文件衝突(張三的本地倉庫內有文件跟遠程倉庫有衝突)
git pull     --從遠程倉庫拉取文件時報錯有衝突
  • 解決衝突
# 此時衝突就產生了,須要修改ceshi.py文件解決衝突 

# 方案:保留全部代碼 或者 保留某一人代碼
vim test/ceshi.py 

# 解決完衝突代碼後,依然須要add、commit、push
  • 容易衝突的操做方式
    • 多我的同時操做了同一個文件
    • 一我的一直寫不提交
    • 修改以前不更新最新代碼
    • 提交以前不更新最新代碼
    • 擅自修改同事代碼
  • 減小衝突的操做方式
    • 養成良好的操做習慣,先pull在修改,修改完當即commitpush
    • 必定要確保本身正在修改的文件是最新版本的
    • 各自開發各自的模塊
    • 若是要修改公共文件,必定要先確認有沒有人正在修改
    • 下班前必定要提交代碼,上班第一件事拉取最新代碼
    • 必定不要擅自修改同事的代碼

6.6 標籤

  • 當某一個大版本完成以後,須要打一個標籤

  • 做用:

    • 記錄大版本
    • 備份大版本代碼
  • 經理打標籤

cd $HOME/manager/info

# 打本地倉庫v1.0版本
git tag -a 標籤名 -m '標籤描述'
例:
git tag -a v1.0 -m 'version 1.0'
 
# 經理推送標籤到遠程倉庫
git push origin 標籤名
例:
git push origin v1.0
  • 刪除本地和遠程標籤
# 刪除本地標籤
git tag -d 標籤名

# 刪除遠程倉庫標籤
git push origin --delete tag 標籤名

6.6 分支

分支做用

  • 區分生產環境代碼以及開發環境代碼
  • 研究新的功能或者攻關難題
  • 解決線上bug

1. 經理建立新分支

cd $HOME/manager/info/

# 查看當前分支
git branch

# 建立並切換到dev分支
git checkout -b dev

# 設置本地分支跟蹤遠程指定分支(將分支推送到遠程)
git push -u origin dev

2. 經理在dev分支開發新程序

cd $HOME/manager/info

# 查看當前文件狀態
git status

# 從遠程倉庫同步文件
git pull

# 修改測試文件1
vim test/ceshi1.py   

# 將修改提交到本地倉庫區
git commit -am '經理修改3'

# 將本地倉庫區代碼推送到遠程倉庫
git push

3. 分支合併

# 切換到原分支
git checkout master

# 將dev分支代碼合併到master(合併分支默認在本地倉庫完成)
git merge dev

# 經理推送合併分支操做到遠程倉庫
git push

4. 張三同步合併和的分支代碼

cd $HOME/zhangsan/info/

# 查看當前分支
git branch

# 在master分支,從服務器拉取合併分支後的代碼
git pull
相關文章
相關標籤/搜索