单机上安装git,建立远程仓库,克隆远程仓库

单机上使用git

安装:

yum install -y git

创建一个空目录,以这个空目录为当前目录

mkdir /data/gitroot

cd /data/gitroot

[root@jinkai01 ~]# mkdir /data/gitroot

[root@jinkai01 ~]# cd /data/gitroot

初始化仓库

git init

[root@jinkai01 gitroot]# git init

初始化空的 Git 版本库于 /data/gitroot/.git/

创建新文件并编辑内容

echo -e "aaa\nbbb\nccc" > a.txt

把a.txt加到仓库

git add a.txt

add完了必须要commit才算真正把文件提交到git仓库里,-m后面输入的是本次提交的说明,可以输入任意内容。

[root@jinkai gitroot]# git commit -m "new file a.txt"

[master(根提交) cbaba01] new file a.txt

Committer: root <[email protected]>

您的姓名和邮件地址基于登录名和主机名进行了自动设置。请检查它们正确

与否。您可以通过下面的命令对其进行明确地设置以免再出现本提示信息:

git config --global user.name "Your Name"

git config --global user.email [email protected]

设置完毕后,您可以用下面的命令来修正本次提交所使用的用户身份:

git commit --amend --reset-author

1 file changed, 4 insertions(+)

create mode 100644 a.txt

再次更改a.txt

查看当前仓库中的状态,比如是否有改动的文件

git status

[root@jinkai gitroot]# vim a.txt

[root@jinkai gitroot]# git status

# 位于分支 master

# 尚未暂存以备提交的变更:

# (使用 "git add <file>..." 更新要提交的内容)

# (使用 "git checkout -- <file>..." 丢弃工作区的改动)

#

# 修改: a.txt

#

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

可以对比a.txt本次修改了什么内容,相比较仓库里面的版本

git diff a.txt

[root@jinkai gitroot]# git diff a.txt

diff --git a/a.txt b/a.txt

index 35fbd83..cc59506 100644

--- a/a.txt

+++ b/a.txt

@@ -1,4 +1,6 @@

aaa

bbb

ccc

-ddd //-号就是删除的

+ //+号就是新添加的

+eee

+fff

版本回退

多更改几次a.txt,然后add,commit

[root@jinkai gitroot]# git add a.txt

[root@jinkai gitroot]# git commit -m "old file a.txt"

查看所有提交记录

git log

[root@jinkai gitroot]# git log

commit 1f120c286d46bb62013cfd6579dccf1856cf6c49

Author: root <[email protected]>

Date: Thu Dec 10 22:43:56 2020 +0800

old file a.txt

commit cbaba019f9ddfa540a96d46835ab25e91b988b00

Author: root <[email protected]>

Date: Thu Dec 10 22:42:10 2020 +0800

new file a.txt

简洁一行显示

git log --pretty=oneline

[root@jinkai gitroot]# git log --pretty=oneline

1f120c286d46bb62013cfd6579dccf1856cf6c49 old file a.txt

cbaba019f9ddfa540a96d46835ab25e91b988b00 new file a.txt

回退版本,其中后面跟的字符串是简写

git reset --hard ****

[root@jinkai gitroot]# git reset --hard 1f120c2

HEAD 现在位于 1f120c2 old file a.txt

[root@jinkai gitroot]# git log --pretty=oneline

1f120c286d46bb62013cfd6579dccf1856cf6c49 old file a.txt

cbaba019f9ddfa540a96d46835ab25e91b988b00 new file a.txt

如果想再次退回,但是忘记了前面的编码,可以使用下面的命令查找

git reflog查看所有历史版本

[root@jinkai gitroot]# git reflog

1f120c2 HEAD@{0}: reset: moving to 1f120c286d46bb62013cfd6579dccf1856cf6c49

5badc97 HEAD@{1}: commit: hahahah

1f120c2 HEAD@{2}: commit: old file a.txt

cbaba01 HEAD@{3}: commit (initial): new file a.txt

[root@jinkai gitroot]# git reset --hard 5badc97

HEAD 现在位于 5badc97 hahahah

[root@jinkai gitroot]# git log --pretty=oneline

5badc97b5be29236b4db7cf2302474ae439bb0d1 hahahah

1f120c286d46bb62013cfd6579dccf1856cf6c49 old file a.txt

cbaba019f9ddfa540a96d46835ab25e91b988b00 new file a.txt

撤销修改

不小心删除了a.txt

rm -f a.txt

恢复a.txt

git checkout -- a.txt

[root@jinkai gitroot]# rm -rf a.txt

[root@jinkai gitroot]# git checkout

D a.txt

[root@jinkai gitroot]# git checkout -- a.txt

[root@jinkai gitroot]# ls

a.txt

如果a.txt文件修改,add后但没有commit,再想回退到上一次提交的状态,可以使用git reset HEAD a.txt,再执行git checkout -- a.txt

[root@jinkai gitroot]# vim a.txt

[root@jinkai gitroot]# cat a.txt

aaa

bbb

ccc

[root@jinkai gitroot]# echo ddd >> a.txt

[root@jinkai gitroot]# cat a.txt

aaa

bbb

ccc

ddd

[root@jinkai gitroot]# git add a.txt

[root@jinkai gitroot]# git reset HEAD a.txt

重置后撤出暂存区的变更:

M a.txt

[root@jinkai gitroot]# git checkout -- a.txt

[root@jinkai gitroot]# cat a.txt

aaa

bbb

ccc

删除文件

git rm 2.txt

文件已删除,但是还未在库里面删除,用下面的命令从库里面删除文件

git commit -m "rm 2.txt"

[root@jinkai gitroot]# git rm a.txt

rm 'a.txt'

[root@jinkai gitroot]# ls

[root@jinkai gitroot]# git commit -m "delete a.txt"

[master 6027f5c] delete a.txt

1 file changed, 4 deletions(-)

delete mode 100644 a.txt

[root@jinkai gitroot]# git checkout -- a.txt

error: pathspec 'a.txt' did not match any file(s) known to git.

建立远程仓库

首先到 https://github.com 注册一个账号

img img

新建仓库

右上角有一个加号new repository

名字自定义,比如叫jinkai-linux 选择public 点 create repository

img

img

添加key:右上角点自己头像,选择settings,左侧选择SSH and GPG keys

左侧点New SSH key,把linux机器上的~/.ssh/id_rsa.pub内容粘贴到这里

img img

[root@jinkai gitroot]# ssh-keygen

[root@jinkai gitroot]# cat /root/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMiw64fA0/5yaTC25IjgM2MzNZhAxtdWJhujGgAoZLcIsbfYKBlVKzURj9KURhrZQlprbX4LgfyfAuZnIXYQxIQWoWufc6P+cbLJjydR36ROPmHx9BYN7Jf405LVf06S/1W9dirpJd3HxYTh3cxxQXKrw0/sJgfeBGQh4D/Y+zCSlNfuAsV5D+VwjVciCrv27TVL7tNaYCBv4v+MYUOjvm/jtBHBWwTmhRhV2tGVdKAP0TkuK7mM19UapsV/1LW9fwDptgyedf236fAaf5EM5cXpqXHR5p1+hueLP8Ya4rOsarmSISFVwQyl1kCSnj7b/TI8QYF2vf0RBbn82wHJ+X [email protected]

img

把本地仓库推送到远程仓库

先本地建立一个仓库

[root@jinkai gitroot]# mkdir /tmp/jinkai-linux

[root@jinkai gitroot]# cd !$

cd /tmp/jinkai-linux

[root@jinkai jinkai-linux]# echo "# jinkai-linux" >> README.md

[root@jinkai jinkai-linux]# git init

初始化空的 Git 版本库于 /tmp/jinkai-linux/.git/

[root@jinkai jinkai-linux]# git add READE.md

fatal: 路径 'READE.md' 未匹配任何文件

[root@jinkai jinkai-linux]# git commit -m "first commit"

[master(根提交) d0000e6] first commit

1 file changed, 1 insertion(+)

create mode 100644 README.md

[root@jinkai newfile]# git branch -M main

这一步是在远程创建一个新的仓库jinkai-linux

git remote add origin https://github.com/jinkai-linux/jinkai-linux.git

然后把本地的仓库推送到远程的

git push -u origin main

[root@jinkai jinkai-linux]# git remote add origin https://github.com/jinkai-linux/jinkai-linux.git

[root@jinkai jinkai-linux]# git push -u origin main

Username for 'https://github.com': jinkai-linux

Password for 'https://[email protected]':

Counting objects: 3, done.

Writing objects: 100% (3/3), 215 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

To https://github.com/jinkai-linux/jinkai-linux.git

* [new branch] main -> main

分支 main 设置为跟踪来自 origin 的远程分支 main。

img

下一次本地仓库更改后再推送,就可以直接 git push

[root@jinkai jinkai-linux]# vim a.txt

[root@jinkai jinkai-linux]# git add a.txt

[root@jinkai jinkai-linux]# git commit -m "hahaha"

[main 866e75f] hahaha

1 file changed, 3 insertions(+)

create mode 100644 a.txt

[root@jinkai jinkai-linux]# git push

img

克隆远程仓库

img

[root@jinkai tmp]# cd /home/

[root@jinkai home]# git clone https://github.com/jinkai-linux/jinkai-linux.git

正克隆到 'jinkai-linux'...

remote: Enumerating objects: 6, done.

remote: Counting objects: 100% (6/6), done.

remote: Compressing objects: 100% (3/3), done.

remote: Total 6 (delta 0), reused 6 (delta 0), pack-reused 0

Unpacking objects: 100% (6/6), done.

在本地修改仓库内容:

[root@jinkai jinkai-linux]# vim README.md

[root@jinkai jinkai-linux]# cat README.md

# jinkai-linux

abcdefghijk

[root@jinkai jinkai-linux]# git add README.md

[root@jinkai jinkai-linux]# git commit -m "hhhhh"

[main 4da96e2] hhhhh

1 file changed, 1 insertion(+)

然后再推送到远程服务端:git push

[root@jinkai jinkai-linux]# git push

远程端刷新查看多了添加的内容

远程服务端修改内容,然后下拉到自己的客户端:git pull

img

[root@jinkai jinkai-linux]# git pull

remote: Enumerating objects: 5, done.

remote: Counting objects: 100% (5/5), done.

remote: Compressing objects: 100% (2/2), done.

remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0

Unpacking objects: 100% (3/3), done.

来自 https://github.com/jinkai-linux/jinkai-linux

4da96e2..6106cd6 main -> origin/main

更新 4da96e2..6106cd6

Fast-forward

README.md | 2 ++

1 file changed, 2 insertions(+)

[root@jinkai jinkai-linux]# cat README.md

# jinkai-linux

abcdefghijk

111111

2222222

下拉到本地的内容已更新

知识扩展:

Github添加了SSH公钥,git push还是需要输入密码,解决方法如下:

[root@jinkai newfile]# cat /root/.netrc

machine github.com

login github-name(github用户名)

password password(登录密码)

猜你喜欢

转载自blog.51cto.com/11451960/2640803