一、單機上使用Git
# yum install -y git # mkdir /data/gitroot # cd /data/gitroot # git init //初始化倉庫,初始化後ls -la可以看到一個.git的目錄 在該目錄下,隨便寫點東西,vim 1.txt # git add 1.txt //把1.txt添加到倉庫做標記 # git commit -m "add 1.txt" //add完了必須要commit纔算真正把文件提交到git倉庫裏,-m指定解釋說明的信息。解釋說明一定要寫清楚。 報錯: *** Please tell me who you are. Run git config --global user.email "[email protected]" 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 'root@MRX.(none)') 解決方法: # git config --global user.name "aming" # git config --global user.email "youjian" 定義好你的名字和郵箱。 # git commit -m "add 1.txt" [master(根提交) 7e55239] add 1.txt 1 file changed, 5 insertions(+) create mode 100644 1.txt # git status //查看當前倉庫中的狀態,比如是否有改動的文件 # 位於分支 master 無文件要提交,乾淨的工作區 再次更改1.txt 先不添加到git倉庫裏,查看狀態 # git status # 位於分支 master # 尚未暫存以備提交的變更: # (使用 "git add..." 更新要提交的內容) # (使用 "git checkout --..." 丟棄工作區的改動) # # 修改: 1.txt # 修改尚未加入提交(使用 "git add" 和/或 "git commit -a") # git diff 1.txt //相比較倉庫裏面的版本,對比本次修改了什麼內容。 diff --git a/1.txt b/1.txt index 958a6f4..100ff5b 100644 --- a/1.txt +++ b/1.txt @@ -4,3 +4,4 @@ lehopigbnipa hjkasnklfejhuofj ioveripooabvo eovhsdidhbviabu +bviagb # git add 1.txt # git commit -m "add 1.txt again" //把前面未提交的提交一下 [master 7802c4f] add 1.txt again 1 file changed, 1 insertion(+) 再更改一下1.txt的內容 # git add 1.txt # git commit -m "ch 1.txt again" [master c3792d6] ch 1.txt again 1 file changed, 2 deletions(-) # git log //查看所有變更記錄 commit c3792d659aba7feae2be7e09337067bfbf14db76 Author: aming//這裏定義了名字和郵箱 Date: Sat Aug 31 20:38:58 2019 +0800 ch 1.txt again commit 7802c4fbfb41a3426aec1e224c6b3b56b746ebfd Author: amingDate: Sat Aug 31 20:37:12 2019 +0800 add 1.txt again commit 7e55239fcf6283f801b2bb44e4f4feb163ef9406 Author: amingDate: Sat Aug 31 20:22:09 2019 +0800 add 1.txt # cat /root/.gitconfig //這裏面顯示了名字和郵箱 [user] name = aming email = youjian # git log --pretty=oneline //將內容用一行顯示 c3792d659aba7feae2be7e09337067bfbf14db76 ch 1.txt again //前面的字符串爲版本ID 158eee38da7accb5da0abcf5d8dd4afb2d5a587c add 1.txt again 7e55239fcf6283f801b2bb44e4f4feb163ef9406 add 1.txt [root@MRX gitroot]# git reset --hard 158eee38 //回退版本,後面跟的字符串可以是簡寫 HEAD 現在位於 158eee3 add 1.txt again # git log --pretty=oneline //因爲版本回退了,所以後面的版本沒有了 158eee38da7accb5da0abcf5d8dd4afb2d5a587c add 1.txt again 7e55239fcf6283f801b2bb44e4f4feb163ef9406 add 1.txt # git reflog //查看所有歷史版本,可以根據歷史版本再恢復到後面的版本 158eee3 HEAD@{0}: reset: moving to 158eee38 c3792d6 HEAD@{1}: commit: ch 1.txt again 7802c4f HEAD@{2}: commit: add 1.txt again 158eee3 HEAD@{3}: commit: add 1.txt again 7e55239 HEAD@{4}: commit (initial): add 1.txt # git reset --hard c3792d6 git log --pretty=oneline //後面的版本就都回來了 # rm -f 1.txt //不小心刪除了 # git checkout -- 1.txt //恢復1.txt 如果1.txt文件做了更改,做了add但是沒有做commit,再想回退到上一次提交的狀態, 可以使用git reset HEAD 1.txt //這條命令可以把add的標記給它去掉 重置後撤出暫存區的變更: M 1.txt 再執行git checkout -- 1.txt //恢復成修改之前的內容,就是把代碼庫裏面最新的文件搞回來。 刪除文件 # git rm 1.txt rm '1.txt' # git commit -m "delete 1.txt" //把庫裏面的也刪掉,提交一次。 [master 742df99] delete 1.txt 1 file changed, 5 deletions(-) delete mode 100644 1.txt 如果連庫裏的也刪掉了,要想再恢復,就git log --pretty=oneline看歷史版本,直接回退到上一個版本。
二、建立遠程倉庫
【本地項目推送到遠程】
1、首先到https://github.com註冊一個賬號。再點sign in登錄。
2、創建自己的git,點右上角加號,再點new repository。
3、數據庫名字自定義,比如叫apelearn,選擇public(公有),點 create repository。
4、添加密鑰key:右上角點自己頭像,選擇settings,左側選擇SSH and GPG keys。//加密鑰的目的是爲了認證。
5、右側點New SSH key,把linux機器上的~/.ssh/id_rsa.pub內容粘貼到key裏,這個是公鑰。如果沒有,就使用ssh-keygen命令生成。
6、到/tmp目錄下創建一個apelearn目錄,進入apelearn目錄。執行命令:
echo "# apelearn" >> README.md
git init
git add README.md
git commit -m "first commit"
# echo "# apelearn" >> README.md # git init 初始化空的 Git 版本庫於 /tmp/apelearn/.git/ //初始化以後會生成一個.git的目錄,ls -la可以看到。 # git add README.md # git commit -m "first commit" # git remote add origin https://github.com/yaoweiyaowei/apelearn.git //把當前倉庫裏的東西推到遠程上去 # git push -u origin master Username for 'https://github.com': yaoweiyaowei //輸入你GitHub的用戶名和密碼。 Password for 'https://[email protected]': Counting objects: 3, done. Writing objects: 100% (3/3), 209 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To https://github.com/yaoweiyaowei/apelearn.git * [new branch] master -> master 分支 master 設置爲跟蹤來自 origin 的遠程分支 master。
7、把本地倉庫推送到遠程倉庫 git remote add origin https://github.com/yaoweiyaowei/apelearn.git //這一步是在遠程創建一個新的倉庫apelearn,名字儘量和本地的一致。
8、git push -u origin master //然後把本地的apelearn倉庫推送到遠程的apelearn。推送以後,到GitHub的apelearn倉庫裏刷新一下,就可以看到README.md存在了。
下一次再推送,就可以直接 git push。
試驗:
寫一個1.txt,內容隨意。
# vim 1.txt # git add 1.txt # git commit -m "add 1.txt" # git push
再到GitHub上倉庫裏刷新則可以看到2.txt了。
三、克隆遠程倉庫
【把遠程的項目克隆到本地】
打開GitHub的一個倉庫,裏面有一個綠色的圖標,寫着Clone or download,點開後,將鏈接複製,然後到home目錄下就可以使用克隆命令了。
# cd /home # git clone [email protected]:yaoweiyaowei/lanmp.git //後面跟Git的地址。
它提示,會在這個當前/home目錄下初始化一個倉庫,並創建一個.git的目錄。
如果還沒有把公鑰上傳到GitHub上,也能克隆這個項目,可以讀,但是沒有權限寫。
# cd lanmp # vim README.md //隨便加點東西 # git add README.md # git commit -m "change readme.md" # git push
再到GitHub的倉庫裏刷新可以看到變動。
關於在服務端改動文件內容,需要注意瀏覽器的不同,QQ瀏覽器無法識別變更內容,不能改,Firefox或者Chrome都可以。
QQ瀏覽器在這裏是灰色的,不可以更改。改動內容提交後,可以再次看到變更:
服務端改了內容後,想將客戶端的內容再更新,使用命令git pull,把它拉下來。
git push是往服務端上推。
git pull是往客戶端下拉。
如果從來沒有做過克隆,第一次做的時候要用git clone命令,SVN是checkout。
總結:
單擊上使用Git:
# yum install -y git
# git init //初始化倉庫
# git add 1.txt
# git commit -m "add 1.txt"
# git status //查看當前倉庫的狀態。
# git diff 1.txt //和倉庫裏的版本對比,本次修改了什麼內容。
# git log //查看所有變更記錄
# git log --pretty=oneline //將內容用一行顯示
# git reset --hard 158eee38 //回退版本
# git reflog //查看所有歷史版本
# git checkout -- 1.txt //不小心刪除了文件,再恢復文件
# git rm 1.txt //刪除文件
# git commit -m "delete 1.txt" //將庫裏面的也刪掉
建立遠程倉庫:
1、登錄GitHub
2、創建一個數據庫(git)
3、添加密鑰ssh key
4、到客戶端的對應目錄下初始化倉庫
5、
echo "# 11111" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin [email protected]:yaoweiyaowei/11111.git //在遠程創建一個新倉庫
git push -u origin master
克隆遠程倉庫:
git clone命令,將遠程項目克隆到客戶端。後續用法一致,git add,git commit。
git push,往上推。
git pull,往下拉。