1. 程式人生 > >Python第十周 學習筆記(1)_Git

Python第十周 學習筆記(1)_Git

學習筆記 git

git

技術分享圖片

  • Repository 倉庫、版本庫

    • git初始化後,會在當前目錄生成一個.git目錄,也就是版本庫
  • Workspace 工作區

    • .git所在的目錄就是工作區,一般是項目的根目錄
  • index 索引

    • 介於工作區和版本庫之間,暫存修改的
  • remote 遠程版本庫
    • 網絡上的另一個版本庫,可以和本地交互

初始化

git init

添加文件

git add index.htm
  • 把文件的當前變化增加到索引中,
  • 此時文件還可繼續修改或添加新的文件,後也要用add提交到索引中
  • 當前目錄批量添加
    git add .
    • 遞歸添加當前目錄及其子目錄所有文件
    • 只要是目錄,就會遞歸添加該目錄下的文件和子目錄

查看狀態

git status

技術分享圖片

git文件分類

  • tracked

    • 已經加入版本庫的文件
  • untracked

    • 未加入到版本庫的文件
  • ignored

    • 忽略的,git不再關註的文件
  • .gitignore
    • 此文件中的文件名、目錄或格式,符合的文件,git會忽略

提交代碼

git commit -m "1st commit"
  • 提交更改到版本庫

  • -m

    • 填寫本次日誌消息
  • git的提交分為兩個步驟:

    • 暫存變更:add作用是把新文件或文件新的改動添加到一個暫存區stage,也就是加入到index中

    • 提交變更:commit提交的時暫存區的改動,而不是物理文件目前的改動,提交到當前分支,默認時master分支
  • git commit index.htm

    • 省略add 直接提交
  • git commit -a
    • 把所有跟蹤的文件的改動自動暫存,然後commit

增補

git commit --amend
  • 把補充的內容增補到上一次commit,不生成新的commit

查看日誌

git log

查看差異

git diff
  • 查看被跟蹤文件未暫存的修改,比較暫存區和工作區
git diff --cached
  • 查看被跟蹤文件暫存的修改,比較暫存區和上一次commit的差異
git diff HEAD
  • 查看被跟蹤文件,比較工作區和上一次commit的差異,HEAD指代最後一次commit

  • HEAD
    • 指代最後一次commit
  • HEAD^
    • 指代上一次提交
  • HEAD^^
    • 指代上上次提交
  • HEAD~n
    • 上n次提交

檢出與重置

git checkout
  • 列出暫存區可以被檢出的文件
git checkout file
  • 從暫存區檢出到工作區,即覆蓋工作區文件,可指定檢出的文件。不清除stage
git checkout commit file
  • 檢出某個commit的指定文件到暫存區和工作區
git checkout .
  • 檢出暫存區的所有文件到工作區
git reset
  • 列出將被reset的文件
git reset file
  • 重置文件的暫存區,和上一次commit一致,工作去不影響
git reset --hard
  • 重置暫存區與工作區,與上一次commit保持一致
git reflog
  • 顯示commit的信息,只要HEAD發生變化,就可以看到
git reset commit
  • 重置當前分支的HEAD為指定commit,同時重置暫存區,工作區不變
git reset --hard [commit]
  • 重置當前分支的HEAD為指定commit,同時重置暫存區和工作區與指定commit一致

reset操作要慎重

移動和刪除

git mv src dest
  • 直接把改名的改動放入暫存區
git rm file
  • 會同時在版本庫和工作目錄中刪除文件
git rm --cached file
  • 將文件從暫存轉成未暫存,從版本庫中刪除,但不刪除工作目錄的該文件,即文件恢復成不追蹤狀態

以上三個命令執行commit後才真正改動

push到服務器

  • 配置本地用戶名和郵箱
git config --global user.name "lptnyy"
git config --global user.email "[email protected]"

內容存儲在 ~/.gitconfig

關聯遠程版本庫

git remote add origin http://name@IP:Port/name/gittest.git\
  • 習慣將遠程版本庫命名為origin,信息保存在.git/config的[remote "origin"]中
  • .git/config是版本庫級別設置文件,具有最高優先級

推送數據

git push -u origin master
  • 第一次推送加-u,之後可不加

密鑰登陸

ssh-keygen -t rsa -C "[email protected]"
  • 生成的公鑰放到遠程庫選項中

克隆

  • 復制遠程庫的ssh地址
git clone git@IP:name/gittest.git

Pycharm中使用git

  • 初次使用沒有project或close project後彈出此頁面 選擇git
    技術分享圖片

技術分享圖片

項目開發

git stash
  • 暫時存儲最後一次提交後的變化,放入棧中
git stash pop
  • 從棧中取出剛才保存的變化

  • 開發中,當前手中的工作沒有完成,需要中斷當前工作來完成其他請求,例如修復bug
  • 已完成的工作內容提交不合適,可能還要需要大量的調整,此時就需要stash存儲未完成的工作

分支branch

  • 至少一個分支,稱為主分支或主幹分支Master,默認在主分支開發
    技術分享圖片

    創建分支

  • 分支名一般字符采用英文字母和-
    技術分享圖片
  • 點擊Pycharm最下面的version control
  • log頁內選擇要分支的點右鍵new branch

合並分支

  • 切換回master,檢出master
  • 點擊merge changes,選擇no fast forward開始合並

fast forward合並

技術分享圖片

gitflow工作流

  • 最佳實踐

    • 使用Git一般至少兩個分支:master、develop
  • master,生產環境都來主幹分支上拿數據部署,也可使用鉤子自動完成
  • develop,開發分支,開發人員都是檢出這個分支開發

  • 輔助分支
    • feature分支,具體功能開發分支,只與develop分支交互
    • release分支,發布版本
    • hotfix分支,緊急bug修復的版本,最後需要合並到develop和master中

技術分享圖片

Python第十周 學習筆記(1)_Git