1.什么是Git
Git是一個分布式的版本控制軟體,Git在每個用戶都有一個完整的服務器,然后有一個中央服務器,用戶可以將代碼提交到本地,沒有網路也可以提交到本地,然后在有網路的時候提交到中央服務器,這樣就方便了開發者,而相比SVS和SVN都是集中式的版本控制系統,作業的時候需要先從中央服務器獲取作新的代碼,改完后需要提交,如果是一個很大的檔案則需要足夠快的網路才能完成提交,而使用分布式的版本控制系統,每個用戶都是一個完整的版本庫,即使沒有中央服務器也可以提交代碼或者回滾,最終再把改好的代碼提交至中央服務器進行合并即可,
- 軟體,類似于qq、office等安裝到電腦才能使用的工具,
- 版本控制,類似于畢業論文,視頻剪輯等需要反復修改和保留原歷史資料;
- 分布式
- 檔案夾拷貝
- 本地版本控制
- 集中式版本控制
- 分布式版本控制
2.為什么要做版本控制
要保留之前所有的版本,以便回滾和修改,
3.安裝Git
安裝Git軟體有很多方式:
3.1Windows系統
https://git-scm.com/download/win
3.2Linux系統
https://git-scm.com/download/linux
3.3MacOS系統
https://git-scm.com/download/mac
4.Git的使用
4.1初始化目錄
想讓git對一個目錄進行版本控制需要對目錄初始化;
1.進入要管理的檔案夾
2.執行初始化命令
sh-3.2# mkdir apps
sh-3.2# cd apps/
# 這個時候這個目錄初始化完成,可以進行作業;
sh-3.2# git init
Initialized empty Git repository in /private/etc/apps/.git/
#會發現多了一個目錄.git
sh-3.2# ls -l
total 0
drwxr-xr-x 9 root wheel 288 8 26 17:48 .git
4.2新建檔案提交
sh-3.2# cat haitang.txt
haitang
# 新增的檔案和修改過的人間都是紅色的,這里顯示新增了一個檔案的狀態是未追蹤狀態,使用git add來對其進行管理
sh-3.2# git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
haitang.txt
nothing added to commit but untracked files present (use "git add" to track)
4.3管理檔案
sh-3.2# git add haitang.txt
# 這個時候這個檔案由紅色變成了綠色,
sh-3.2# git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: haitang.txt
4.4配置個人資訊
說明是誰在使用;
sh-3.2# git config --global user.email "[email protected]"
sh-3.2# git config --global user.name "haitang"
4.5提交至本地版本庫;
使用commit提交,"里面為描述資訊"
sh-3.2# git commit -m "海棠one"
[master (root-commit) 61dbe71] 海棠one
1 file changed, 1 insertion(+)
create mode 100644 haitang.txt
4.6查看log日志
這里可以看到提交的歷史記錄
sh-3.2# git log
commit 61dbe71f56fc1176d6f158fef61572b3515db841 (HEAD -> master)
Author: haitang <[email protected]>
Date: Fri Aug 26 17:58:50 2022 +0800
海棠one
4.7回滾
添加一行執行add執行回滾操作,
sh-3.2# echo "海棠two" >> haitang.txt
對這個檔案進行追蹤
sh-3.2# git add .
再次提交至本地版本庫
sh-3.2# git commit -m "haitang two"
[master 65a1399] haitang two
1 file changed, 1 insertion(+)
查看日志
sh-3.2# git log
commit 65a13999930ce95cd59fc09e1423ab20dcc402c6 (HEAD -> master)
Author: haitang <[email protected]>
Date: Fri Aug 26 18:03:28 2022 +0800
haitang two
commit 61dbe71f56fc1176d6f158fef61572b3515db841
Author: haitang <[email protected]>
Date: Fri Aug 26 17:58:50 2022 +0800
海棠one
進行回滾, 回滾方式為 git reset --hard 版本號 這個版本號不用全部寫完,7位即可
sh-3.2# git reset --hard 61dbe71
HEAD is now at 61dbe71 海棠one
驗證是回滾完成
sh-3.2# cat haitang.txt
haitang
4.8升級
可以通過reglog查看歷史全部的記錄
sh-3.2# git reflog
61dbe71 (HEAD -> master) HEAD@{0}: reset: moving to 61dbe71
65a1399 HEAD@{1}: commit: haitang two
61dbe71 (HEAD -> master) HEAD@{2}: commit (initial): 海棠one
要想回到haitangtwo執行git rest --hard 版本號即可;
sh-3.2# git reset --hard 65a1399
HEAD is now at 65a1399 haitang two
sh-3.2# cat haitang.txt
haitang
海棠two
4.9克隆專案到本地
sh-3.2# git clone [email protected]:good-news/apps.git
Cloning into 'apps'...
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 12 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (12/12), done.
sh-3.2#
5.Git分支命令
5.1查看分支
master前面有個*表示是在master分支
sh-3.2# git branch
* master
5.2創建分支
git branch xx分支名
sh-3.2# git branch dev
可以看到創建的dev分支
sh-3.2# git branch
dev
* master
5.3切換分支
顯示已經切換為dev分支
sh-3.2# git checkout dev
Switched to branch 'dev'
可通過branch來查看在哪個分支,可以看見dev分支前面有一個*
sh-3.2# git branch
* dev
master
5.4代碼合并
在dev分支上創建檔案并提交
sh-3.2# touch dev.txt && echo "hello git" > dev.txt
sh-3.2# git add .
sh-3.2# git commit -m "dev 第一次提交"
[dev ea353ff] dev 第一次提交
1 file changed, 1 insertion(+)
create mode 100644 dev.txt
切換分支
sh-3.2# git checkout master
Switched to branch 'master'
在master分支上合并dev分支上的代碼;
sh-3.2# git merge dev
Updating 65a1399..ea353ff
Fast-forward
dev.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 dev.txt
沒有合并之前,在master分支上是看不見dev分支上的代碼;
sh-3.2# cat dev.txt
hello git
5.5洗掉分支
git branch -d 分支名
sh-3.2# git branch -d dev
Deleted branch dev (was ea353ff).
洗掉了可以看見就剩下一個分支
sh-3.2# git branch
* master
6.將代碼托管至遠程服務器
github: https://github.com/
gitlab: 需在服務器上部署;
gitee:https://gitee.com/
選擇gitee來測驗
6.1創建一個倉庫

6.2會生成一個倉庫資訊

添加倉庫,注意我們配置的是SSH型別
sh-3.2# git remote add origin [email protected]:good-news/apps.git
6.3本地push代碼至遠程倉庫
我們為什么能上傳代碼到遠程倉庫呢?因為我們把公鑰放在了gitee,我現在把公鑰拿掉,驗證是否能push
sh-3.2# git push origin master
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 16 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (9/9), 699 bytes | 699.00 KiB/s, done.
Total 9 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:good-news/apps.git
* [new branch] master -> master
6.4無密鑰驗證是否能push代碼
6.4.1 編輯第三次提交
sh-3.2# echo "haitang three" >>haitang.txt
6.4.2 追蹤檔案
sh-3.2# git add .
上傳至本地版本庫
sh-3.2# git commit -m "haitang three"
[master 9c303e7] haitang three
1 file changed, 1 insertion(+)
6.4.3 這里看到是不能上傳的,因為把公鑰拿掉了,
sh-3.2# git push origin master
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
6.5配置SSH上下傳代碼;
拿到本地的公鑰上傳至gitee個人賬戶下
sh-3.2# cat /var/root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDZRnFbJGoALs8wMC+EJS7Yewdre8XDaheQNW6U0gmf30mZvzIspqbr5uIVnIwQaT5usYgy2EGjJ2xLRrxfwE2I8UKDyeothIM6zeQxW9Ah+tXeIgWSbX83esMRx/PxysGp4IIykW8+C5Lt3/aUWD7ABHYU2Di4aSj/71+76z877/wrgPYaWvAarU+ZRBzV7oYyXeLLy7lLuxZkFyfyArjzL7pDslOTj+fGcfAUyeOdUjyWhL+7CtvaY/fyXU/hkw9k770XNKQh4QYjZztS/FhJnwOi8OcS2j7kLJDAiaJYKKpCamAec7/f2e16f+HWCz41Wc4DFfJvlyo1/x6ADLnMmPoFoZrKLYOOxlKlCu9/SAomMOCf0qxyl

6.6測驗再次上傳代碼
這次上傳是沒有問題的
sh-3.2# git push origin master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 16 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 292 bytes | 292.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:good-news/apps.git
ea353ff..9c303e7 master -> master
我們一直奔跑在進步的旅途
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/502840.html
標籤:其他
上一篇:NOI2022游記,Au
