git服务器的使用

本文详细介绍了Git的基本使用方法,包括仓库初始化、文件管理、版本控制、分支管理等核心功能。同时,还介绍了如何通过SSH安全地连接GitHub进行远程仓库操作。
<span style="font-size:32px;"><a target=_blank href="http://blog.youkuaiyun.com/hgz_gs/article/details/52039469">何:http://blog.youkuaiyun.com/hgz_gs/article/details/52039469</a></span>
<span style="font-size:24px;">  git init				仓库被初始化
1.git add 				添加文件到staged area(索引).
2.git diff --cached/git status		查看添加到索引的文件那些进行修改了
   git diff master..test		显示master与test版本的差别
3.git commit 				提示进程注释,完成后就会记录一个新的项目版本,提交
	git commit -a			自动把所有内容被修改的文件(不包括新建的文件)添加到索引中,并提交
4.git branch he				创建一个he分支
5.git branch				查看分支,*表示当前工作分支 
  gitk					显示项目的历史
  git branch  -d he			删除分支
  git branch -D	he			强制删除分支
6.git checkout he			切换分支
  git checkout -b mywork origin		基于远程分支"origin",创建一个叫"mywork"的分支
7.git merge he				合并分支,把he合并到当前
8.git reset --hard HEAD			撒销一个合并
9.git clone /home/alice/project myrepo	克隆
  git clone git://git.kernel.org/pub/scm/git/git.git
  git clone http://www.kernel.org/pub/scm/git/git.git
  git clone https://github.com/bugquella/cqc.git
  git clone git@github.com:bugquella/cqc.git
10.git pull /home/bob/myrepo master	git pull命令执行两个操作: 它从远程分支(remote branch)抓取修改 的内容,然后把它合并进当前的分支
11.git remote add bob /home/bob/myrepo	git remote命令建立了Bob的运程仓库的缩写,用这个(缩写) 名字我从Bob那得到所有远程分支的历史记录
   git fetch bob			执行"git pull"前半部分的工作, 但是这条命令并不会把抓下来的修改合并到当前分支里
   git remote show origin 		查看远程消息
   git remote add origin git@github.com:cqcre/cqc.git 建立远程分支
   git remote -v			查看远程分支
   git fetch origin master		从远程的origin仓库的master分支下载代码到本地的origin master
12.git log -p master..bob/master	上面的命令把Bob从Alice的主分支(master)中签出后所做的修改全部显示出来
13.git merge bob/master			把修改合并到她的主分支中
   git merge origin/master		把远程下载下来的代码合并到本地仓库,远程的和本地的合并



14.git log				git log命令可以显示所有的提交
15.git log v2.5.. Makefile fs/		找出所有从"v2.5“开 始在fs目录下的所有Makefile的修改
16.git log -p				显示补丁
17.git log --stat			显示在每个提交(commit)中哪些文件被修改了, 这些文件分别添加或删除了多少行内容
18.git push ssh://yourserver.com/~you/proj.git master:master 	将修改推到一个公共仓库
   git push -u origin master		把本地库的所有内容推送到远程库
   git push https://github.com/bugquella/cqc.git master:master
   git push git@github.com:bugquella/cqc.git master:master
   git push ssh://yourserver.com/~you/proj.git +master	强制git-push在上传修改时先更新,只要在分支名前面加一个加号</span>



</span>

<pre name="code" class="python">/*******************************************************************/
1、安装git服务器与ssh服务器:
		sudo apt-get install git-core openssh-server openssh-client
  ssh安装与配置:<a target=_blank href="http://blog.youkuaiyun.com/hgz_gs/article/details/52039218">http://blog.youkuaiyun.com/hgz_gs/article/details/52039218</a>
2、创建自己的仓库:用户共享,会在当前目录下创建.git目录
<span style="white-space:pre">	</span>git init
3、把当前的文件添加到staged area(索引)
<span style="white-space:pre">	</span>git add file1 file2
4、提交
<span style="white-space:pre">	</span>git commit -a //将会弹出一个窗口叫你注释本次修改的注释说明
5、访问(克隆):新建一个窗口 $su 用户名 登录另一个用户
   ///home/alice/project 为刚才创建创库的地方;myrepo为克隆后文件所在的地方
<span style="white-space:pre">	</span>git clone /home/alice/project myrepo

6、查看文件有那些进行修改了
<span style="white-space:pre">	</span>git diff --cached	查看添加到索引的文件哪些进行修改了,add之后
<span style="white-space:pre">	</span>git status<span style="white-space:pre">		</span>查看那些文件进行了修改,就是没有add之前

7、图形界面查看文件的版本信息
<span style="white-space:pre">	</span>gitk
</pre><pre name="code" class="python">
/*******************************************************************/

分支操作:

1、回到最开始创建仓库的地方/home/alice/project
	cd /home/alice/project
</pre><pre name="code" class="python">2、查看当前分支
<span style="white-space:pre">	</span>git brabch
3、创建分支
<span style="white-space:pre">	</span>git branch mybran
<span style="white-space:pre">	</span>再使用git brabch就会看到刚创建的分支,其中带*的就是当前工作的分支
4、切换分支
<span style="white-space:pre">	</span>git checkout mybran 
<span style="white-space:pre">	</span>//切换工作分支,使用git branck 查看分支,可以看到mybran带*号
</pre><pre name="code" class="python">5、修改文件
<span style="white-space:pre">	</span>vi file1
6、查看分支内容修改
<span style="white-space:pre">	</span>git diff --cached<span style="white-space:pre">	</span>查看添加到索引的文件哪些进行修改了,add之后
<span style="white-space:pre">	</span>git status	<span style="white-space:pre">	</span>查看那些文件进行了修改,就是没有add之前
7、删除分支
<span style="white-space:pre">	</span>git branch  -d <span style="white-space:pre">		</span>删除分支
<span style="white-space:pre">	</span>git branch -D<span style="white-space:pre">		</span>强制删除分支,当修改内容没有提交时使用
8、合并分支
<span style="white-space:pre">	</span>git merge mybran<span style="white-space:pre">	</span>合并分支,把mybran合并到当前
9、撤销合并
<span style="white-space:pre">	</span>git reset --hard HEAD	撒销一个合并</span>
</pre><pre name="code" class="python">
/*******************************************************************/
不同主机访问git:通过ssh服务器进行操作

1、设置Git的user name 和email:(如果是第一次使用的话,这里的用户名与email随便)

<span style="white-space:pre">	</span>$ git config --global user.name "humingx"
<span style="white-space:pre">	</span>$ git config --global user.email "humingx@yeah.net"

2、注册github帐号
	<a target=_blank href="https://github.com/">https://github.com/</a>
<span style="white-space:pre">	</span>sign up-->填写你的用户名.邮箱.密码-->create an account

3、生成密匙
	$ ssh-keygen -t rsa -C "hegaozhi@163.com"
	//hegaozhi@163.com你在 github注册的邮箱
<span style="white-space:pre">	</span>连续3个回车。如果不需要密码的话。
	最后得到了两个文件:id_rsa和id_rsa.pub。在家目录的.shh目录里,这里不要使用管理员权限

4、添加密钥到ssh-agent
<span style="white-space:pre">	</span>$ ssh-add ~/.ssh/id_rsa
<span style="white-space:pre">	</span>//添加生成的 SSH key 到 ssh-agent。
<span style="white-space:pre">	</span>确保 ssh-agent 是可用的。ssh-agent是一种控制用来保存公钥身份验证所使用的私钥的程序,其实ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。
 /*# start the ssh-agent in the background
  eval "$(ssh-agent -s)"
<span style="white-space:pre">	</span>Agent pid 59566*/</span>

5、登录Github,添加ssh
<span style="white-space:pre">	</span><a target=_blank href="https://github.com/">https://github.com/</a>
<span style="white-space:pre">	</span>登录你的帐号
Settings--》ssh and gpg keys -->new ssh key
在title中随便命名一个key的名字
<span style="white-space:pre">	</span>把id_rsa.pub文件里的内容复制到这key中

6、测试
<span style="white-space:pre">	</span>$ ssh -T git@github.com
你将会看到:
    The authenticity of host 'github.com (207.97.227.239)' can't be established.
    RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
    Are you sure you want to continue connecting (yes/no)?
选择 yes
如果看到Hi后面是你的用注意:输入密码时如果输错一个字就会不正确,使用删除键是无法更正的。
密码正确后你会看到下面这段话,如:
Hi username! You've successfully authenticated, but GitHub does not
# provide shell access.
如果用户名是正确的,你已经成功设置SSH密钥。如果你看到 “access denied” ,者表示拒绝访问,那么你就需要使用 https 去访问,而不是 SSH 。
户名,就说明成功了。

7、修改.git文件夹下config中的url。
修改前
    [remote "origin"]
    url = https://github.com/humingx/humingx.github.io.git
    fetch = +refs/heads/*:refs/remotes/origin/*
修改后
    [remote "origin"]
    url = git@github.com:humingx/humingx.github.io.git
    fetch = +refs/heads/*:refs/remotes/origin/*</span>

8、发布
什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
现在,我们根据GitHub的提示,在本地的learngit仓库下运行命令:

</pre><pre name="code" class="python">先在GitHub官网中新建一个repository名称为cqc

点击右上角的+号:new repository
<span style="white-space:pre">	</span>Repository nam:cqc
<span style="white-space:pre">	</span>create repository
在终端你要发布的文件的目录中
<span style="white-space:pre">	</span>$ git remote add origin git@github.com:bugquella/cqc.git

<span style="white-space:pre">	</span>请千万注意,把上面的 bugquella 替换成你自己的GitHub账户名,否则,你在本地关联的就是我的远程库,关联没有问题,但是你以后推送是推不上去的,因为你的SSH Key公钥不在我的账户列表中。
添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
</pre><pre name="code" class="python">下一步,就可以把本地库的所有内容推送到远程库上:
<span style="white-space:pre">	</span>$ git push -u origin master</span></span>
好啦,静静等待git把你的代码Push上去吧~是不是很简单?

9、测试
<span style="font-family: Arial, Helvetica, sans-serif;">在另一台电脑把ssh的服务打开 :网络连上</span>
<span style="white-space:pre">	</span>$sudo service ssh restart
把远程仓库的代码克隆下来:
<span style="white-space:pre">	</span>$git clone git@github.com:bugquella/cqc.git
或者:
<span style="white-space:pre">	</span>git clone https://github.com/bugquella/cqc.git




                
<think>我们正在配置Git服务器使用SSH密钥进行用户身份验证。根据引用[1][2][3][4],这个过程主要涉及在服务器端设置SSH密钥认证机制。以下是详细步骤:###1. **服务器端准备:创建系统用户和Git仓库**-在服务器上为每个需要访问Git的用户创建一个系统账户(例如`gituser`)或使用共享账户(如`git`)。-创建Git仓库目录,并确保目录权限正确:```bashsudoadduser gituser#创建用户sudo mkdir -p /srv/git/repo.gitsudo chown -R gituser:gituser/srv/git/repo.git```-初始化裸仓库:```bashcd/srv/git/repo.gitsudo -u gituser gitinit --bare```###2.**客户端生成SSH密钥对**-用户在本地机器上生成SSH密钥对(如果尚未生成):```bashssh-keygen-trsa-b4096 -C "your_email@example.com"```默认保存路径为`~/.ssh/id_rsa`(私钥)和`~/.ssh/id_rsa.pub`(公钥)[^1][^4]。 ###3. **将公钥添加到服务器**-**方法1:手动添加(适用于基础配置)**1.用户将公钥内容(`id_rsa.pub`文件内容)发送给服务器管理员。2.管理员将公钥追加到服务器上相应用户的`~/.ssh/authorized_keys`文件中:```bash#以gituser身份操作su -gitusermkdir-p~/.sshtouch~/.ssh/authorized_keyschmod700 ~/.sshchmod600 ~/.ssh/authorized_keysecho "公钥内容">> ~/.ssh/authorized_keys```- **方法2:使用自动化工具(如GitLab/Gogs)**-若使用GitLab等Git服务器软件:1.用户登录Web界面,在个人设置中找到SSH密钥配置页面。2.粘贴公钥并保存,系统会自动将其添加到对应用户的`authorized_keys`中[^3][^4]。###4.**配置SSH守护进程(sshd)**-确保服务器SSH服务(`sshd`)启用公钥认证。编辑`/etc/ssh/sshd_config`:```PubkeyAuthenticationyesAuthorizedKeysFile .ssh/authorized_keys```-重启SSH服务:```bashsudo systemctl restartsshd``` ###5. **客户端测试连接**-用户测试SSH连接:```bashssh-Tgituser@your-server-ip```若配置正确,会显示成功消息(如GitLab的欢迎信息)。 ###6. **使用SSH克隆和推送**-用户使用SSHURL克隆仓库:```bashgitclone gituser@your-server-ip:/srv/git/repo.git```-后续所有Git操作(如`gitpush`)均通过SSH认证用户身份。###安全增强建议- **禁用密码登录**(在`sshd_config`中设置`PasswordAuthenticationno`)[^1]。-**使用强制命令限制**:在`authorized_keys`中限制用户只能执行Git命令,例如:```command="git-shell -c \"$SSH_ORIGINAL_COMMAND\"",no-port-forwarding,no-agent-forwarding,no-X11-forwarding ssh-rsa AAAAB3Nza... user@client```这样用户无法通过SSH执行非Git命令[^1]。###验证身份识别-当用户推送代码时,服务器通过SSH连接的认证用户(如`gituser`)记录操作日志,从而确定真实提交者[^1][^4]。 通过以上步骤,Git服务器即可使用SSH密钥可靠识别用户身份。 §§相关问题§§1.如何为多个Git服务器账户配置不同的SSH密钥?2. Git服务器如何通过SSH密钥关联到具体的用户账户(如GitLab中的账户)?3.如何排查SSH密钥认证失败的问题?4.除了SSH密钥,Git服务器还有哪些身份验证方式?</think>### 配置Git服务器使用SSH密钥认证的完整步骤 以下是配置Git服务器使用SSH密钥进行用户身份验证的详细流程,结合引用内容确保安全可靠: #### 1. **服务器端基础配置** ```bash # 创建专用git用户(推荐) sudo adduser git sudo usermod -aG sudo git # 授予必要权限 # 初始化仓库 sudo mkdir -p /srv/git/project.git sudo chown git:git /srv/git/project.git sudo -u git git init --bare /srv/git/project.git ``` #### 2. **配置SSH认证** ```bash # 切换到git用户 sudo su - git # 创建SSH目录并设置权限 mkdir -p ~/.ssh chmod 700 ~/.ssh touch ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys ``` #### 3. **客户端密钥生成** 客户端执行: ```bash ssh-keygen -t rsa -b 4096 -C "user@example.com" # 引用[1][4] # 默认保存路径: ~/.ssh/id_rsa(私钥) 和 ~/.ssh/id_rsa.pub(公钥) ``` #### 4. **公钥部署到服务器** - **方法1:手动添加** 1. 客户端复制公钥内容:`cat ~/.ssh/id_rsa.pub` 2. 服务器管理员追加到 `git` 用户的 `~/.ssh/authorized_keys` 文件 - **方法2:自动化工具(推荐)** - GitLab/Gogs等平台提供Web界面添加公钥(引用[3]) - 在用户设置 → SSH Keys 粘贴公钥内容 #### 5. **服务器增强安全配置** 编辑 `/etc/ssh/sshd_config`: ```ini # 禁用密码登录(强制密钥认证) PasswordAuthentication no # 限制git用户权限 Match User git AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no ForceCommand git-shell -c "$SSH_ORIGINAL_COMMAND" # 引用[1] ``` 重启服务生效: ```bash sudo systemctl restart sshd ``` #### 6. **客户端测试连接** ```bash # 测试认证 ssh -T git@your-server-ip # 克隆仓库 git clone git@your-server-ip:/srv/git/project.git ``` #### 7. **多用户管理(引用[2][3])** ```bash # 客户端生成多密钥对 ssh-keygen -t ed25519 -f ~/.ssh/work_rsa # 配置 ~/.ssh/config Host work-server HostName git.company.com User git IdentityFile ~/.ssh/work_rsa IdentitiesOnly yes ``` #### 身份验证流程说明 当用户推送代码时: 1. 客户端使用私钥建立SSH连接 2. 服务器通过 `authorized_keys` 匹配公钥 3. 服务器根据公钥绑定的用户账户记录操作 4. 提交信息中的作者字段与账户关联(但以SSH认证为准) > **关键点**:服务器完全依赖SSH密钥认证确定用户身份,不信任提交信息中的作者字段,防止伪造[^1][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听雨听风眠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值