一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

版本控制工具,什么是版本控制系統(tǒng)?

玩轉(zhuǎn)嵌入式 ? 來(lái)源:玩轉(zhuǎn)嵌入式 ? 2023-04-19 11:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、 版本控制工具

1.1. 什么是版本控制系統(tǒng)

版本控制系統(tǒng)(Version Control System):是一種記錄一個(gè)或若干文件內(nèi)容變化,以便將來(lái)查閱特定版本修訂情況的系統(tǒng)。版本控制系統(tǒng)不僅可以應(yīng)用于軟件源代碼的文本文件,而且可以對(duì)任何類(lèi)型的文件進(jìn)行版本控制。

常見(jiàn)的版本控制系統(tǒng)有:cvs、svn、git

1.2. 為什么要有版本控制系統(tǒng)?

  1. 在開(kāi)發(fā)過(guò)程中,經(jīng)常需要對(duì)一個(gè)文件進(jìn)行修改甚至刪除,但是我們又希望能夠保存這個(gè)文件的歷史記錄,如果通過(guò)備份,那么管理起來(lái)會(huì)非常的復(fù)雜。

  2. 在多人開(kāi)發(fā)時(shí),如果需要多人合作開(kāi)發(fā)一個(gè)頁(yè)面,那么修改以及合并也會(huì)非常的棘手。容易出現(xiàn)沖突。

1.3. 版本控制系統(tǒng)分類(lèi)

關(guān)于版本控制

本地版本控制系統(tǒng)

本地版本控制系統(tǒng)就是在一臺(tái)機(jī)器上,記錄版本的不同變化,保證內(nèi)容不會(huì)丟失

缺點(diǎn):如果多人開(kāi)發(fā),每個(gè)人都在不同的系統(tǒng)和電腦上開(kāi)發(fā),沒(méi)辦法協(xié)同工作。

集中式版本控制系統(tǒng)

svn/cvs都是集中式的版本控制系統(tǒng)

  1. 需要一個(gè)中央服務(wù)器來(lái)管理代碼的的版本和備份

  2. 所有的用戶(hù)電腦都是從中央服務(wù)器獲取代碼或者是將本地的代碼提交到中央服務(wù)器

  3. 依賴(lài)于網(wǎng)絡(luò)環(huán)境,如果連不上中央服務(wù)器,就無(wú)法提交和獲取代碼。

  4. 如果中央服務(wù)器宕機(jī),所有人都無(wú)法工作。

8d9ebdec-de60-11ed-bfe3-dac502259ad0.jpg

分布式版本控制系統(tǒng)

git是分布式的版本控制系統(tǒng)。

  1. 需要一臺(tái)服務(wù)器作為代碼倉(cāng)庫(kù)

  2. 每個(gè)用戶(hù)電腦都是一個(gè)服務(wù)器(代碼倉(cāng)庫(kù)),并且和代碼倉(cāng)庫(kù)是鏡像的,用戶(hù)修改和獲取代碼都是提交到自己的服務(wù)器當(dāng)中。

  3. 不需要網(wǎng)絡(luò)就可以進(jìn)行工作。

  4. 當(dāng)連接網(wǎng)絡(luò)時(shí),用戶(hù)可以選擇將自己的服務(wù)器與代碼倉(cāng)庫(kù)進(jìn)行同步。

8dc20b30-de60-11ed-bfe3-dac502259ad0.jpg

二、 git

2.1. git介紹

Git是一款免費(fèi)、開(kāi)源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。

Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開(kāi)發(fā)而開(kāi)發(fā)的一個(gè)開(kāi)放源碼的版本控制軟件。

2.2. git安裝

下載地址

#  推薦使用國(guó)內(nèi)鏡像下載 http://npm.taobao.org/mirrors/git-for-windows
1. 不要安裝在中文目錄
2. 不要使用桌面管理軟件

安裝很簡(jiǎn)單,一直下一步即可。在任意的目錄下右鍵,能夠出現(xiàn)下圖,表示安裝成功了。

8dd68d3a-de60-11ed-bfe3-dac502259ad0.jpg

git用法方式主要有兩種,

  • git gui,即圖形化界面的方式

  • git bash,命令行的方式

bash是linux系統(tǒng)的命令,因此學(xué)習(xí)git前,我們先學(xué)習(xí)一下bash

  1. 在任意文件夾中,都可以使用右鍵,通過(guò)git bash here打開(kāi)命令行窗口,此時(shí)的路徑就是當(dāng)前目錄。

  2. 窗口上右鍵,通過(guò)options-->Text-->select可以調(diào)整字體的大小。

# cd 改變目錄  (change directory)
cd images   #進(jìn)入images文件夾
cd ..      #進(jìn)入上一層目錄
cd ~       #進(jìn)入用戶(hù)根目錄

# tab  自動(dòng)補(bǔ)全,當(dāng)我們輸命令或者目錄很長(zhǎng)時(shí),可以使用tab鍵進(jìn)行自動(dòng)補(bǔ)全。
# 按兩次tab,會(huì)把所有符合要求的內(nèi)容都列出來(lái)。

# pwd 打印當(dāng)前目錄的路徑 (print work directory)
pwd


# ls 展示當(dāng)前目錄列表(list)
ls         # 展示當(dāng)前目錄
ls -a      # 展示全部?jī)?nèi)容,包括隱藏文件
ls -l      # 以列表的形式展示內(nèi)容
ls -al     # 以列表的形式展示所有的內(nèi)容,包括隱藏文件。
ls --help  # 查看ls所有的參數(shù)。
ls -l images   # 展示images目錄下的文件,如果沒(méi)有寫(xiě)目錄,默認(rèn)展示當(dāng)前目錄。


# clear reset清屏
clear  # 清除屏幕內(nèi)容,滾動(dòng)條,保留了歷史
reset  # 重置,歷史記錄沒(méi)了。


# mkdir  創(chuàng)建一個(gè)文件夾 (make directory)
mkdir css          # 創(chuàng)建一個(gè)css的文件夾
mkdir css img js   # 創(chuàng)建了三個(gè)文件夾

# rmdir  刪除一個(gè)空的文件夾(沒(méi)啥用)
rmdir img   # 刪除文件夾

# touch  創(chuàng)建文件
touch index.html   #創(chuàng)建了一個(gè)index.html文件
touch css/index.css # 在css目錄下創(chuàng)建idnex.css文件

# rm 刪除一個(gè)文件獲取文件夾
rm index.html # 刪除index.html文件
rm js         # 刪除空的js文件夾
rm -r css     # 遞歸刪除一個(gè)文件夾

# mv 移動(dòng)文件(move)
mv index.html js            # 將html文件移動(dòng)到j(luò)s文件夾中
mv index.html index2.html   # 將index.html重命名為index2.html

# cp 復(fù)制文件(cp)
cp index.html index2.html   # 復(fù)制index.html文件,命名為index2.html
cp -r css css02             # 如果復(fù)制的是文件夾,需要使用-r參數(shù)。

# cat 查看文件全部?jī)?nèi)容
cat index.html
# less 查看文件部分內(nèi)容
less index.html
# q退出查看

2.3. 基本操作

  1. 初始化git倉(cāng)庫(kù)git init

  2. 查看當(dāng)前git倉(cāng)庫(kù)的狀態(tài)git status

  3. 將文件添加到git的暫存區(qū)git add 文件名

  4. 將文件由暫存區(qū)提交到倉(cāng)庫(kù)區(qū)git commit -m '提交說(shuō)明'

  5. 查看提交日志git log

# 初始化git倉(cāng)庫(kù),會(huì)在當(dāng)前目錄生成一個(gè)隱藏文件夾 .git  不要去修改這個(gè)文件夾下的任意東西。
git init

# 查看git的狀態(tài) ,如果此時(shí)新建一個(gè)文件,那么這個(gè)文件是沒(méi)有被追蹤的,說(shuō)白了git還沒(méi)有管理這個(gè)新建的文件
git status 

# 讓git管理這個(gè)新建的文件
git add index.html

# 讓文件由暫存區(qū)提交到倉(cāng)庫(kù)區(qū)。此時(shí)文件才真正的被git管理了。
# 如果提交日志亂碼,右鍵-->options-->Text-->將編碼改成utf-8
git commit -m '第一次提交'

# 查看提交日志
git log

2.4. 配置郵箱和用戶(hù)名

如果第一次使用git,會(huì)要求設(shè)置用戶(hù)名和郵箱

# git config  user.name 你的目標(biāo)用戶(hù)名
# git config  user.email 你的目標(biāo)郵箱名
# 這種配置方式只有在當(dāng)前倉(cāng)庫(kù)生效
git config user.name shuaige
git config user.email 669104343@qq.com

# 可以使用--global參數(shù),配置全局的用戶(hù)名和郵箱,這樣別的git倉(cāng)庫(kù)就不需要重新配置了。
# 如果同時(shí)配置了局部的和全局的,那么局部的用戶(hù)名和郵箱將會(huì)生效。
git config  --global user.name shuaige
git config  --global user.email 669104343@qq.com

# 查看配置信息
git config --list

2.5. git的工作原理

8df68018-de60-11ed-bfe3-dac502259ad0.png

2.6. git命令詳解

2.6.1. git add(重點(diǎn))

  • 作用:將文件由 工作區(qū) 添加到 暫存區(qū),暫存文件

  • 命令:

git git add 文件名

  • 例如:git add index.html

  • git add --all或者git add -A或者git add .(簡(jiǎn)寫(xiě)) 添加所有文件

  • git add a.txt b.txt同時(shí)添加兩個(gè)文件

  • git add *.js添加當(dāng)前目錄下的所有js文件

2.6.2. git checkout 文件名

  • 作用:暫存區(qū)的內(nèi)容恢復(fù)到工作區(qū)。

  • git checkout 1.txt將暫存區(qū)中1.txt文件恢復(fù)到工作區(qū)

2.6.3. git commit(重點(diǎn))

  • 作用:將文件由 暫存區(qū) 添加到 倉(cāng)庫(kù)區(qū)

  • git commit -m "提交說(shuō)明"

2.6.4. git status

  • 作用:查看文件的狀態(tài)

  • 命令:git status

  • 命令:git stauts -s簡(jiǎn)化日志輸出格式

2.6.5. git log

  • 作用:查看提交日志

  • git log只能查看當(dāng)前head以及以前的日志

  • git log --oneline簡(jiǎn)潔的日志信息

  • git reflog查看所有的提交變更日志

2.6.6. git reset

  • 作用:版本回退,將代碼恢復(fù)到已經(jīng)提交的某一個(gè)版本中。

  • git reset --hard 版本號(hào)將代碼回退到某個(gè)指定的版本(版本號(hào)只要有前幾位即可)

  • git reset --hard head~1

將版本回退到上一次提交

  • ~1:上一次提交

  • ~2:上上次提交

  • ~0:當(dāng)前提交

2.7. git忽視文件

在倉(cāng)庫(kù)中,有些文件是不想被git管理的,比如數(shù)據(jù)的配置密碼、寫(xiě)代碼的一些思路等。git可以通過(guò)配置從而達(dá)到忽視掉一些文件,這樣這些文件就可以不用提交了。

  • 在倉(cāng)庫(kù)的根目錄創(chuàng)建一個(gè).gitignore的文件,文件名是固定的。

  • 將不需要被git管理的文件路徑添加到.gitignore

# 忽視idea.txt文件
idea.txt

# 忽視.gitignore文件
.gitignore

# 忽視css下的index.js文件
css/index.js

# 忽視css下的所有的js文件
css/*.js

# 忽視css下的所有文件
css/*.*
# 忽視css文件夾
css

三、 git分支操作

分支就是科幻電影里面的平行宇宙,當(dāng)你正在電腦前努力學(xué)習(xí)Git的時(shí)候,另一個(gè)你正在另一個(gè)平行宇宙里努力學(xué)習(xí)SVN。

如果兩個(gè)平行宇宙互不干擾,那對(duì)現(xiàn)在的你也沒(méi)啥影響。不過(guò),在某個(gè)時(shí)間點(diǎn),兩個(gè)平行宇宙合并了,結(jié)果,你既學(xué)會(huì)了Git又學(xué)會(huì)了SVN!

3.1. 為什么要有分支?

  • 如果你要開(kāi)發(fā)一個(gè)新的功能,需要2周時(shí)間,第一周你只能寫(xiě)50%代碼,如果此時(shí)立即提交,代碼沒(méi)寫(xiě)完,不完整的代碼會(huì)影響到別人無(wú)法工作。如果等代碼寫(xiě)完再提交,代碼很容易丟失,風(fēng)險(xiǎn)很大。

  • 有了分支,你就可以創(chuàng)建一個(gè)屬于自己的分支,別人看不到,也不影響別人,你在自己的分支上工作,提交到自己的分支上,等到功能開(kāi)發(fā)完畢,一次性的合并到原來(lái)的分支。這樣既安全,又不影響他人工作。

  • 在工作過(guò)程中,經(jīng)常會(huì)碰到多任務(wù)并行開(kāi)發(fā)的情況,使用分支就能很好的避免任務(wù)之間的影響。

  • 其他版本工具比如svn,cvs中也有分支這個(gè)概念,但是這些工具中的分支操作非常的慢,形同擺設(shè)。

3.2. 分支操作的命令

3.2.1. 創(chuàng)建分支

  • git branch 分支名稱(chēng)創(chuàng)建分支,分支中的代碼,在創(chuàng)建時(shí)與當(dāng)前分支的內(nèi)容完全相同。

  • git在第一次提交時(shí),就有了一個(gè)叫master的主分支。

3.2.2. 查看分支

  • git branch可以查看所有的分支,

  • 在當(dāng)前分支的前面會(huì)有一個(gè)*

3.2.3. 切換分支

  • git checkout 分支名稱(chēng)切換分支

  • 在當(dāng)前分支的任何操作,都不會(huì)影響到其他的分支,除非進(jìn)行了分支合并。

  • 切換分支之前,必須保證代碼已經(jīng)提交了

3.2.4. 創(chuàng)建并切換分支

  • git checkout -b 分支名稱(chēng)創(chuàng)建并切換分支

3.2.5. 刪除分支

  • git branch -d 分支名稱(chēng)可以刪除分支

  • 注意:不能在當(dāng)前分支刪除當(dāng)前分支,需要切換到其他分支才能刪除。

  • 注意:master分支是可以刪除的,但是不推薦那么做。

3.2.6. 合并分支

  • git merge 分支名稱(chēng)將其他分支的內(nèi)容合并到當(dāng)前分支。

  • master分支中執(zhí)行git merge devdev分支中的代碼合并到master分支

3.3. git分支的工作原理

8e34362e-de60-11ed-bfe3-dac502259ad0.png

3.4. git合并沖突

  • 對(duì)于同一個(gè)文件,如果有多個(gè)分支需要合并時(shí),容易出現(xiàn)沖突。

  • 合并分支時(shí),如果出現(xiàn)沖突,只能手動(dòng)處理,再次提交,一般的作法,把自己的代碼放到?jīng)_突代碼的后面即可。

四、遠(yuǎn)程倉(cāng)庫(kù)

所有的程序員都可以通過(guò)遠(yuǎn)程倉(cāng)庫(kù)來(lái)進(jìn)行版本的共享,達(dá)到所有人的代碼一致的效果。

4.1. 遠(yuǎn)程倉(cāng)庫(kù)相關(guān)的命令

4.1.1. git push

  • 作用:將本地代碼提交到遠(yuǎn)程倉(cāng)庫(kù)

  • git push 倉(cāng)庫(kù)地址 master在代碼提交到遠(yuǎn)程倉(cāng)庫(kù),注意master分支必須寫(xiě),不能省略

  • 例子:git push git@github.com:hucongcong/test.git master如果第一次使用,需要填寫(xiě)github的用戶(hù)名和密碼

4.1.2. git pull

  • 作用:將遠(yuǎn)程的代碼下載到本地

  • git pull 代碼地址將遠(yuǎn)程的代碼中master分支下載到本地

  • 通常在push前,需要先pull一次。

4.1.3. git clone

  • 作用:克隆遠(yuǎn)程倉(cāng)庫(kù)的代碼到本地

  • git clone 倉(cāng)庫(kù)地址 自定義本地倉(cāng)庫(kù)名將整個(gè)倉(cāng)庫(kù)克隆到本地

4.1.4. git remote

每次push和pull操作都需要帶上遠(yuǎn)程倉(cāng)庫(kù)的地址,非常的麻煩,我們可以給倉(cāng)庫(kù)地址設(shè)置一個(gè)別名

  • git remote add 倉(cāng)庫(kù)別名 倉(cāng)庫(kù)地址

使用倉(cāng)庫(kù)別名替代倉(cāng)庫(kù)地址。倉(cāng)庫(kù)別名相當(dāng)于一個(gè)變量,倉(cāng)庫(kù)地址就是對(duì)應(yīng)的值。

  • git remote add hucc git@github.com:hucongcong/test.git設(shè)置了一個(gè)hucc的倉(cāng)庫(kù)別名,以后push和pull都可以不用倉(cāng)庫(kù)地址,而用hucc

  • git remote remove hucc刪除hucc這個(gè)倉(cāng)庫(kù)別名。

  • git remote查看所有的倉(cāng)庫(kù)別名

  • 如果使用了git clone命令從遠(yuǎn)程倉(cāng)庫(kù)獲取下來(lái)的,那么這個(gè)本地倉(cāng)庫(kù)會(huì)自動(dòng)添加一個(gè) origin的遠(yuǎn)程地址,指向的就是克隆的遠(yuǎn)程地址。

4.2. github

git與github沒(méi)有直接的關(guān)系。

  • git是一個(gè)版本控制工具。

  • github是一個(gè)代碼托管平臺(tái),是git的一個(gè)遠(yuǎn)程代碼倉(cāng)庫(kù)。

  • 將來(lái)工作時(shí),公司會(huì)有自己的代碼倉(cāng)庫(kù)。

github官網(wǎng)

開(kāi)源中國(guó)-git 碼云

1. gitHub是一個(gè)面向開(kāi)源及私有軟件項(xiàng)目的托管平臺(tái),因?yàn)橹恢С謌it 作為唯一的版本庫(kù)格式進(jìn)行托管,故名gitHub。
2. github免費(fèi),代碼所有人都能看到,但是只有你自己能修改。付費(fèi)的可以隱藏。

在github上創(chuàng)建一個(gè)項(xiàng)目,獲取到倉(cāng)庫(kù)的地址。然后就可以將本地的代碼推送到遠(yuǎn)程的服務(wù)器上。

4.3. SSH免密碼登陸

(對(duì)稱(chēng)加密與非對(duì)稱(chēng)加密)

每次push代碼,都需要輸入用戶(hù)名跟密碼,非常的麻煩。因此我們可以配置一個(gè)SSH免密碼登陸。

  • github為了賬戶(hù)的安全,需要對(duì)每一次push請(qǐng)求都要驗(yàn)證用戶(hù)的身份,只有合法的用戶(hù)才可以push

  • 使用ssh可以實(shí)現(xiàn)免密碼操作(不需要使用密碼)

4.3.1. SSH免密碼登錄配置

  • 1 創(chuàng)建SSH Key:ssh-keygen -t rsa

  • 2 在文件路徑C:用戶(hù)當(dāng)前用戶(hù)名找到.ssh文件夾

  • 3 文件夾中有兩個(gè)文件:

  • 私鑰:id_rsa

  • 公鑰:id_rsa.pub

  • 4 在github -> settings -> SSH and GPG keys頁(yè)面中,新創(chuàng)建SSH key

  • 5 粘貼 公鑰id_rsa.pub內(nèi)容到對(duì)應(yīng)文本框中

  • 5 在github中新建倉(cāng)庫(kù)或者使用現(xiàn)在倉(cāng)庫(kù),拿到git@github.com:用戶(hù)名/倉(cāng)庫(kù)名.git

  • 6 此后,再次SSH方式與github“通信”,不用輸入密碼確認(rèn)身份了

五、idea集成git

5.1.idea配置git

首先,確保本地已經(jīng)安裝過(guò)git客戶(hù)端,idea會(huì)進(jìn)行自動(dòng)檢測(cè),如果沒(méi)有,或者想進(jìn)行手動(dòng)調(diào)整,需要在這里重新配置。配置成功之后可以通過(guò)點(diǎn)擊Test按鈕測(cè)試是否OK!

8e4c76b2-de60-11ed-bfe3-dac502259ad0.jpg

5.2:idea上傳項(xiàng)目到本地倉(cāng)庫(kù)

8e649f8a-de60-11ed-bfe3-dac502259ad0.jpg

8e8192e8-de60-11ed-bfe3-dac502259ad0.png

選中指定項(xiàng)目右鍵,選擇Git將項(xiàng)目添加到版本控制,然后使用Commit Directory提交項(xiàng)目到本地倉(cāng)庫(kù)。

8e9ca6f0-de60-11ed-bfe3-dac502259ad0.jpg

8eb033b4-de60-11ed-bfe3-dac502259ad0.jpg

8ec9577c-de60-11ed-bfe3-dac502259ad0.jpg

5.3:將本地倉(cāng)庫(kù)項(xiàng)目推送到遠(yuǎn)程倉(cāng)庫(kù)

8eddeca0-de60-11ed-bfe3-dac502259ad0.jpg

8ef820de-de60-11ed-bfe3-dac502259ad0.png

8f10f32a-de60-11ed-bfe3-dac502259ad0.png

8f29a4ba-de60-11ed-bfe3-dac502259ad0.jpg

注意:如果沒(méi)有配置ssh公鑰,第一次本地推送,需要輸入GitHub或gitee遠(yuǎn)程倉(cāng)庫(kù)用戶(hù)名密碼。

5.4:idea設(shè)置git忽略部分文件

0、安裝.ignore插件

點(diǎn)擊File->Settings ,找到Plugins搜索ignore,然后install,OK重啟idea

8f4581da-de60-11ed-bfe3-dac502259ad0.jpg

1、創(chuàng)建項(xiàng)目,在項(xiàng)目中添加.gitignore文件

8f615c66-de60-11ed-bfe3-dac502259ad0.jpg

8f7dbdb6-de60-11ed-bfe3-dac502259ad0.png

8fa1cce2-de60-11ed-bfe3-dac502259ad0.png

建議.gitignore文件內(nèi)容

######################################################################
# Build Tools
.gradle
/build/
!gradle/wrapper/gradle-wrapper.jar

target/
!.mvn/wrapper/maven-wrapper.jar

######################################################################
# IDE
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out
gen

### NetBeans ###
nbproject/private/
build/*
nbbuild/
dist/
nbdist/
.nb-gradle/

######################################################################
# Others
*.log
*.xml.versionsBackup

!*/build/*.java
!*/build/*.html
!*/build/*.xml
# .gitignore文件內(nèi)容編寫(xiě)規(guī)則
*.a       # 忽略所有 .a 結(jié)尾的文件
!lib.a    # 但 lib.a 除外
/TODO     # 僅僅忽略項(xiàng)目根目錄下的 TODO 文件,不包括 subdir/TODO
build/    # 忽略 build/ 目錄下的所有文件
doc/*.txt # 會(huì)忽略 doc/notes.txt 但不包括 doc/server/arch.txt

2、創(chuàng)建本地倉(cāng)庫(kù)

$ git init

3、創(chuàng)建個(gè)人分支

$ git checkout -b dev

4、添加文件到版本控制,提交到本地倉(cāng)庫(kù)

$ git add .
$ git commit -m "first commit"

5、推送到遠(yuǎn)程倉(cāng)庫(kù)

$ git push  https://gitee.com/liyunyi/ssm.git dev

6、合并分支推送到主分支

$ git checkout master
$ git merge dev
$ git push https://gitee.com/liyunyi/ssm.git master

5.5:克隆遠(yuǎn)程倉(cāng)庫(kù)項(xiàng)目到本地

8fbc7538-de60-11ed-bfe3-dac502259ad0.png

8fda139a-de60-11ed-bfe3-dac502259ad0.png

附件:命令大全

8ff53fa8-de60-11ed-bfe3-dac502259ad0.png

  • Workspace:工作區(qū)

  • Index / Stage:暫存區(qū)

  • Repository:倉(cāng)庫(kù)區(qū)(或本地倉(cāng)庫(kù))

  • Remote:遠(yuǎn)程倉(cāng)庫(kù)

1、倉(cāng)庫(kù)

# 在當(dāng)前目錄新建一個(gè)Git代碼庫(kù)
$ git init

# 新建一個(gè)目錄,將其初始化為Git代碼庫(kù)
$ git init [project-name]

# 下載一個(gè)項(xiàng)目和它的整個(gè)代碼歷史
$ git clone [url]

2、配置

# 顯示當(dāng)前的Git配置
$ git config --list

# 編輯Git配置文件
$ git config -e [--global]

# 設(shè)置提交代碼時(shí)的用戶(hù)信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"

3、增加/刪除文件

# 添加指定文件到暫存區(qū)
$ git add [file1] [file2] ...

# 添加指定目錄到暫存區(qū),包括子目錄
$ git add [dir]

# 添加當(dāng)前目錄的所有文件到暫存區(qū)
$ git add .

# 添加每個(gè)變化前,都會(huì)要求確認(rèn)
# 對(duì)于同一個(gè)文件的多處變化,可以實(shí)現(xiàn)分次提交
$ git add -p

# 刪除工作區(qū)文件,并且將這次刪除放入暫存區(qū)
$ git rm [file1] [file2] ...

# 停止追蹤指定文件,但該文件會(huì)保留在工作區(qū)
$ git rm --cached [file]

# 改名文件,并且將這個(gè)改名放入暫存區(qū)
$ git mv [file-original] [file-renamed]

4、代碼提交

# 提交暫存區(qū)到倉(cāng)庫(kù)區(qū)
$ git commit -m [message]

# 提交暫存區(qū)的指定文件到倉(cāng)庫(kù)區(qū)
$ git commit [file1] [file2] ... -m [message]

# 提交工作區(qū)自上次commit之后的變化,直接到倉(cāng)庫(kù)區(qū)
$ git commit -a

# 提交時(shí)顯示所有diff信息
$ git commit -v

# 使用一次新的commit,替代上一次提交
# 如果代碼沒(méi)有任何新變化,則用來(lái)改寫(xiě)上一次commit的提交信息
$ git commit --amend -m [message]

# 重做上一次commit,并包括指定文件的新變化
$ git commit --amend [file1] [file2] ...

5、分支

# 列出所有本地分支
$ git branch

# 列出所有遠(yuǎn)程分支
$ git branch -r

# 列出所有本地分支和遠(yuǎn)程分支
$ git branch -a

# 新建一個(gè)分支,但依然停留在當(dāng)前分支
$ git branch [branch-name]

# 新建一個(gè)分支,并切換到該分支
$ git checkout -b [branch]

# 新建一個(gè)分支,指向指定commit
$ git branch [branch] [commit]

# 新建一個(gè)分支,與指定的遠(yuǎn)程分支建立追蹤關(guān)系
$ git branch --track [branch] [remote-branch]

# 切換到指定分支,并更新工作區(qū)
$ git checkout [branch-name]

# 切換到上一個(gè)分支
$ git checkout -

# 建立追蹤關(guān)系,在現(xiàn)有分支與指定的遠(yuǎn)程分支之間
$ git branch --set-upstream [branch] [remote-branch]

# 合并指定分支到當(dāng)前分支
$ git merge [branch]

# 選擇一個(gè)commit,合并進(jìn)當(dāng)前分支
$ git cherry-pick [commit]

# 刪除分支
$ git branch -d [branch-name]

# 刪除遠(yuǎn)程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

6、標(biāo)簽

# 列出所有tag
$ git tag

# 新建一個(gè)tag在當(dāng)前commit
$ git tag [tag]

# 新建一個(gè)tag在指定commit
$ git tag [tag] [commit]

# 刪除本地tag
$ git tag -d [tag]

# 刪除遠(yuǎn)程tag
$ git push origin :refs/tags/[tagName]

# 查看tag信息
$ git show [tag]

# 提交指定tag
$ git push [remote] [tag]

# 提交所有tag
$ git push [remote] --tags

# 新建一個(gè)分支,指向某個(gè)tag
$ git checkout -b [branch] [tag]

7、查看信息

# 顯示有變更的文件
$ git status

# 顯示當(dāng)前分支的版本歷史
$ git log

# 顯示commit歷史,以及每次commit發(fā)生變更的文件
$ git log --stat

# 搜索提交歷史,根據(jù)關(guān)鍵詞
$ git log -S [keyword]

# 顯示某個(gè)commit之后的所有變動(dòng),每個(gè)commit占據(jù)一行
$ git log [tag] HEAD --pretty=format:%s

# 顯示某個(gè)commit之后的所有變動(dòng),其"提交說(shuō)明"必須符合搜索條件
$ git log [tag] HEAD --grep feature

# 顯示某個(gè)文件的版本歷史,包括文件改名
$ git log --follow [file]
$ git whatchanged [file]

# 顯示指定文件相關(guān)的每一次diff
$ git log -p [file]

# 顯示過(guò)去5次提交
$ git log -5 --pretty --oneline

# 顯示所有提交過(guò)的用戶(hù),按提交次數(shù)排序
$ git shortlog -sn

# 顯示指定文件是什么人在什么時(shí)間修改過(guò)
$ git blame [file]

# 顯示暫存區(qū)和工作區(qū)的差異
$ git diff

# 顯示暫存區(qū)和上一個(gè)commit的差異
$ git diff --cached [file]

# 顯示工作區(qū)與當(dāng)前分支最新commit之間的差異
$ git diff HEAD

# 顯示兩次提交之間的差異
$ git diff [first-branch]...[second-branch]

# 顯示今天你寫(xiě)了多少行代碼
$ git diff --shortstat "@{0 day ago}"

# 顯示某次提交的元數(shù)據(jù)和內(nèi)容變化
$ git show [commit]

# 顯示某次提交發(fā)生變化的文件
$ git show --name-only [commit]

# 顯示某次提交時(shí),某個(gè)文件的內(nèi)容
$ git show [commit]:[filename]

# 顯示當(dāng)前分支的最近幾次提交
$ git reflog

8、遠(yuǎn)程同步

# 下載遠(yuǎn)程倉(cāng)庫(kù)的所有變動(dòng)
$ git fetch [remote]

# 顯示所有遠(yuǎn)程倉(cāng)庫(kù)
$ git remote -v

# 顯示某個(gè)遠(yuǎn)程倉(cāng)庫(kù)的信息
$ git remote show [remote]

# 增加一個(gè)新的遠(yuǎn)程倉(cāng)庫(kù),并命名
$ git remote add [shortname] [url]

# 取回遠(yuǎn)程倉(cāng)庫(kù)的變化,并與本地分支合并
$ git pull [remote] [branch]

# 上傳本地指定分支到遠(yuǎn)程倉(cāng)庫(kù)
$ git push [remote] [branch]

# 強(qiáng)行推送當(dāng)前分支到遠(yuǎn)程倉(cāng)庫(kù),即使有沖突
$ git push [remote] --force

# 推送所有分支到遠(yuǎn)程倉(cāng)庫(kù)
$ git push [remote] --all

9、撤銷(xiāo)

# 恢復(fù)暫存區(qū)的指定文件到工作區(qū)
$ git checkout [file]

# 恢復(fù)某個(gè)commit的指定文件到暫存區(qū)和工作區(qū)
$ git checkout [commit] [file]

# 恢復(fù)暫存區(qū)的所有文件到工作區(qū)
$ git checkout .

# 重置暫存區(qū)的指定文件,與上一次commit保持一致,但工作區(qū)不變
$ git reset [file]

# 重置暫存區(qū)與工作區(qū),與上一次commit保持一致
$ git reset --hard

# 重置當(dāng)前分支的指針為指定commit,同時(shí)重置暫存區(qū),但工作區(qū)不變
$ git reset [commit]

# 重置當(dāng)前分支的HEAD為指定commit,同時(shí)重置暫存區(qū)和工作區(qū),與指定commit一致
$ git reset --hard [commit]

# 重置當(dāng)前HEAD為指定commit,但保持暫存區(qū)和工作區(qū)不變
$ git reset --keep [commit]

# 新建一個(gè)commit,用來(lái)撤銷(xiāo)指定commit
# 后者的所有變化都將被前者抵消,并且應(yīng)用到當(dāng)前分支
$ git revert [commit]

# 暫時(shí)將未提交的變化移除,稍后再移入
$ git stash
$ git stash pop

10、其他

# 生成一個(gè)可供發(fā)布的壓縮包
$ git archive


審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    6781

    瀏覽量

    112186
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    9795

    瀏覽量

    88001
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70757

原文標(biāo)題:10、其他

文章出處:【微信號(hào):玩轉(zhuǎn)嵌入式,微信公眾號(hào):玩轉(zhuǎn)嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    正規(guī)和臨時(shí)版本控制的EDA工具之間有何差異?

    對(duì)于任何一位電子工程師來(lái)說(shuō),版本控制都是一個(gè)強(qiáng)大的工具。Aberdeen Group在2011年的研究結(jié)果即是很好的證明。研究表明,61%的一流公司(或者行業(yè)中前20%的領(lǐng)先企業(yè))使用版本
    發(fā)表于 05-31 15:22 ?1731次閱讀

    集中式的版本控制和分布式版本控制介紹

    版本控制系統(tǒng)就是一種用于多人協(xié)同開(kāi)發(fā)的技術(shù),可以管理我們對(duì)文件、目錄或工程等內(nèi)容的修改歷史,方便查看更改歷史記錄,還可以恢復(fù)以前的版本。
    的頭像 發(fā)表于 10-14 10:00 ?2309次閱讀

    請(qǐng)問(wèn)有GIT版本控制系統(tǒng)教程嗎?

    嗨,我想開(kāi)始使用Git版本控制系統(tǒng)。我從來(lái)沒(méi)有用過(guò)它,想通過(guò)一個(gè)教程。有一個(gè)微芯片GIT教程嗎?謝謝
    發(fā)表于 09-04 12:25

    怎么使cysch文件文本基于版本控制?

    幾年前,鷹CAD將它們的二進(jìn)制BLB圖式文件轉(zhuǎn)換為XML格式。這使得他們對(duì)Git等修訂控制系統(tǒng)更加友好。你能為CysCH文件做同樣的事情嗎?甚至更好的是一個(gè)“視覺(jué)”版本控制系統(tǒng),使我可以看到不同的視覺(jué)圖表,而不是他們的文本表示。
    發(fā)表于 10-17 10:10

    什么是版本控制?

    思想之一。那些年,我們的畢業(yè)論文,其實(shí)就是版本變更的真實(shí)寫(xiě)照…腦洞一下,版本控制就是這些論文變更的管理~什么是集中化的版本控制系統(tǒng)?那么,集
    發(fā)表于 07-19 08:21

    什么是版本控制?git代碼為什么需要版本控制

    系列之嵌入式開(kāi)發(fā)-git代碼管理第一章 [嵌入式開(kāi)發(fā)-git代碼管理之git的安裝]文章目錄系列之嵌入式開(kāi)發(fā)-git代碼管理前言一、為什么需要版本控制?1.什么是版本控制2.
    發(fā)表于 12-21 07:25

    支持需求追蹤的版本控制機(jī)制

    版本控制是增強(qiáng)軟件可維護(hù)性的重要方法,但目前常用的版本控制機(jī)制缺乏對(duì)需求的可追蹤性支持。該文提出一種支持需求追蹤的版本
    發(fā)表于 04-02 08:48 ?0次下載

    通用版本控制系統(tǒng)的研究和設(shè)計(jì)

    針對(duì)軟件配置管理和大規(guī)模數(shù)據(jù)處理領(lǐng)域?qū)v史記錄回放的要求,設(shè)計(jì)一種通用版本控制系統(tǒng)模型,實(shí)現(xiàn)目錄和元數(shù)據(jù)的版本化及抽象的網(wǎng)絡(luò)層。使用拷貝-修改-合并模型解決文件共
    發(fā)表于 04-21 09:17 ?0次下載

    Vivado Design Suite搭配版本控制系統(tǒng)進(jìn)行使用

    了解將Vivado Design Suite與版本控制系統(tǒng)配合使用的最佳實(shí)踐。 修訂控制系統(tǒng)用于嚴(yán)格控制復(fù)雜工具編輯的質(zhì)量; 允許開(kāi)發(fā)人
    的頭像 發(fā)表于 11-20 07:00 ?4223次閱讀

    Freelance 2019發(fā)布 是分布式控制系統(tǒng)的最新版本

    Freelance最初版本發(fā)布于1994年,是ABB針對(duì)過(guò)程工業(yè)提供的經(jīng)濟(jì)高效的分布式控制系統(tǒng)(DCS)解決方案。它結(jié)合了DCS與可編程邏輯控制器(PLC)的優(yōu)點(diǎn),具有易用性、可擴(kuò)展性、靈活性和可靠性的特點(diǎn)。Freelance
    發(fā)表于 12-06 16:19 ?5429次閱讀

    開(kāi)源的分布式版本控制系統(tǒng)Git配置

    ? 今天帶著大家來(lái)學(xué)習(xí)Git,這是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),幫助我們進(jìn)行項(xiàng)目的管理更迭。 其實(shí)關(guān)于Git的命令也不是一定需要記憶,但畢竟是效率型工具,對(duì)于一些常見(jiàn)的命令掌握清楚,對(duì)于開(kāi)發(fā)的進(jìn)展
    的頭像 發(fā)表于 03-09 13:47 ?1674次閱讀

    世界上最先進(jìn)分布式版本控制系統(tǒng)Git介紹

    世界上最先進(jìn)的分布式版本控制系統(tǒng)。 簡(jiǎn)單理解版本控制就是:比如你修改了代碼,然后提交修改,系統(tǒng)就幫你做個(gè)記錄,某時(shí)某刻誰(shuí)誰(shuí)做了什么修改,和之
    的頭像 發(fā)表于 06-09 17:40 ?2227次閱讀

    選擇版本控制系統(tǒng)的7個(gè)步驟

      總之,更改版本管理系統(tǒng)似乎令人生畏和復(fù)雜,但通過(guò)遵循一些簡(jiǎn)單的“最佳實(shí)踐”步驟,這意味著嵌入式計(jì)算設(shè)計(jì)人員可以獲得現(xiàn)代版本控制系統(tǒng)所提供的可觀的商業(yè)和運(yùn)營(yíng)優(yōu)勢(shì)——就在其業(yè)務(wù)功能中。
    的頭像 發(fā)表于 06-21 14:12 ?1066次閱讀

    一文搞懂版本控制與Git

    在這個(gè)碼代碼的時(shí)代,我們?cè)絹?lái)越離不開(kāi)版本控制工具。而在眾多版本控制工具中,Git無(wú)疑是最為強(qiáng)大和
    的頭像 發(fā)表于 10-20 09:46 ?701次閱讀
    一文搞懂<b class='flag-5'>版本</b><b class='flag-5'>控制</b>與Git

    版本控制教程】如何使用Unreal Engine 5 + UE源代碼控制(Perforce P4)

    項(xiàng)目越大,越需要靠譜的版本控制系統(tǒng)。Perforce P4不僅是Epic官方推薦的源代碼控制工具,更是大廠團(tuán)隊(duì)協(xié)作的核心支持之一。如何配置P4+UE?手把手教你怎么用↓↓↓
    的頭像 發(fā)表于 06-25 11:22 ?224次閱讀
    【<b class='flag-5'>版本</b><b class='flag-5'>控制</b>教程】如何使用Unreal Engine 5 + UE源代碼<b class='flag-5'>控制</b>(Perforce P4)