git

自己搭建一个git服务器,需要什么?

什么都不需要,用的git就可以了。

git init --bare #创建一个git库; 

git push origin dev1:dev1 #将本地的dev分支,推送到远端,在远端创建一个dev分支

git push --set-upstream origin dev1 #将本地的dev分支和远端绑定。后续在本地dev分支中,直接git push就会自动推送到远端dev分支中。

[root@cgsl]# mkdir testgit
[root@cgsl]# cd testgit
[root@cgsl]# git init --bare
初始化空的 Git 仓库于 /media/B/testgit/
[root@cgsl]# exit
Connection to cgsl closed.


$ git clone ssh://root@cgsl:/media/B/testgit
Cloning into 'testgit'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

$ cd testgit/

$ vi t.txt

$ git status
On branch master
Initial commit
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        t.txt
nothing added to commit but untracked files present (use "git add" to trac

$ git add .

$ git commit -m"tt"
[master (root-commit) 369c798] tt
 1 file changed, 1 insertion(+)
 create mode 100644 t.txt

$ git push
Counting objects: 3, done.
Writing objects: 100% (3/3), 217 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://root@cgsl:/media/B/testgit
 * [new branch]      master -> master

$ git checkout -b dev1
Switched to a new branch 'dev1'

$ git push origin dev1:dev1
Total 0 (delta 0), reused 0 (delta 0)
To ssh://root@cgsl:/media/B/testgit
 * [new branch]      dev1 -> dev1

$ git branch
* dev1
  master

$ git branch -a
* dev1
  master
  remotes/origin/dev1
  remotes/origin/master

$ vi 2.txt

$ git add .

$ git commit -m"dev"
[dev1 244361f] dev
 1 file changed, 1 insertion(+)
 create mode 100644 2.txt

$ git push
fatal: The current branch dev1 has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin dev1

$ git push --set-upstream origin dev1
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 276 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://root@cgsl:/media/B/testgit
   369c798..244361f  dev1 -> dev1
Branch dev1 set up to track remote branch dev1 from origin.

$ git push
Everything up-to-date

$ git status
On branch dev1
Your branch is up-to-date with 'origin/dev1'.
nothing to commit, working directory clean
gaofeng 2020.2.28

git push origin dev ---origin 是主机名,其实就是一虚拟主机名,随便写的   dev是分支名

$ git remote add pb2 ssh://root@cgsl:/media/B/testgit   ---添加一个主机名

$ git remote -v
origin  ssh://root@cgsl:/media/B/testgit (fetch)
origin  ssh://root@cgsl:/media/B/testgit (push)
pb2     ssh://root@cgsl:/media/B/testgit (fetch)
pb2     ssh://root@cgsl:/media/B/testgit (push)

$ git push  --常用的是这个
$ git push origin dev1 --常用的是这个 将dev1分支推送到dev1分支
$ git push pb2 dev2  -- 将本地dev2分支,推送到pb2的dev2上
$ git push origin dev1:dev2 --将本地的dev1 推送到origin的dev2上

MINGW32 /d/tt/testgit (dev2)
$ git push origin master  --如果当前处在dev2分支,是不能将master推送到master分支的
error: src refspec master does not match any.
error: failed to push some refs to 'ssh://root@cgsl:/media/B/testgit'

MINGW32 /d/tt/testgit (dev2)
$ git push origin dev2:master --必须这样写,才可以把当前分支推送到master分支
Total 0 (delta 0), reused 0 (delta 0)
To ssh://root@cgsl:/media/B/testgit
 * [new branch]      dev2 -> master

$ git push origin -d dev1  --删除远程分支
To ssh://root@cgsl:/media/B/testgit
 - [deleted]         dev1

$ git branch -d dev2 --删除本地分支
Deleted branch dev2 (was f60f2b8).

$ git reflog show --date=iso origin/dev2 --查看分支的创建时间
5bea50d refs/remotes/origin/dev2@{2020-02-28 17:02:22 +0800}: update by push
21eaa6b refs/remotes/origin/dev2@{2020-02-28 16:54:52 +0800}: update by push

10041985@A23353452 MINGW32 /d/tt/testgit (master)
$ git reflog show --date=iso pb2/dev2   --查看分支的创建时间
f60f2b8 refs/remotes/pb2/dev2@{2020-02-28 17:05:55 +0800}: update by push

 

git、 ssh 、 rsa公钥 的关系

1、以gitbub为例,登录gitbub要一个用户名,git config中要配置一个用户名,rsa密钥要一个用户名

     这三个用户名必须一样吗?git log中显示的是哪个?

     真正的用户名,只有第一个,假如叫 jim。gitbub要求你给这个用户名绑定一个公钥。下载git clone,git push时,ssh就会使用私钥和gitbub对话,gitbub看到自己存储了他的公钥就信任了这个用户,且因为用户名绑定,所以知道当前登录的用户是 jim。

   git commit 时,记录的用户名是git config中的用户名。git push时,commit信息也会被提交上去。

在linux机器上,设置ssh免密码登录。 需要把 公钥 拷贝到 linux 某个用户的.ssh/authorized_keys文件中。ssh登录时,比如 ssh abc@192.168.4.5, 则linux在abc的authorized_keys文件中找对应的公钥。找到后,验证通过。你在Linux中的当前用户名就是abc。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值