1、單機上使用Gitlinux
# 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 "you@example.com" 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看歷史版本,直接回退到上一個版本。
2、創建遠程倉庫git
【本地項目推送到遠程】github
一、首先到https://github.com註冊一個帳號。再點sign in登陸。數據庫
二、建立本身的git,點右上角加號,再點new repository。vim
三、數據庫名字自定義,好比叫apelearn,選擇public(公有),點 create repository。瀏覽器
四、添加密鑰key:右上角點本身頭像,選擇settings,左側選擇SSH and GPG keys。//加密鑰的目的是爲了認證。bash
五、右側點New SSH key,把linux機器上的~/.ssh/id_rsa.pub內容粘貼到key裏,這個是公鑰。若是沒有,就使用ssh-keygen命令生成。 ssh
六、到/tmp目錄下建立一個apelearn目錄,進入apelearn目錄。執行命令:ide
echo "# apelearn" >> README.md this
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://yaoweiyaowei@github.com': 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。
七、把本地倉庫推送到遠程倉庫 git remote add origin https://github.com/yaoweiyaowei/apelearn.git //這一步是在遠程建立一個新的倉庫apelearn,名字儘可能和本地的一致。
八、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了。
3、克隆遠程倉庫
【把遠程的項目克隆到本地】
打開GitHub的一個倉庫,裏面有一個綠色的圖標,寫着Clone or download,點開後,將連接複製,而後到home目錄下就可使用克隆命令了。
# cd /home # git clone git@github.com: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" //將庫裏面的也刪掉
創建遠程倉庫:
一、登陸GitHub
二、建立一個數據庫(git)
三、添加密鑰ssh key
四、到客戶端的對應目錄下初始化倉庫
五、
echo "# 11111" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:yaoweiyaowei/11111.git //在遠程建立一個新倉庫
git push -u origin master
克隆遠程倉庫:
git clone命令,將遠程項目克隆到客戶端。後續用法一致,git add,git commit。
git push,往上推。
git pull,往下拉。