GIT的介紹及入門操作

GIT簡介

  1. 什麼是GIT

    git是一個開源的分佈式版本控制系統,用於高效的管理各種大小項目和文件。

  2. 代碼管理工具的用途

    防止代碼丟失,做備份
    項目的版本管理和控制,可以通過設置節點進行跳轉
    建立各自的開發環境分支,互不影響,方便合併
    在多終端開發時,方便代碼的相互傳輸

  3. git的特點

    git是開源的,多在*nix下使用,可以管理各種文件
    git是分佈式的項目管理工具(svn是集中式的)
    git數據管理更多樣化,分享速度快,數據安全
    git 擁有更好的分支支持,方便多人協調

  4. git的安裝

    sudo apt-get install git

GIT的使用

git操作流程圖

基本概念

  • 工作區:項目所在操作目錄,實際操作項目的區域
  • 暫存區: 用於記錄工作區的工作(修改)內容
  • 倉庫區: 用於備份工作區的內容
  • 遠程倉庫: 遠程主機上的GIT倉庫

注意: 在本地倉庫中,git總是希望工作區的內容與倉庫區保持一致,而且只有倉庫區的內容才能
和其他遠程倉庫交互。

初始配置

配置命令:git config

  • 配置所有用戶:git config --system [選項]
    • 配置文件:/etc/gitconfig
  • 配置當前用戶:git config --global [選項]
    • 配置文件:~/.gitconfig
  • 配置當前項目:git config [選項]
    • 配置文件:project/.git/config
  1. 配置用戶名
    將用戶名設置爲Teen
    sudo git config --system user.name Teen
  2. 配置用戶郵箱
    將郵箱設置爲[email protected]
    git config --global user.email [email protected]
  3. 配置編譯器
    配置編譯器爲pycharm
    git config core.editor pycharm
  4. 查看配置信息
    git config --list

基本命令

  1. 初始化倉庫

    git init
    意義:將某個項目目錄變爲git操作目錄,生成git本地倉庫。即該項目目錄可以使用git管理

  2. 查看本地倉庫狀態

    git status
    說明: 初始化倉庫後默認工作在master分支,當工作區與倉庫區不一致時會有提示。

  3. 將工作內容記錄到暫存區

    git add [files..]
    將 a ,b 記錄到暫存區
    git add a b
    將所有文件(不包含隱藏文件)記錄到暫存區
    git add *

  4. 取消文件暫存記錄

    git rm --cached [file]

  5. 將文件同步到本地倉庫

    git commit [file] -m [message]
    說明: -m表示添加一些同步信息,表達同步內容
    將暫存區所有記錄同步到倉庫區
    git commit -m 'add files'

  6. 查看commit 日誌記錄

    git log
    git log --pretty=oneline

  7. 比較工作區文件和倉庫文件差異

    git diff [file]

  8. 將暫存區或者某個commit點文件恢復到工作區

    git checkout [commit] -- [file]
    –是爲了防止誤操作,checkout還有切換分支的作用

  9. 移動或者刪除文件

    git mv [file] [path]
    git rm [files]
    注意: 這兩個操作會修改工作區內容,同時將操作記錄提交到暫存區。

版本控制

  1. 退回到上一個commit節點

    git reset --hard HEAD^
    注意 : 一個^表示回退1個版本,依次類推。當版本回退之後工作區會自動和當前commit版本保持一致

  2. 退回到指定的commit_id節點

    git reset --hard [commit_id]

  3. 查看所有操作記錄

    git reflog
    注意:最上面的爲最新記錄,可以利用commit_id去往任何操作位置

  4. 創建標籤
    標籤: 在項目的重要commit位置添加快照,保存當時的工作狀態,一般用於版本的迭代。

    git tag [tag_name] [commit_id] -m [message]
    說明: commit_id可以不寫則默認標籤表示最新的commit_id位置,message也可以不寫,但是最好添加。
    在最新的commit處添加標籤v1.0
    git tag v1.0 -m '版本1'

  5. 查看標籤

    git tag 查看標籤列表
    git show [tag_name] 查看標籤詳細信息

  6. 去往某個標籤節點

    git reset --hard [tag]

  7. 刪除標籤

    git tag -d [tag]

保存工作區

  1. 保存工作區內容

    git stash save [message]
    說明: 將工作區未提交的修改封存,讓工作區回到修改前的狀態

  2. 查看工作區列表

    git stash list
    說明:最新保存的工作區在最上面

  3. 應用某個工作區

    git stash apply [stash@{n}]

  4. 刪除工作區

    git stash drop [stash@{n}] 刪除某一個工作區
    git stash clear 刪除所有保存的工作區

分支管理

Git分支是由指針管理起來的,所以創建、切換、合併、刪除分支都非常快,非常適合大型項目的開發。

在分支上做開發,調試好了後再合併到主分支。那麼每個人開發模塊式都不會影響到別人。
分支使用策略:

  • 主分支(默認創建的Master分支)只用來分佈重大版本(對於每個版本可以創建不同的標籤,以便於查找);
  • 日常開發應該在另一條分支上完成,可以取名爲Develop;
  • 多人開發時,每個人還可以分出一個自己專屬的分支,當階段性工作完成後應該合併到上級分支。

分支操作

  1. 查看分支情況

    git branch
    說明: 前面帶 * 的分支表示當前工作分支

  2. 創建分支

    git branch [branch_name]
    說明: 基於a分支創建b分支,此時b分支會擁有a分支全部內容。在創建b分支時最好保持a分支"乾淨"狀態。

  3. 修改分支名稱

    `git branch –m 當前分支名 新的分支名

  4. 切換工作分支

    git checkout [branch]
    說明: 2,3可以同時操作,即創建並切換分支
    git checkout -b [branch_name]

  5. 合併分支

    git merge [branch]
    衝突問題是合併分支過程中最爲棘手的問題
    當分支合併時,原分支和以前發生了變化就會產生衝突
    當合並分支時添加新的模塊(文件),這種衝突可以自動解決,只需自己決定commit操作即
    可。
    當合並分支時兩個分支修改了同一個文件,則需要手動解決衝突。

  6. 刪除分支

    git branch -d [branch] 刪除分支
    git branch -D [branch] 刪除沒有被合併的分支

遠程倉庫

所有操作在本地git倉庫下進行

  1. 添加遠程倉庫

    git remote add origin https://github.com/xxxxxxxxx

  2. 查看連接的主機

    git remote
    注意: 一個git項目連接的遠程主機名不會重複

  3. 刪除遠程主機

    git remote rm [origin]

  4. 將本地分支推送給遠程倉庫

    將master分支推送給origin主機遠程倉庫,第一次推送分支使用-u表示與遠程對應分支建立自動關聯
    git push -u origin master

  5. 推送代碼到遠程倉庫

    git push

  6. 推送標籤

    git push origin [tag] 推送本地標籤到遠程
    git push origin --tags 推送本地所有標籤到遠程

  7. 推送舊的版本

    git push --force origin 用於本地版本比遠程版本舊時強行推送本地版本

  8. 刪除遠程分支和標籤

    git branch -a 查看所有分支
    git push origin [:branch] 刪除遠程分支
    git push origin --delete tag [tagname] 刪除遠程倉庫標籤

  9. 從遠程獲取代碼

    獲取遠程分支代碼
    git pull
    將遠程分支master拉取到本地,作爲tmp分支
    git fetch origin master:tmp
    區別
    - pull將遠程內容直接拉取到本地,並和對應分支內容進行合併
    - fetch將遠程分支內容拉取到本地,但是不會和本地對應分支合併,可以自己判斷後再使用merge合併。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章