安裝git [root@yt-01 /]# yum install -y git 創建git版本庫目錄 [root@yt-01 /]# mkdir /data/gitroot/ 初始化gi版本倉庫 [root@yt-01 /]# cd /data/gitroot/ [root@yt-01 gitroot]# git init 初始化空的 Git 版本庫於 /data/gitroot/.git/ 配置用戶名和郵箱 [root@yt-01 gitroot]# git config --global user.email "zhouqunic@163.com" [root@yt-01 gitroot]# git config --global user.name "yuntai" 配置文件 [root@yt-01 gitroot]# cat /root/.gitconfig [user] email = zhouqunic@163.com name = yuntai
建立新文件 [root@yt-01 gitroot]# echo -e "123/234/456/789" > 1.txt [root@yt-01 gitroot]# ll 總用量 4 -rw-r--r-- 1 root root 16 4月 3 14:39 1.txt 把1.txt添加到git倉庫 [root@yt-01 gitroot]# git add 1.txt //打標記 [root@yt-01 gitroot]# git commit -m "creat new file 1.txt" //上傳 [master(根提交) 44609a5] creat new file 1.txt 1 file changed, 1 insertion(+) create mode 100644 1.txt # 記住,上傳文件到倉庫,每次都要 git add filename 和 git commit -m "註釋" 兩句命令 再次變動1.txt [root@yt-01 gitroot]# echo -e "1 new added/END" >> 1.txt [root@yt-01 gitroot]# cat 1.txt 123/234/456/789 1 new added/END 查看當前倉庫中的狀態,好比是否有改動的文件 [root@yt-01 gitroot]# git status # 位於分支 master # 還沒有暫存以備提交的變動: # (使用 "git add <file>..." 更新要提交的內容) # (使用 "git checkout -- <file>..." 丟棄工做區的改動) # # 修改: 1.txt # 修改還沒有加入提交(使用 "git add" 和/或 "git commit -a") # 每部操做以後均可以使用「git status」查看當前狀態,能夠根據提示信息進行後續操做。 不一樣版本文件對比 [root@yt-01 gitroot]# git diff 1.txt diff --git a/1.txt b/1.txt index a53950c..49384d8 100644 --- a/1.txt +++ b/1.txt @@ -1 +1,2 @@ 123/234/456/789 +1 new added/END
更新版本 [root@yt-01 gitroot]# git add 1.txt [root@yt-01 gitroot]# git commit -m "add 1.txt again" [master 01803b5] add 1.txt again 1 file changed, 1 insertion(+) 查看版本變動日誌 [root@yt-01 gitroot]# git log commit 01803b54e07b9842da0c2c4558fdafd66b05ada6 Author: yuntai <zhouqunic@163.com> Date: Tue Apr 3 15:04:36 2018 +0800 add 1.txt again commit 2ab6b801dd207ef35d102c240173dc69d2ff3dc2 Author: yuntai <zhouqunic@163.com> Date: Tue Apr 3 15:02:00 2018 +0800 add 1.txt again commit 44609a553eef00abe45e45a3c1bd54cc8fe9a402 Author: yuntai <zhouqunic@163.com> Date: Tue Apr 3 14:41:50 2018 +0800 creat new file 1.txt 刪除文件2行,並更新版本 [root@yt-01 gitroot]# vim 1.txt [root@yt-01 gitroot]# git add 1.txt [root@yt-01 gitroot]# git commit -m "刪除最後2行 " [master 5acf95f] 刪除最後2行 1 file changed, 2 deletions(-) 版本變動日誌,一行顯示 [root@yt-01 gitroot]# git log --pretty=oneline //版本變動日誌,一行顯示 5acf95fd5e06f1fc01acc0f28f5753610a292a07 刪除最後2行 01803b54e07b9842da0c2c4558fdafd66b05ada6 add 1.txt again 2ab6b801dd207ef35d102c240173dc69d2ff3dc2 add 1.txt again 44609a553eef00abe45e45a3c1bd54cc8fe9a402 creat new file 1.txt # 代碼表示版本代碼 版本回退 [root@yt-01 gitroot]# git reset --hard 2ab6b801dd207 HEAD 如今位於 2ab6b80 add 1.txt again # hard後面跟的代碼能夠只填寫一部分 [root@yt-01 gitroot]# git log --pretty=oneline 2ab6b801dd207ef35d102c240173dc69d2ff3dc2 add 1.txt again 44609a553eef00abe45e45a3c1bd54cc8fe9a402 creat new file 1.txt 撤銷版本回退(假如忘了版本代碼) [root@yt-01 gitroot]# git reflog //查看全部歷史版本 2ab6b80 HEAD@{0}: reset: moving to 2ab6b801dd207 5acf95f HEAD@{1}: commit: 刪除最後2行 01803b5 HEAD@{2}: commit: add 1.txt again 2ab6b80 HEAD@{3}: commit: add 1.txt again 44609a5 HEAD@{4}: commit (initial): creat new file 1.txt # 版本回退 [root@yt-01 gitroot]# git log --pretty=oneline 5acf95fd5e06f1fc01acc0f28f5753610a292a07 刪除最後2行 01803b54e07b9842da0c2c4558fdafd66b05ada6 add 1.txt again 2ab6b801dd207ef35d102c240173dc69d2ff3dc2 add 1.txt again 44609a553eef00abe45e45a3c1bd54cc8fe9a402 creat new file 1.txt 假如文件1.txt被刪除了 [root@yt-01 gitroot]# rm -rf 1.txt [root@yt-01 gitroot]# ls [root@yt-01 gitroot]# git checkout -- 1.txt //恢復原來文件 [root@yt-01 gitroot]# ls 1.txt 假如更改了1.txt,而後git add了,可是沒有git commit,不想更新了,想回退到當時版本 [root@yt-01 gitroot]# echo -e "xxxxxx" > 1.txt [root@yt-01 gitroot]# git add 1.txt [root@yt-01 gitroot]# git reset HEAD 1.txt //重置緩存 重置後撤出暫存區的變動: M 1.txt [root@yt-01 gitroot]# cat 1.txt xxxxxx [root@yt-01 gitroot]# git checkout -- 1.txt //恢復原來文件 [root@yt-01 gitroot]# cat 1.txt 123/234/456/789
[root@yt-01 gitroot]# git rm 1.txt //刪除文件 rm '1.txt' [root@yt-01 gitroot]# git commit -m "刪除1.txt文件" //提交刪除 [master 7215021] 刪除1.txt文件 1 file changed, 1 deletion(-) delete mode 100644 1.txt [root@yt-01 gitroot]# ls git checkout已經不能恢復了 [root@yt-01 gitroot]# git checkout -- 1.txt error: pathspec '1.txt' did not match any file(s) known to git. 恢復git rm刪除的文件 [root@yt-01 gitroot]# git log --pretty=oneline //查看版本日誌 721502178db58654977d89635423afaa806e3c27 刪除1.txt文件 5acf95fd5e06f1fc01acc0f28f5753610a292a07 刪除最後2行 01803b54e07b9842da0c2c4558fdafd66b05ada6 add 1.txt again 2ab6b801dd207ef35d102c240173dc69d2ff3dc2 add 1.txt again 44609a553eef00abe45e45a3c1bd54cc8fe9a402 creat new file 1.txt [root@yt-01 gitroot]# git reset --hard 721502178d //最後的版本已是刪除掉的時候,恢復不了 HEAD 如今位於 7215021 刪除1.txt文件 [root@yt-01 gitroot]# ls [root@yt-01 gitroot]# git reset --hard 5acf95fd5e06f1fc01acc0f28f5753610a292a07 //回退到對應版本才能夠 HEAD 如今位於 5acf95f 刪除最後2行 [root@yt-01 gitroot]# ls 1.txt
GitHub官網:github.com 註冊帳號並激活,而後開始建立主機的倉庫! 建立完成後,添加key: 點擊瀏覽器右上角頭像——setting——SSH and GPG keys(選擇SSH keys)——在服務器(虛擬機)執行ssh-keygen命令生成密鑰對(/root/.ssh/id_rsa-私鑰, /root/.ssh/id_rsa.pub-公鑰)——將公鑰複製到瀏覽器後點「添加」。git
建立本地版本倉庫 [root@yt-01 tmp]# mkdir /tmp/gittest/ [root@yt-01 tmp]# cd gittest/ [root@yt-01 tmp]# echo "# gittest" >> README.md [root@yt-01 gittest]# git add README.md [root@yt-01 gittest]# git commit -m "建立README.md" [master(根提交) f7045bf] 建立README.md 1 file changed, 1 insertion(+) create mode 100644 README.md 遠程鏈接 [root@yt-01 gittest]# git remote add origin git@github.com:zhouqunic/gittest.git [root@yt-01 gittest]# git push -u origin master Counting objects: 3, done. Writing objects: 100% (3/3), 232 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To git@github.com:zhouqunic/gittest.git * [new branch] master -> master 分支 master 設置爲跟蹤來自 origin 的遠程分支 master。
新建文件 [root@yt-01 gittest]# vim 123.txt [root@yt-01 gittest]# cat 123.txt 123 123 123 123 123 123 推送到本地倉庫 [root@yt-01 gittest]# git add 123.txt [root@yt-01 gittest]# git commit -m "新建123.txt文件" [master 6007c36] 新建123.txt文件 1 file changed, 3 insertions(+) create mode 100644 123.txt 推送到遠程倉庫 [root@yt-01 gittest]# git push warning: push.default 未設置,它的默認值將會在 Git 2.0 由 'matching' 修改成 'simple'。若要再也不顯示本信息並在其默認值改變後維持當前使用習慣, 進行以下設置: git config --global push.default matching 若要再也不顯示本信息並從如今開始採用新的使用習慣,設置: git config --global push.default simple 參見 'git help config' 並查找 'push.default' 以獲取更多信息。 ('simple' 模式由 Git 1.7.11 版本引入。若是您有時要使用老版本的 Git, 爲保持兼容,請用 'current' 代替 'simple' 模式) Counting objects: 4, done. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 300 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To git@github.com:zhouqunic/gittest.git f7045bf..6007c36 master -> master # 上面有好多無用的提示信息,爲了以後不顯示這些信息,根據提示執行命令 [root@yt-01 gittest]# git config --global push.default simple
建立一個本地文件夾,來放克隆的內容 [root@yt-01 gittest]# cd /usr/local/sbin/ [root@yt-01 sbin]# ls 克隆遠程倉庫 [root@yt-01 sbin]# git clone https://github.com/maicong/LNMP.git //克隆 正克隆到 'LNMP'... remote: Counting objects: 420, done. remote: Total 420 (delta 0), reused 0 (delta 0), pack-reused 420 接收對象中: 100% (420/420), 612.72 KiB | 95.00 KiB/s, done. 處理 delta 中: 100% (224/224), done. [root@yt-01 sbin]# ls LNMP [root@yt-01 sbin]# cd LNMP/ [root@yt-01 LNMP]# ls DBMGT etc home keys LICENSE lnmp.sh README.md source.sh svnserve svn.sh
要是本身的倉庫,別人的倉庫的話,必須fork到本身的倉庫,克隆後才能編輯github
[root@yt-01 sbin]# git clone git@github.com:zhouqunic/LNMP.git 正克隆到 'LNMP'... remote: Counting objects: 420, done. remote: Total 420 (delta 0), reused 0 (delta 0), pack-reused 420 接收對象中: 100% (420/420), 612.72 KiB | 62.00 KiB/s, done. 處理 delta 中: 100% (224/224), done. [root@yt-01 sbin]# ls LNMP [root@yt-01 sbin]# cd LNMP/ [root@yt-01 LNMP]# ls DBMGT etc home keys LICENSE lnmp.sh README.md source.sh svnserve svn.sh [root@yt-01 LNMP]# echo "^^^^" >> lnmp.sh [root@yt-01 LNMP]# git add lnmp.sh [root@yt-01 LNMP]# git commit -m "瞎改" [master c67bc06] 瞎改 1 file changed, 1 insertion(+) # 此時只是提交到了本地倉庫
[root@yt-01 LNMP]# git push Warning: Permanently added the RSA host key for IP address '192.30.253.112' to the list of known hosts. Counting objects: 5, done. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 293 bytes | 0 bytes/s, done. Total 3 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), completed with 2 local objects. To git@github.com:zhouqunic/LNMP.git 027e59a..c67bc06 master -> master