萬能造假截圖生成器上海外貿(mào)seo
1.Git簡介
Git是一開源的分布式版本控制系統(tǒng),提供了存儲代碼、管理版本歷史、分支和合并等功能。
-
版本控制是指對軟件開發(fā)過程中各種程序代碼、配置文件及說明文檔等文件變更的管理,是軟件配置管理的核心思想之一。它的主要目的是跟蹤和記錄軟件開發(fā)過程中的每個版本,記錄每個版本的修改歷史、版本號和發(fā)布日期等信息,以便更好地管理代碼和文檔,并幫助開發(fā)人員更好地協(xié)作和開發(fā)軟件。
-
通過版本控制,開發(fā)人員可以隨時回滾到之前的穩(wěn)定版本,恢復錯誤或進行分支開發(fā)等操作,以便更好地管理軟件開發(fā)過程中的變化和風險。
-
版本控制通常與版本控制系統(tǒng)(Version Control System,VCS)相關聯(lián),如Git、SVN等。這些系統(tǒng)提供了存儲代碼、管理版本歷史、分支和合并等功能,幫助開發(fā)人員更好地協(xié)作和管理軟件開發(fā)過程中的版本變化。
2.版本控制的發(fā)展歷史
早期的版本控制系統(tǒng)是本地化管理的,采用某種簡單的數(shù)據(jù)庫記錄文件的歷次更新差異。但隨著合作開發(fā)和協(xié)調(diào)工作的需要,集中式的版本控制系統(tǒng)(CVCS)出現(xiàn)了。
不同的開發(fā)人員通過客戶端連接到集中管理的服務器上,提交或讀取最新的文件,比如常用的SVN就是這種工作模式。
2.1 集中化的版本控制系統(tǒng)
集中化版本控制系統(tǒng),是通過一個集中管理的中央服務器,來保存所有文件修改的歷史版本,而協(xié)同開發(fā)者通過客戶端連接到這臺服務器,從服務器上同步更新或上傳自己的修改。
-
在集中式的版本控制系統(tǒng)中,管理員可以輕松管控每個開發(fā)者的權限,并且維護成本低。
-
但是這種架構下集中式服務器存在明顯的單點故障,如果版本控制服務器宕機,則無法提供服務。
-
如果服務器數(shù)據(jù)丟失并且無法恢復,那么整個項目的數(shù)據(jù)和變更歷史也隨之丟失。
2.2 分布式版本控制系統(tǒng)
為解決以上問題出現(xiàn)了分布式版本控制系統(tǒng)(DVCS),其基本設計理念是客戶端不僅僅提取最新版本的快照,而是把代碼倉庫完整的鏡像下來,相當于在本地有一份完整的數(shù)據(jù)拷貝。這樣,當CVS服務器故障時,通過任何一個本地的鏡像倉庫就可以恢復數(shù)據(jù)。同時還可以和不同的遠端代碼倉庫進行交互,設置不同的協(xié)作流程。
-
用戶在本地就可以查看所有的歷史版本信息,當用戶進行修改提交文件的時候,需要進行遠程更新或提交。
-
用戶即使離線時頁可以進行本地提交,push推送到遠程服務器才需要聯(lián)網(wǎng)。
-
每個用戶都保存了歷史版本,所以只要有一個用戶設備沒問題,就可以恢復數(shù)據(jù)。
3.Git的相關概念
3.1 工作區(qū)域
工作區(qū)域 | 說明 |
---|---|
Workspace | 用戶電腦本地看到的文件和目錄,在Git的版本控制下,構成了工作區(qū)。 |
Index/Stage | 暫存區(qū),一般存放在 .git目錄下,即.git/index,它又叫待提交更新區(qū),用于臨時存放未提交的改動。比如:執(zhí)行git add,這些改動就添加到這個區(qū)域。 |
Repository | 本地倉庫,是一個存放在本地的版本庫。 |
Remote | 遠程倉庫,就是遠程數(shù)據(jù)交換的倉庫。比如:github,碼云等代碼托管平臺所提供的倉庫。 |
Git的工作流程如下:
1)從遠程倉庫中克隆代碼到本地倉庫
2)從本地倉庫中checkout代碼然后進行代碼修改
3)在提交前先將代碼添加到暫存區(qū)
4)將暫存區(qū)的代碼提交到本地倉庫,本地倉庫中保存修改的各個歷史版本
5)修改完成后,需要和團隊成員共享代碼時,將代碼push到遠程倉庫
4.Git下載與安裝
Git - Downloadshttps://git-scm.com/download
5.環(huán)境配置
當安裝Git后首先要做的事情是設置用戶名稱和email地址,每次Git提交都會使用該用戶信息。
5.1 設置用戶信息
git config --global user.name "han"
git config --global user.email "han@woniu.com"
5.2 查看配置信息
git config --list
git config user.name
通過上面的命令設置的信息會保存在~/.gitconfig
文件中
6.初始化倉庫
要使用Git對我們的代碼進行版本控制,首先需要獲得Git倉庫,獲取Git倉庫通常有兩種方式:
????????在本地初始化一個Git倉庫
????????從遠程倉庫克隆
6.1 在本地初始化一個Git倉庫
git init
6.2 從遠程倉庫克隆
????????可以通過Git提供的命令從遠程倉庫進行克隆,將遠程倉庫克隆到本地。
????????命令形式為:git clone 遠程Git倉庫地址
git clone https://gitee.com/project.git
????????切換進入遠程倉庫的賬號
git?config?--system?--unset?credential.helper????????
7. 本地倉庫的操作
?????????首先我們在工作區(qū)新建一個Hello.java
文件。
7.1 加入暫存區(qū)
git add Hello.java
7.2 查看文件的狀態(tài)
git status
git status -s #輸出簡介信息?
Git中文件有4種狀態(tài):
根據(jù)一個文件是否已加入版本控制,可以把文件狀態(tài)分為:
????????Tracked已跟蹤(被納入版本控制),而tracked(已跟蹤)又包括三種工作狀態(tài):
????????????????Unmodified 未修改狀態(tài)
????????????????Modified 已修改狀態(tài)
????????????????Staged 已暫存狀態(tài)
????????Untracked未跟蹤(未被納入版本控制)
7.3 移除暫存區(qū)
git reset Hello.java # 將暫存區(qū)的文件取消暫存
7.4 提交到本地倉庫
在提交到本地倉庫之前,要先將文件添加到暫存區(qū),然后在commit提交到本地倉庫 。
git commit -m "初始化提交Hello.java" hello.java ? ? ? ? ? # 將暫存區(qū)的文件提交到本地倉庫
7.5 直接提交到本地倉庫
????????注意:commit -am 只對修改和刪除有效,對于新增的文件還是先要執(zhí)行add操作。
git commit -am "提交修改" ? ? ? ? # 不經(jīng)過暫存區(qū),直接提交本地倉庫
7.6 刪除文件
git rm Hello.java ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 刪除文件
7.7 提交刪除
git commit -m "delete commit" ? ? ? ? ? ? ? ? ? ? ? ? ? # 將刪除的文件提交本地倉庫
7.8 忽略列表
????????一般我們總會有些文件無需納入Git 的管理,也不希望它們總出現(xiàn)在未跟蹤文件列表。 通常都是些自動生成的文件,比如日志文件,或者編譯過程中創(chuàng)建的臨時文件等。 在這種情況下,我們可以在工作目錄中創(chuàng)建一個名為 .gitignore 的文件(文件名稱固定),列出要忽略的文件模式。下面是一個示例:
# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf
7.9 查看日志
git log
-
當
commit
(提交)比較多,git log
的內(nèi)容在一頁顯示不完整,滿屏放不下的時候,就會顯示冒號。 -
回車(往下滾一行)、空格(往下滾一頁)可以繼續(xù)查看剩余內(nèi)容。
-
退出:英文狀態(tài)下 按
q
可以退出git log
狀態(tài)。
7.10 回滾操作
git log ? ? ? ? ? ? ? ? ? //查看提交歷史,找出要回滾到的commit-id
git reset --hard commit-id //回滾到commit-id
git reset --hard HEAD~1 ? //將最近1次的提交回滾 ?
8.遠程倉庫的操作
8.1 從遠程倉庫克隆
????????如果你想獲得一份已經(jīng)存在了的 Git 倉庫的拷貝,這時就要用到 git clone 命令。 Git 克隆的是該 Git 倉庫服務器上的幾乎所有數(shù)據(jù)(包括日志信息、歷史記錄等),而不僅僅是復制工作所需要的文件。 當你執(zhí)行 git clone 命令的時候,默認配置下遠程 Git 倉庫中的每一個文件的每一個版本都將被拉取下來。
?git clone https://gitee.com/woniuxy2021/myproject.git ? ? # 從遠程倉庫克隆到本地倉庫
8.2 添加遠程倉庫
????????運行 git remote add 添加一個新的遠程 Git 倉庫,同時指定一個可以引用的簡寫。
git remote add origin https://gitee.com/p.git # 將本地倉添加一個新的遠程Git倉庫(關聯(lián))
8.3 查看遠程倉庫
????????如果想查看已經(jīng)配置的遠程倉庫服務器,可以運行 git remote 命令。 它會列出指定的每一個遠程服務器的簡寫。 如果已經(jīng)克隆了遠程倉庫,那么至少應該能看到 origin ,這是 Git 克隆的倉庫服務器的默認名字。
git remote ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 查看遠程倉庫
git remote show origin ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 查看遠程倉庫輸出更詳細的信息
8.4 推送到遠程倉庫
????????推送代碼到遠程倉庫的分支
git push origin master ? ? # 將本地倉庫的代碼推送到遠程倉庫
8.5 拉取
????????git pull 是從遠程倉庫獲取最新版本并merge到本地倉庫。
git pull origin master # 從遠程倉庫中拉取代碼(自動合并)
????????注意:如果當前本地倉庫不是從遠程倉庫克隆,而是本地創(chuàng)建的倉庫,并且倉庫中存在文件,此時再從遠程倉庫拉取文件的時候會報錯(fatal: refusing to merge unrelated histories ),解決此問題可以在git pull命令后加入?yún)?shù)—allow-unrelated-histories
git pull origin master --allow-unrelated-histories //加上后面這個選項允許不相關歷史提交
8.6 移除遠程倉庫
????????如果因為一些原因想要移除一個遠程倉庫 ,可以使用 git remote rm命令
git remote rm origin # 將本地倉庫跟遠程倉庫的關聯(lián)移除
????????注意:此命令只是從本地移除遠程倉庫的記錄,并不會真正影響到遠程倉庫。
9.分支操作
????????Git一般都是存在多個分支的,比如:開發(fā)分支,回歸測試分支以及主干分支等。
????????使用分支意味著你可以把你的工作從開發(fā)主線上分離開來,以免影響開發(fā)主線。開發(fā)人員在自己的分支上干活,想提交就提交,直到開發(fā)完畢后,再一次性合并到原來的分支上,這樣,既安全,又不影響別人工作。
????????git init 命令會默認創(chuàng)建master分支。
9.1 新建分支
git checkout -b dev 新建一個分支,并且切換到新的分支dev
git branch dev 新建一個分支,但是仍停留在原來分支
9.2 查看分支
?git branch ? 查看本地所有的分支
git branch -r 查看所有遠程的分支
git branch -a 查看所有遠程分支和本地分支
9.3 切換分支
????????注意:git在切換分支之前要確保當前分支沒有未提交的修改,將當前分支內(nèi)容進行commit之后再切換到其他分支。
git checkout dev 切換到dev分支
9.4 推送到遠程倉庫分支
?git push origin dev ? # 推送至遠程倉庫分支
9.5 合并分支
????????在dev分支上進行開發(fā)完成之后,需要把dev開發(fā)分支上的代碼合并到master主分支上。
????????首先切換到master分支
git checkout master
????????將dev分支合并到master分支
git merge dev
????????將master分支推送到遠程倉庫
git push origin master
9.6 刪除分支
git branch -D <branchname> ?刪除本地branchname分支
10.IEDA集成Git
10.1 配置Git的路徑
10.2 創(chuàng)建工程并添加到Git
10.3 將文件添加到暫存區(qū)
10.3.1 添加忽略列表
# .idea目錄下面所有的文件
.idea/
# 忽略指定文件
git_test.iml
# 忽略編譯后的文件
target/
10.3.2 添加到暫存區(qū)
10.3.3 提交文件
10.5 將代碼推送到遠程倉庫
因為是新建的本地倉庫,推送到遠程倉庫的時候,需要定義遠程倉庫。
10.5 從遠程倉庫克隆工程到本地
10.6 代碼的推送/拉取
A開發(fā)者端:
(1)創(chuàng)建Hello.java
(2)添加、提交、推送
B開發(fā)者端:
(1)拉取代碼
(2)修改代碼、添加、提交、推送
(3)A開發(fā)者端從遠程倉庫更新代碼
10.7 創(chuàng)建分支并切換分支
10.8 推送分支到遠程倉庫
????????在dev分支上開發(fā)代碼,并推送到遠程倉庫。