Git 之 (1) 單機上使用git、創建遠程倉庫、克隆遠程倉庫

1. 單機上使用git

1 準備

安裝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

2. 上傳,對比和查看狀態

建立新文件
[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

3 版本變動

更新版本
[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

2. 創建遠程倉庫

1 建立遠程倉庫

GitHub官網:github.com 註冊帳號並激活,而後開始建立主機的倉庫! 建立完成後,添加key: 點擊瀏覽器右上角頭像——setting——SSH and GPG keys(選擇SSH keys)——在服務器(虛擬機)執行ssh-keygen命令生成密鑰對(/root/.ssh/id_rsa-私鑰, /root/.ssh/id_rsa.pub-公鑰)——將公鑰複製到瀏覽器後點「添加」。git

2 建立同名本地倉庫,並鏈接

建立本地版本倉庫
[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。

3 文件推送

新建文件
[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

3. 克隆遠程倉庫

克隆遠程倉庫

建立一個本地文件夾,來放克隆的內容
[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
相關文章
相關標籤/搜索