pa66用途障車做網(wǎng)站百度應(yīng)用商店下載安裝
目錄
一、克隆遠程倉庫
二、推送遠程倉庫
三、拉取遠程倉庫
四、忽略特殊文件
五、命令配置別名
一、克隆遠程倉庫
Git是分布式版本控制系統(tǒng),同?個Git倉庫,可以分布到不同的機器上。怎么分布呢?
找?臺電腦充當(dāng)服務(wù)器的??,每天24?時開機,其他每個?都從這個“服務(wù)器”倉庫克隆?份到??的電腦上,并且各?把各?的提交推送到服務(wù)器倉庫?,也從服務(wù)器倉庫中拉取別?的提交。
國內(nèi)外有很多這樣的服務(wù)器,如Github、Gitee……
新建遠程倉庫的操作需要在Gitee或Github服務(wù)器網(wǎng)站上進行,在新建遠程倉庫成功之后,需要通過 git clone 命令遠程倉庫 克隆/下載 到本地。
SSH協(xié)議和HTTPS協(xié)議是Git最常使?的兩種數(shù)據(jù)傳輸協(xié)議。SSH協(xié)議使?了公鑰加密和公鑰登陸機制,體現(xiàn)了實?性和安全性,使?此協(xié)議需要將我們的公鑰放上服務(wù)器,由Git服務(wù)器進?管理。使?HTTPS?式時,沒有要求,可以直接克隆下來。
使用HTTPS方式,輸入用戶名、密碼后便可直接克隆,非常簡單。
使用SSH方式,需要先創(chuàng)建 SSH Key,在用戶主目錄下,看看有沒有 .ssh 目錄,如果有,再看看有沒有 id_rsa.pub 和 id_rsa?兩個文件,如果有了,說明當(dāng)前用戶已經(jīng)創(chuàng)建了SSH Key。
如果沒有,則需要輸入 ssh-keygen -t rsa -C "郵箱" 再一路回車進行創(chuàng)建。
創(chuàng)建成功之后,通過 cat ~/.ssh/ssh_rsa.pub 查看自己的公鑰,公鑰是可以告訴別人的,將公鑰復(fù)制到 Git 服務(wù)器的SSH公鑰選項中,就可以通過SSH鏈接克隆遠程倉庫了。
如果有多個?協(xié)作開發(fā),GitHub/Gitee允許添加多個公鑰,只要把每個?的電腦上的Key都添加到GitHub/Gitee,就可以在每臺電腦上往GitHub/Gitee上提交推送了。
當(dāng)我們從遠程倉庫克隆后,實際上Git會?動把本地的master分?和遠程的master分?對應(yīng)起來,并且,遠程倉庫的默認名稱是?origin 。在本地我們可以使? git remote 命令,來查看遠程庫的信息。
# 通過 git remote -v 顯示更詳細的信息(base) [root@localhost git-learning]# git remote
origin
(base) [root@localhost git-learning]# git remote -v
origin git@gitee.com:hdu-a-chao/git-learning.git (fetch)
origin git@gitee.com:hdu-a-chao/git-learning.git (push)
(base) [root@localhost git-learning]# # 上面顯示了可以抓取和推送的地址,也代表了我們有抓取和推送的權(quán)限。
二、推送遠程倉庫
# 使用 git push 將本地內(nèi)容推送到遠程倉庫
# 完整命令格式:git push <遠程主機名> <本地分?名>:<遠程分?名>
# 如果本地分?名與遠程分?名相同,可以簡寫為:git push <遠程主機名> <本地分?名>
# 如果當(dāng)前分支只有一個遠程分支,可以簡寫為:git push(base) [root@localhost git-learning]# ls
README.en.md README.md
(base) [root@localhost git-learning]# vim file1
(base) [root@localhost git-learning]# cat file1
hello git
(base) [root@localhost git-learning]# git add .
(base) [root@localhost git-learning]# git commit -m "add first file"
[master ec3bb79] add first file1 file changed, 1 insertion(+)create mode 100644 file1
(base) [root@localhost git-learning]# git push
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 302 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag b64b1287
To git@gitee.com:hdu-a-chao/git-learning.gitdd56a90..ec3bb79 master -> master
(base) [root@localhost git-learning]#
三、拉取遠程倉庫
在 Gitee 上點擊 file1 ?件并在線修改它:
這時的遠程倉庫是領(lǐng)先本地倉庫一個版本的,如果我們此時需要將本地倉庫內(nèi)容直接推送到遠程倉庫是會報錯的,因為版本不一致,所以需要通過 git pull 從遠程獲取代碼并合并本地的版本。
# 完整命令:git pull <遠程主機名> <遠程分?名>:<本地分?名>
# 如果遠程分?是與當(dāng)前分?合并,可簡寫為:git pull <遠程主機名> <遠程分?名>
(base) [root@localhost git-learning]# git pull origin master
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
來自 gitee.com:hdu-a-chao/git-learning* branch master -> FETCH_HEAD
更新 ec3bb79..1ccab43
Fast-forwardfile1 | 1 +1 file changed, 1 insertion(+)
(base) [root@localhost git-learning]# cat file1
hello git
Git 在線修改!(base) [root@localhost git-learning]#
四、忽略特殊文件
在?常開發(fā)中,我們有些?件不想或者不應(yīng)該提交到遠端,?如保存了數(shù)據(jù)庫密碼的配置?件,那怎么讓Git知道呢?在Git?作區(qū)的根?錄下創(chuàng)建?個特殊的 .gitignore ?件,然后把要忽略的?件名填進去,Git就會?動忽略這些?件了。
不需要從頭寫 .gitignore ?件,gitee在創(chuàng)建倉庫時就可以為我們?成,不過需要我們主動勾選?下:
如果當(dāng)時沒有選擇這個選擇,在?作區(qū)創(chuàng)建?個也是可以的。?論哪種?式,最終都可以得到?個完整的 .gitignore ?件,例如我們想忽略以?.so 和?.ini 結(jié)尾所有?件, .gitignore 的內(nèi)容如下:
# 省略選擇模本的內(nèi)容
...# My configurations:
*.ini
*.so
(base) [root@localhost git-learning]# ls
file1 file.ini file.so README.en.md README.md
(base) [root@localhost git-learning]# vim .gitignore
(base) [root@localhost git-learning]# cat .gitignore
*.ini
*.so
(base) [root@localhost git-learning]# touch file.ini file.so
(base) [root@localhost git-learning]# ls
file1 file.ini file.so README.en.md README.md
(base) [root@localhost git-learning]# git add .
(base) [root@localhost git-learning]# git commit -m "add files: file.ini file.so"
[master 8d78346] add files: file.ini file.so1 file changed, 2 insertions(+)create mode 100644 .gitignore
(base) [root@localhost git-learning]# git push origin master
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 343 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag dd40f5b4
To git@gitee.com:hdu-a-chao/git-learning.git1ccab43..8d78346 master -> master
(base) [root@localhost git-learning]#
(base) [root@localhost git-learning]# touch file1.ini file1.so
(base) [root@localhost git-learning]# ls
file1 file1.ini file1.so file.ini file.so README.en.md README.md
(base) [root@localhost git-learning]# git status
# 位于分支 master
無文件要提交,干凈的工作區(qū)
(base) [root@localhost git-learning]# # 分析原因,原來是因為被 .gitignore 選定的文件會忽略在工作區(qū)的修改
# 如果我們想要提交的文件被忽略了,我們可以用 git add -f [file] 強制添加
# 查看某個文件是否被忽略(base) [root@localhost git-learning]# git check-ignore -v file1.so
.gitignore:2:*.so file1.so
(base) [root@localhost git-learning]## Git會告訴我們, .gitignore 的第2?規(guī)則忽略了該?件,于是我們就可以知道應(yīng)該修訂哪個規(guī)則。
# 還有些時候,當(dāng)我們編寫了規(guī)則排除了部分?件時,例如排除所有.開頭的隱藏?件: .*
# 但是我們發(fā)現(xiàn) .* 這個規(guī)則把 .gitignore 也排除了。
# 雖然可以? git add -f 強制添加進去,但我們也可以編寫例外規(guī)則:!.gitignore
五、命令配置別名
在我們使?Git期間,有些命令敲的時候著實讓?頭疼(太?了。。),幸運的是,git?持對命令進?簡化。
# 將 git status 簡化為 git st (base) [root@localhost git-learning]# git config --global alias.st status
(base) [root@localhost git-learning]# git st
# 位于分支 master
無文件要提交,干凈的工作區(qū)
(base) [root@localhost git-learning]# git status
# 位于分支 master
無文件要提交,干凈的工作區(qū)
(base) [root@localhost git-learning]# # --global 參數(shù)是全局參數(shù),也就是這些命令在這臺電腦的所有Git倉庫下都有?。
# 如果不加,那只針對當(dāng)前的倉庫起作?。
?
?