Git的使用配置、常見錯誤處理

一. Git

​ Git是用於代碼託管工具。python

​ 開發來龍去脈:2002 Linux kernel 項目開發使用商業版的BitKeeper 版本控制系統(VSC)管理項目程序,但與開發BK的公司關係決裂,免費版本開始收費,促使Linux開發者本身開發新的代碼託管工具。尤爲是Linus Torvalds(Linux之父)等,爲建立一個快速、簡單、多併發、像Linux同樣高效管理大型項目,而研發的開源代碼管理工具。git

# Maxos會有內置git,不須要單獨安裝,Windows須要下載安裝。
# git 全局命令
git --version # 查看git版本號,安裝後查看
git clone url   # 供其餘終端使用
  1. Git 三種狀態
    • Working Directory :本地工做目錄
    • Staging Area:添加文件,用於commit前
    • .git directory(Repository):本地倉庫,存儲commit數據

  1. 基本概念
    • Committed 表示數據已經安全存儲到本地數據庫中(本質是標記版本號git commit -m "版本號")
    • Modified 表示已經修改的文件,但沒有進行Commit
    • Staged 表示已經標記一個修改過的文件當前版本,下次commite上傳(本質就是git add 文件名)
  2. Git基本工做流程:
  • 在working tree中修改文件
  • Committed 表示數據已經安全存儲到本地數據庫中
  • Modified 表示已經修改的文件,但沒有進行Commit
  • Staged 表示已經標記一個修改過的文件當前版本,下次commite使用
  1. Git配置文件
Git能夠更改config文件,自定義化主題。Git配置文件可能存儲到三個位置:
1.  /etc/gitconfig file: 全局配置文件
2. ~/.gitconfig or ~/.config/git/config file:本地存儲我的帳號
3.  .git/config:本地git倉庫路徑中的文件,包含初始化,上傳,下載的配置
# 配置全局帳號
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
# --global參數只能設置一個帳號,若是使用多個帳號,須要省略此參數
# 自定義編輯器(for mac)
git config --global core.editor emacs
# (for windows)
git config --global core.editor "'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -nosession"
# 查看git配置
git config --list
# 查看用戶名
git config user.name

2、Git創建倉庫的兩種方法

  1. 本地創建新git 倉庫(repository )數據庫

    # for mac
    cd /User/henry/***  # 進入本地文件夾(即將進行託管的文件夾)
    git init # 進行git 初識化,同時會生成本地倉庫(.git/)目錄
    git add 文件名(.) # 添加到staging area
    git status # 查看git 信息,此時可看到已添加到staging area的文件以及爲添加的文件
    git commit -m '提示符' # 對文件進行標記,利於區分
    git remote add henry https://gitee.com/***/***.git  # 關聯到碼雲帳戶
    git push -u henry master # 推送到碼雲,會提示輸入密碼
    
    # for windows
    進入待託管的文件夾,右擊鼠標,打開git bash here
    其他步驟同mac
  2. 若是已經使用過git 可使用clone 命令vim

    # for example
    # 若是想重命名直接在url後添加文件名,也可省略表示默認文件名
    git clone https://gitee.com/***/***  (文件名)

Note: git 不只支持http協議,還支持ssh 傳輸協議windows

3、常見報錯及處理

# 報錯1
# 緣由:本地倉庫爲空
error: src refspec master does not match any.
error: failed to push some refs to 'https://gitee.com/***/***.git'

# 解決方案
git add 文件名 或(.所有文件)
git commit -m "版本名"
# 報錯2
# 緣由:本地與託管平臺數據不一致,常是由在託管平臺刪除致使
! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://gitee.com/***/***.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
  
# 解決方案
git pull henry master  # 強制把遠端數據與本地數據同步
git push -u origin master   # 從新推送便可

# 若是上述步驟不生效,還提示錯誤,可以使用
git push origin master -f # -f 表示強制上傳,不建議常用

4、本地倉庫文件狀態

​ 本地倉庫中的任意文件只有兩種狀態:tracked (追蹤)或者untracked(待追蹤)。安全

​ untracked的文件,git不會進行託管,只有tracked的文件才能push到remote(遠端)。bash

​ tracked文件能夠有3種狀態:unmodified(第一次clone後), modified(本地修改的文件)或者staged(add的文件)。session

5、刪除remote端文件

  • 先在Working Directory(本地),刪除要刪除的文件
# 告知 git, 要刪除的文件 
git rm filename
# 查看文件狀態
git status 
# git 已經檢測到用戶刪除的文件

# 作標記
git commit -m 'test'
# git push origin master

Note: 登錄remote端,便可看到已經刪除文件記錄併發

6、強制同步(慎用)

# 本步驟,主要針對於小白,沒法解決遠端和本地同步問題
1. git add .
2. git commit -m 'test'
3. git push origin master -f

說明:ssh

  • 第3步表示強制讓remote端於local同步
  • 這樣會用local端剛push的數據徹底覆蓋remote 端

七. 忽略指定文件

# 在使用git的過程當中,咱們爲了省事常常會使用 git add . 添加全部文件,可是又一些 .**的文件會同時被 track 到,這個時候咱們就須要使用選擇性忽略
# step1
打開本地git 項目倉庫,Mac/Linux用戶能夠在terimal中打開項目文件夾,windows用戶在項目文件夾中打開Bash。
# step2,新建文件
vim .gitingore
# step3
添加須要忽略的文件
# 效果圖對比
# 配置 .gitignore 前的Working Directory狀態

# 配置 .gitignore 文件

# 配置 .gitignore 後的Working Directory狀態

# 設置好.gitignore 文件後,下次就能夠任性的使用git add . 的操做了。

備註:若有不當之處,歡迎廣大碼友指正。

References:
1. https://book.git-scm.com/book/en/v2/Getting-Started-About-Version-Control 2. 轉載請註明出處。

相關文章
相關標籤/搜索