目錄
3 實際git在pycharm使用
1 概念
1.1 四個工作區(qū)域
Git本地有四個工作區(qū)域:工作目錄(Working Directory)、暫存區(qū)(Stage/Index)照捡、資源庫(Repository或Git Directory)莺丑、git倉庫(Remote Directory)形葬。文件在這四個區(qū)域之間的轉(zhuǎn)換關(guān)系如下:
? Workspace:工作區(qū),就是你平時存放項目代碼的地方
Index / Stage:暫存區(qū)板丽,用于臨時存放你的改動,事實上它只是一個文件,保存即將提交到文件列表信息
Repository:倉庫區(qū)(或版本庫)兑凿,就是安全存放數(shù)據(jù)的位置,這里面有你提交到所有版本的數(shù)據(jù)茵瘾。其中HEAD指向最新放入倉庫的版本
? Remote:遠程倉庫礼华,托管代碼的服務器,可以簡單的認為是你項目組中的一臺電腦用于遠程數(shù)據(jù)交換
1.2 工作流程
git的工作流程一般是這樣的:
1拗秘、在工作目錄中添加圣絮、修改文件;
2雕旨、將需要進行版本管理的文件放入暫存區(qū)域扮匠;
3捧请、將暫存區(qū)域的文件提交到git倉庫。
因此棒搜,git管理的文件有三種狀態(tài):已修改(modified),已暫存(staged),已提交(committed)
工作區(qū)-----》暫存區(qū)---》倉庫
1.3 文件的四種狀態(tài)
版本控制就是對文件的版本控制疹蛉,要對文件進行修改、提交等操作力麸,首先要知道文件當前在什么狀態(tài)可款,不然可能會提交了現(xiàn)在還不想提交的文件,或者要提交的文件沒提交上克蚂。
GIT不關(guān)心文件兩個版本之間的具體差別闺鲸,而是關(guān)心文件的整體是否有改變,若文件被改變埃叭,在添加提交時就生成文件新版本的快照摸恍,而判斷文件整體是否改變的方法就是用SHA-1算法計算文件的校驗和。
Untracked:未跟蹤, 此文件在文件夾中, 但并沒有加入到git庫, 不參與版本控制. 通過git add 狀態(tài)變?yōu)镾taged
untracked----->Staged:git add file(工作區(qū)-暫存區(qū))
unmodify----->untracked: git rm --cached file:移出版本庫(倉庫--->工作區(qū))
unmodify----->modified: 修改文件(暫存區(qū))
modified---->ummodify:取消修改游盲,git checkout file(工作區(qū)--->暫存區(qū))
modified------>staged--->unmodify(倉庫):git add file--->git commit,保存到倉庫
unmodify(倉庫)------>modified:git reset HEAD file误墓,從倉庫中取消暫存,放在暫存區(qū)
Unmodify:文件已經(jīng)入庫(版本庫), 未修改, 即版本庫中的文件快照內(nèi)容與文件夾中完全一致. 這種類型的文件有兩種去處, 如果它被修改, 而變?yōu)镸odified.
如果使用git rm移出版本庫, 則成為Untracked文件
? Modified:文件已修改(工作區(qū)), 僅僅是修改, 并沒有進行其他的操作. 這個文件也有兩個去處, 通過git add可進入暫存staged狀態(tài),?
返回到unmodify狀態(tài), 這個git checkout即從庫中取出文件, 覆蓋當前修改
? Staged: 暫存狀態(tài)益缎,執(zhí)行git commit則將修改同步到庫中, 這時庫中的文件和本地文件又變?yōu)橐恢? 文件為Unmodify狀態(tài). 執(zhí)行g(shù)it reset HEAD filename取消暫存,文件狀態(tài)為Modified
新建文件--->Untracked
使用add命令將新建的文件加入到暫存區(qū)--->Staged
使用commit命令將暫存區(qū)的文件提交到本地倉庫--->Unmodified
如果對Unmodified狀態(tài)的文件進行修改---> modified
如果對Unmodified狀態(tài)的文件(倉庫)進行remove操作--->Untracked
2 四個區(qū)域常用命令
2.1 新建代碼庫
#在當前目錄新建一個Git代碼庫
git init
#新建一個目錄谜慌,將其初始化為Git代碼庫
git init [project-name]
#下載一個項目和它的整個代碼歷史
git clone [url]
2.2 查看文件狀態(tài)
#查看指定文件狀態(tài)
git status [filename]
#查看所有文件狀態(tài)
git status
2.3 工作區(qū)<-->暫存區(qū)
#添加指定文件到暫存區(qū)
git add [file1] [file2] ...
#添加指定目錄到暫存區(qū),包括子目錄
git add [dir]
#添加當前目錄的所有文件到暫存區(qū)
git add .
#當我們需要刪除暫存區(qū)或分支上的文件, 同時工作區(qū)也不需要這個文件了, 可以使用
git rm file_path
#當我們需要刪除暫存區(qū)或分支上的文件, 但本地(工作區(qū))又需要使用, 這個時候直接push那邊這個文件就沒有莺奔,如果push之前重新add那么還是會有欣范。
git rm --cached file_path
2.4 暫存區(qū)---版本庫
#將暫存區(qū)-->資源庫(版本庫)
git commit -m '該次提交說明'
#加了【分支名】 +文件名? 則表示從分支名為所寫的分支名中拉取文件 并覆蓋工作區(qū)里的文件
git checkout 分支名 文件名
#移除不必要的添加到暫存區(qū)的文件
git reset HEAD 文件名
#去掉上一次的提交(會直接變成add之前狀態(tài))?
git reset HEAD^
#去掉上一次的提交(變成add之后,commit之前狀態(tài))
git reset --soft? HEAD^
2.5 遠程操作
#取回遠程倉庫的變化令哟,并與本地分支合并
git pull
#上傳本地指定分支(資源庫)到遠程倉庫
git push 遠程倉庫url地址
2.6 其它常用命令
#顯示當前的Git配置
git config --list
#編輯Git配置文件
git config -e [--global]
#初次commit之前恼琼,需要配置用戶郵箱及用戶名,使用以下命令:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
3 實際git在pycharm使用
1配置用戶信息:必須的操作
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'yujian01@gongyun.(none)'
在pycharm下的command運行
git config –global user.email? “yujian01@gongyun.(none)”
git config –global user.name “yujian01”
2在 terminal終端使用
git init:初始化git項目目錄
git add . : 添加所有文件到變更列表(注意有個點)
git commit -m "首次提交":
git remote add origin https://github.com/yujian-001/yujian.git:首次提交需要關(guān)聯(lián)遠程倉庫,origin--起源屏富,給一個遠程服務器的路徑
git push -u origin master:推送到遠端(origin)master分,頁面會彈出Git登陸頁面晴竞,此時需要輸入用戶名和密碼
git push https://github.com/yujian-001/yujian.git:后面在提交,直接將文件上傳到遠程倉庫(上傳)
git clone https://github.com/yujian-001/yujian.git:克隆文件狠半,將git遠程倉庫的文件克隆到本地工作目錄(任意的路徑)