赞
踩
原文链接:https://blog.csdn.net/weixin_45805339/article/details/133318082
服务器:Ubuntu18.04
客户端:windows10_x64、Ubuntu20.04
无论是服务端还是客户端都需要先安装git
Ubuntu安装方法:
sudo apt update
sudo apt install git
本地git仓库依赖OpenSSH进行数据传输,先检查时候已经安装OpenSSH:
kyland@kyland-u-wuhao:~$ dpkg --list | grep ssh
ii openssh-client 1:7.6p1-4ubuntu0.7 amd64 secure shell (SSH) client, for secure access to remote machines
ii openssh-server 1:7.6p1-4ubuntu0.7 amd64 secure shell (SSH) server, for secure access from remote machines
如上已经安装了OpenSSH,如果没有安装需要执行一下命令:
sudo apt install -y openssh-server openssh-client
查看ssh状态:
sudo systemctl status ssh
#如果没有启动,手动启动ssh服务
sudo systemctl enable ssh
在服务器终端输入如下命令,输入两次密码后(比如密码也是:git),一路回车就创建好了
kyland@kyland-u-wuhao:~$ sudo adduser git [sudo] kyland 的密码: 正在添加用户"git"... 正在添加新组"git" (1001)... 正在添加新用户"git" (1001) 到组"git"... 创建主目录"/home/git"... 正在从"/etc/skel"复制文件... 输入新的 UNIX 密码: 重新输入新的 UNIX 密码: passwd:已成功更新密码 正在改变 git 的用户信息 请输入新值,或直接敲回车键以使用默认值 全名 []: 房间号码 []: 工作电话 []: 家庭电话 []: 其它 []: 这些信息是否正确? [Y/n]
cd /home/git #进入git用户家目录
mkdir private_code_repository #创建本地私有git仓库目录
git@kyland-u-wuhao:~$ git init --bare RosProject.git #创建本地私有git仓库RosProject.git
已初始化空的 Git 仓库于 /home/git/RosProject.git/
mkdir -p /home/git/.ssh/ #在git主目录下先创建一个.ssh目录以便后面使用
ssh-keygen -t rsa #终端输入一路回车 Generating public/private rsa key pair. Enter file in which to save the key (/home/Administrator/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/Administrator/.ssh/id_rsa Your public key has been saved in /home/Administrator/.ssh/id_rsa.pub The key fingerprint is: SHA256:DyX41KiKahfSewidYUcINWBEDXfMuLRnuICwNMm16fQ Administrator@MS-TOVQOVTJPKXR The key's randomart image is: +---[RSA 3072]----+ |+BO==. | |o=.==+ . o | |+.o+= . + o | |o.o*.+ + o | | =.BE. S | | o B . o | | + = . | | o + . | |o . . | +----[SHA256]-----+ #在家目录.ssh下生成:id_rsa(私钥)、id_rsa.pub(公钥)两个密钥
原文链接:https://blog.csdn.net/weixin_56546908/article/details/124600622
设置用户名和邮箱
使用命令git config --global user.name "名称"设置用户名
使用命令git config --global user.email “邮箱"设置邮箱
查看设置的用户名和邮箱
使用命令git config --global --list
生成密钥信息
输入命令ssh-keygen -t rsa -C"youremail”
之后一直回车即可
youremail:你自己的邮箱账号 。
补充:-t:指定要创建的密钥的类型。rsa:一种加密算法。-C:添加注释
红色框框内是生成的公钥和私钥的位置
查看创建好的公钥
可使用gedit或其他工具查看生成的公钥,
以下用gedit: gedit /home/ubuntutest/.ssh/id_rsa.pub
此公钥将用gitee中SSH公钥的配置
打开gitee—>设置—>SSH公钥
sudo chown git.git rsa.pub
git@ubuntu:~$ sudo cat >> .ssh/authorized_keys < rsa.pub
git@ubuntu:~$ vim .ssh/authorized_keys
Administrator@PC-xxx MINGW64 /d/123/testgit (master)
$ git clone git@192.168.1.101:/home/git/mytest/mytest.git
Cloning into 'mytest'...
git@192.168.1.101's password:
warning: You appear to have cloned an empty repository.
将客户端公钥id_rsa.pub内容复制到服务端.ssh/下新建文件authorized_keys里,这样我们在拉取推送代码时,就不需要输入密码了。
第一次我们需要拉取在服务端创建的仓库:
git clone git@192.168.0.83:/home/git/private_code_repository/RosProject.git
cd RosProject #进入工程
Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926)
$ ls -lah #查看工程内容
total 4.0K
drwxr-xr-x 1 Administrator 197121 0 Sep 26 15:48 ./
drwxr-xr-x 1 Administrator 197121 0 Sep 26 15:45 ../
drwxr-xr-x 1 Administrator 197121 0 Sep 26 17:17 .git/
-rw-r--r-- 1 Administrator 197121 0 Sep 26 15:48 .gitignore
每次我们更改一个功能的时候都需要创建一个分支,如:
$ git checkout -b ros2_230926 #创建本地分支
Switched to a new branch 'ros2_230926'
更改或者添加代码文件之后要提交代码分支到远程仓库
Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926) $ touch .gitignore #添加.gitignore文件 Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926) $ git status #查看当前分支状态 On branch ros2_230926 No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) .gitignore nothing added to commit but untracked files present (use "git add" to track) Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926) $ git add . #将文件添加到git仓库缓存区(暂存区) Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926) $ git status On branch ros2_230926 No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: .gitignore Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926) $ git commit -m'添加.gitignore' #将某些已被跟踪的文件提交到版本库(包含工作区和版本库) #因为我们没设置git自身配置文件所以需要进行一下操作 Author identity unknown *** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. fatal: unable to auto-detect email address (got 'Administrator@MS-TOVQOVTJPKXR.( none)') Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926) $ git config --global user.email "15840235191@163.com" Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926) $ git config --global user.name "wuhao" Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926) $ git commit -m'添加.gitignore' #提交到本地仓库成功 [ros2_230926 (root-commit) 0748e6c] 添加.gitignore 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .gitignore Administrator@MS-TOVQOVTJPKXR MINGW64 /d/git_pro/RosProject (ros2_230926) $ git push -u origin ros2_230926 #在远程仓库创建该分支并且同步本地分支及远程分支 Enumerating objects: 3, done. Counting objects: 100% (3/3), done. Writing objects: 100% (3/3), 221 bytes | 221.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 To 192.168.0.83:/home/git/private_code_repository/RosProject.git * [new branch] ros2_230926 -> ros2_230926 branch 'ros2_230926' set up to track 'origin/ros2_230926'.
以上就完成了代码分支的推送
git checkout -b [分支名称] #创建本地分支
git status #查看本地分支状态
git add . #将文件添加到git仓库缓存区(暂存区)
git commit -m'[说明]' #将某些已被跟踪的文件提交到版本库(包含工作区和版本库)
git diff [修改文件路径] #查看修改文件详细内容
git reset [分支号] #本地仓库切换到该分支上,修改的代码保留
git reset --hard [分支号] #本地仓库切换到该分支上,修改的代码不保留
git rebase [分支名] #合并该分支到当前分支
git log #查看本地操作信息
原文链接:https://blog.csdn.net/liigo/article/details/83790604
本文提供的方法适用于小型团队在局域网内通过git协同编码,基本配置简便易行,还额外提供基于SSH免密码提交代码的扩展方案。基本原理可参见文末总结。
此处省略具体操作步骤。
在Linux系统内以管理员权限(root)执行如下命令创建Linux用户:
adduser git
此命令执行过程中会提示输入新用户的 登录密码,同时自动创建用户主目录/home/git,以及执行其他必要的工作。
该用户不一定非叫git,任意合法名称都行,例如 liigogit 等等,当然后续操作命令也要相应地修改,最终仓库地址也有所不同(仓库地址以此用户名开头)。
网上有方法禁止git用户登录SSH。我认为这一步是可选的。
使用 git 用户登录Linux系统,在用户主目录 /home/git 内执行如下命令创建git仓库:
git init --bare myrepo.git
裸仓库(–bare)目录名称以后缀 .git 结尾是一种习惯性约定,并非必需。
该仓库本地目录是 /home/git/myrepo.git,或者 ~/myrepo.git,这个毫无疑问。
该仓库 远程目录 可以是以下任意一个:
git@192.168.0.2:/home/git/myrepo.git
git@192.168.0.2:~/myrepo.git
git@192.168.0.2:myrepo.git
咱们通常使用最后一个,因为它最简洁。
注意其中包含了用户名、IP地址、本地目录等信息;注意符号 @ 和 : 都是必不可少的。
Git客户端可通过如下命令克隆仓库:
git clone git@192.168.0.2:myrepo.git
用户名git已经包含在仓库远程目录内,用户密码就是在第2步创建git用户时设定的那个密码。克隆仓库需要输入密码。
执行 git push 等命令时要求输入密码,就是第2步创建git用户时设定的那个密码。
至此,基本配置步骤已经完成,基础功能可用。如需免密码推送Git功能,请继续阅读本文。
经过以上5个步骤,Git服务器基本功能已经可用,但是至少还有两个缺点:
需要向团队所有成员公开git用户的密码,不太安全
每次推送仓库时都要输入git用户的密码,操作繁琐
下面为Linux系统的 git 用户配置 authorized_keys 文件,配置成功之后就无需公开其登录密码,推送时也无需输入密码,一并克服了两个缺点。
服务端配置文件 authorized_keys
使用 git 用户登录Linux,在其主目录 /home/git 内执行如下操作(无需管理员权限):
mkdir .ssh
chmod 700 .ssh
cd .ssh
touch authorized_keys
chmod 600 authorized_keys
LIIGO人云亦云注:SSH系统要求 .ssh 目录权限是700(drwx------),.ssh/authorized_keys 文件权限是600(-rw-------)。
然后编辑该文件 /home/git/.ssh/authorized_keys ,逐行输入团队各成员提供的公钥文件内容(下文介绍生成SSH公钥私钥的方法)。
20221019 补记:可以使用ssh-copy-id命令将本机内指定的公钥文件内容推送追加到远程主机指定用户的authorized_keys文件末尾,示例如下:
ssh-copy-id -i id_rsa.pub git@192.168.0.2
Linux登录用户在任意目录下执行命令 ssh-keygen 连续按三次回车键即自动生成如下两个文件:
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
其中 id_rsa 就是刚创建的密钥文件(此文件名和路径不得随意变动),id_rsa.pub 是公钥文件。
团队各成员分别将自己的公钥文件 id_rsa.pub 或其内容发给git用户管理员,让他写入服务端 authorized_keys 文件。
Tortoise Git 用户可通过 PuTTYgen.exe 创建公钥密钥。具体方法是点击Generate按钮,随意滑动鼠标直至创建完成,生成的公钥文本显示在窗口上方多行只读编辑框内,复制其内容发送给git用户管理员,让他写入服务端 authorized_keys 文件。最后还要点击 Save private key 按钮保存密钥文件(.ppk,Putty密钥文件,区别于OpenSSH密钥文件(id_rsa),但利用PuTTYgen.exe,前者可以导出后者)。还有一点要特别注意,通过 Tortoise Git 图形界面克隆仓库时需勾选"Load Putty key",并选定前面生成的Putty密钥文件(.ppk)。至于Pageant.exe,不用管他,Tortoise Git会自动启动它并自动加载Putty密钥文件。
LIIGO多说一句,对于Github上的仓库,要应用公钥密钥,通过TortoiseGit克隆仓库时必须使用SSH地址(形如git@github.com:liigo/rust.git),而非HTTPS地址(形如https://github.com/liigo/rust.git)。Github网站仓库首页同时提供这两类链接(“Clone with SSH” VS “Clone with HTTPS”)。
服务器是开启了SSH服务的Linux系统,在其中创建名称为 git 的Linux用户(同时也是SSH登录用户)专用于管理Git仓库,仓库位于服务器本机目录 /home/git/name.git 内(name.git是目录名),仓库SSH地址即客户端克隆地址是 git@ip:name.git,Git克隆命令行是 git clone git@ip:name.git。
在未配置SSH公钥的情况下,需要向仓库使用者公开 git 用户的登录密码,克隆(clone)/拉取(pull)/推送(push)等操作都需要输入该密码。在服务端配置好文件 /home/git/.ssh/authorized_keys 并录入各使用者SSH公钥后,就无需公开该登录密码,所有Git操作都不用输入密码。
前面的基本操作步骤都很简单,可以提供基本的Git服务;配置SSH公钥的操作相对复杂,但客户使用体验更好。
此方法的缺点是,不能有针对性的分别设置团队各成员的权限,所有人都能完全操控Git仓库。
可能有朋友产生疑问,团队所有成员共用一个git用户提交代码,还能分清代码是谁写的吗?当然能。Git客户端推送时携带了代码作者的姓名和邮件地址,都完整的体现在 git log 里面,这个无需担心。Github网站后端也是如此操作的,并无不妥。
Windows11生成密钥对,并把公钥放到git服务器,用于免密
原文链接:https://blog.csdn.net/vhcjgc/article/details/124043169
在Windows下,需要安装两个工具:Git for Windows 以及 TortoiseGit。
Git for Windows是Git的官方Windows版本,提供了Git的所有功能,但是由于Git完全是为了Lnix系统开发的开源软件,注重功能而忽略了易用性,对于初学者不是特别友好。
TortoiseGit则为Git for Windows加上了一个易用的右键菜单,并且将文件状态等信息很好地与Windows资源管理器的整合。
安装步骤参考
首先新建一个文件夹名为test.git,(用作交换各客户端的代码目录,仅用于被推送。)
设置共享
共享文件夹设置好了之后。右键点击>git在这里创建版本库>弹出将复选框打上勾,确定即可
查看共享目录
服务器ip+文件夹名称
如
172.16.202.23\test.git
在客户机查看此共享文件夹是否创建成功
win + R
输入
172.16.202.23
打开了服务器的共享文件夹
至此,服务器已经配置好了。 这个目录是共享的目录。也是将来在客户端电脑上要克隆的地址。
新建文件夹,右键>Git克隆
选择目标文件夹,点击确定
随便添加一个文件
右键>git 提交
点击推送
在本机的另一个文件夹中克隆
可以看到版本已经更新
原文链接:https://www.cnblogs.com/wutou/p/17640216.html
sudo add-apt-repository ppa:git-core/ppa
根据提示 回车继续
sudo apt update
不更新,即便 git 官方有更新,你也搜索不到
apt list --upgradable
可以看到左边红箭头,显示是最新的 git 2.41,而右边箭头是系统里装的 2.17.1 版本
sudo apt-get install git
安装最新版本后:
Ubunt:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。