一、引言 一般来说,安装好 git 后,我们都会配置一个全局的 config 信息,就像这样:
1 2 |
git config --global user.name "jitwxs" // 配置全局用户名,如 Github 上注册的用户名 git config --global user.email "jitwxs@foxmail.com" // 配置全局邮箱,如 Github 上配置的邮箱 |
但是你可能会碰到需要在一台电脑上配置多个用户信息的需求。此时就不能够用一个全局配置搞定一切了。 比如因为我的个人电脑出了问题,我想要提交我的个人项目时,只能用公司配的电脑去提交。而公司的电脑配置的是私有的 gitlab 仓库,而我自己的项目存储在 github 上。这两个仓库不仅仓库地址不一样,仓库的用户名和邮箱都不一样。 二、配置多用户 本文将配置分别是 github 以及 gitlab 上的两个用户,并分别在它们所属的项目上进行 git 操作,这差不多就是配置多用户的大部分操作了。 GITHUB GITLAB 用户名 jitwxs lemon 邮箱 jitwxs@foxmail.com lemon@test.com 2.1 清除全局配置 在正式配置之前,我们先得把全局配置给清除掉(如果你配置过的话),执行命令:
1 |
git config --global --list |
这会列出所有已经配置的全局配置,如果你发现其中有 user.name 和 user.email 信息,请执行以下命令将其清除掉:
1 2 |
git config --global --unset user.name git config --global --unset user.email |
2.2 生成钥对 钥对的保存位置默认在 ~/.ssh 目录下,我们先清理下这个目录中已存在的钥对信息,即删除其中的 id_rsa、id_rsa.pub 之类的公钥和密钥文件。 首先我们开始生成 github 上的仓库钥对,通过 -C 参数填写 github 的邮箱:
1 |
ssh-keygen -t rsa -C “jitwxs@foxmail.com” |
按下 ENTER 键后,会有如下提示:
1 |
Generatingpublic/privatersa key pair.Enter fileinwhich to save the key (/Users/jitwxs/.ssh/id_rsa): |
在这里输入公钥的名字,默认情况是叫 id_rsa,为了和后面的 gitlab 配置区分,这里输入 id_rsa_github。输入完毕后,一路回车,钥对就生成完毕了。 下面开始生成 gitlab 上的仓库钥对,步骤和上面一样:
1 |
ssh-keygen -t rsa -C “lemon@test.com” |
生成的公钥名就叫做:id_rsa_gitlab。 2.3 添加 SSH Keys 我相信你既然都看到这篇文章了,你一定掌握了如何将公钥添加到 SSH Keys 中。请将 id_rsa_github.pub 和 id_rsa_gitlab.pub 内容分别添加到 github 和 gitlab 的 SSH Keys 中,这里就不啰嗦了。 2.4 添加私钥 在上一步中,我们已经将公钥添加到了 github 或者 gitlab 服务器上,我们还需要将私钥添加到本地中,不然无法使用。添加命令也十分简单,如下:
1 2 |
ssh-add ~/.ssh/id_rsa_github // 将 GitHub 私钥添加到本地 ssh-add ~/.ssh/id_rsa_gitlab // 将 GitLab 私钥添加到本地 |
添加完毕后,可以通过执行 ssh-add -l 验证下,如果都能显示出来和下面一样,就 […]
View Details我们在使用git管理代码的时候,经常需要放到不同的托管网站,如github,osc等,那么不同的网站账号不一样,就需要生成不同密钥,配置对应的不同网站,接下来我们写写如何处理。 ps:这里是在centos7.2下操作,不过其他操作系统依然适用,这里举的例子,一个是github,一个是osc。 1 生成密钥 这里可以设置密钥文件名和路径,/root/.ssh 是路径(一般路径选择默认),id_rsa_github是密钥文件名, 文件命名后按两次回车,即密码为空
1 |
ssh-keygen -T rsa -C "example@qq.com" |
生成github的密钥 生成osc的密钥 查看一下.ssh文件夹,发现有id_rsa_github, id_rsa_github.pub(放到github),id_rsa_osc, id_rsa_osc.pub(放到osc)
1 |
ls -a /root/.ssh |
2 接下来配置多账号 在.ssh文件夹下面新建一个命名为config的文件,编辑如下内容
1 2 3 4 5 6 7 8 9 10 11 |
#github Host github.com HostName github.com IdentityFile ~/.ssh/id_rsa_github User pinnuli #osc Host gitee.com HostName gitee.com IdentityFile ~/.ssh/id_rsa_osc User pinnuli |
(/images/git_multiaccount_config.png) 3 把对应的公钥放到github和osc上面 4 测试是否成功
1 |
ssh -T git@github.com |
1 |
ssh -T git@gitee.com |
至此,git多账号配置完毕,需要更多账号也是一样的道理 from:https://blog.csdn.net/pinnuli/article/details/81293071
View Details1.查看Git所有配置 git config --list 2.删除全局配置项 (1)终端执行命令: git config --global --unset user.name (2)编辑配置文件: git config --global --edit from:https://www.cnblogs.com/zqunor/p/9055262.html
View Detailssudo gitlab-ctl stop 修改/etc/gitlab/gitlab.rb中的如下一行:
1 |
external_url 'http://gitlab.xxxxx.cn' |
执行更新配置操作 sudo gitlab-ctl reconfigure sudo gitlab-ctl start from:https://blog.csdn.net/qq_36937234/article/details/89381857
View Details“没有commit错代码的人,不足以称为高级工程师。——凯天” 你不认识凯天没事,你只用知道代码提交错分支有救就行了。废话不多说,我们进入正题——怎么删除最后一次提交的记录。 删除最后一次提交 命令很简单,但是不能马虎,不能多回滚或者少回滚,不然就麻烦不断了。 主要命令: 第一步:回滚上一次提交 git reset --hard HEAD^ 就很简单,回滚master分支的上一次提交。 第二步:强制提交本地代码 git push origin master -f 由于本地reset 之后本地库落后于远程N个版本,所以需要强制提交。 路上可能遇到的坑: 提交的过程中,有可能没那么顺利。比如提示error: pre-receive hook declined …. 为什么最后强制提交会失效,原因:分支被保护了,无法强制提交。 不着急,不要慌。我们记录距离支成功回滚代码只差最后一步了——解除branch 保护。怎么玩?很简单,进入gitLab。然后找到Settings(需要账户具备该权限),然后找到Protected branches,然后点击Unprotect按钮。(如图) 强制提交错误 解除保护后,再尝试使用强制提交的命令即可。 最后,大功告成。 删除指定commit提交 如果只能删除最后一次提交记录,多少还是有点鸡肋。有时候我们需要删除的可能是中间的两条commit 记录。其实玩法大同小异。 首先我们确认需要删除的commit log id 是多少,比如:我们需要删除的是:21a254a2b7 对应的这条log。 删除前.png 然后使用git rebase 命令,命令的意思是可以改写从 21a254a2b7 commit id 开始后的所有提交记录。 git rebase -i 21a254a2b7^ 执行完这个命令后,就可以看到 21a254a2b7 后的所有commit 记录了。 默认是使用vim 编辑器打开了commit log list。然后我们就可以针对我们不需要的某些log 进行删除了。把原本的pick 单词修改为drop 就表示该commit log 我们需要删除。如下图 修改删除记录.png 并且图片中还有对应的说明解释。 分支删除完成后,保存该文件并退出vim 编辑器。 最后,使用强制更新的命令: git push origin master -f 如果出现“pre-receive hook declined ….”,处理方式参看上面的方案。 全程命令: 删除成功.png 最后删除成功,我们对比下删除前后的log记录。 删除后.png 参考博客: https://blog.csdn.net/QQxiaoqiang1573/article/details/68074847 https://www.cnblogs.com/cppeterpan/p/7289266.html 作者:凯天 链接:https://www.jianshu.com/p/335e5ac0a823 […]
View DetailsWindow配置多个Git账户,SSH连接GitHub、GitLab 最新版本GIt配置对应多个Git仓库(不需要添加多个用户名和邮箱): 在本地git上添加一个用户名和邮箱,生成一对公钥和私钥,把公钥加入到各个配置SSH key里面。 1.检查本机是否有ssh key设置,切换到.ssh目录 $ cd ~/.ssh 或cd .ssh 2.配置git用户名和邮箱,配置多个用户时添加 --add 参数 $ git config --global --add user.name "username" $ git config --global --add user.email "email" 3.查看用户名和邮箱 $ git config --list 4.生成github.com,gitlab.com对应的私钥公钥. $ ssh-keygen -t rsa -C "test@qq.com" 注:生成id_rsa私钥公钥时需要命不同文件名,密码可设可不设。 5.添加ssh key到对应的GitHub,GitLab上面 登录GitHub系统;点击右上角账号头像的“▼”→Settings→SSH kyes→Add SSH key。 复制id_rsa.pub的公钥内容到Key填写框内。 $ssh -T git@github.com 测试公钥配置是否成功 6.在.ssh下面建立配置文件,文件名为config的文件且不需要添加文件后缀。 config文件配置内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# 配置github.com Host https://github.com/ HostName https://github.com/ IdentityFile C:/Users/zengsm/.ssh/id_rsa PreferredAuthentications publickey User username1 # 配置git.gitlab.com Host http://gitlab.zsm.com/ HostName http://gitlab.zsm.com/ IdentityFile C:/Users/zengsm/.ssh/id_rsa_gitlab PreferredAuthentications publickey User username2 |
HostName 真实的域名地址 IdentityFile id_rsa的地址 PreferredAuthentications 配置登录时用什么权限认证--可设为publickey,password publickey,keyboard-interactive等 User 配置使用用户名 # 可以通过 ssh-add -l 来确私钥列表 $ ssh-add -l # 可以通过 ssh-add -D 来清空私钥列表 $ ssh-add -D 7.克隆代码:从刚才配置的github上克隆项目: git clone git@配置的别名:用户名/项目名.git (例:git clone git@github.com:username/projectname.git) from:https://www.cnblogs.com/zengming/p/7908171.html
View Details用git命令,想看到自己的操作记录,则可以使用log与reflog,它两个的区别如下: 1.git log 命令可以显示所有提交过的版本信息 例如 如果感觉太繁琐,可以加上参数 --pretty=oneline,只会显示版本号和提交时的备注信息 2.git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作) 例如执行 git reset --hard HEAD~1,退回到上一个版本,用git log则是看不出来被删除的commitid,用git reflog则可以看到被删除的commitid,我们就可以买后悔药,恢复到被删除的那个版本。 from:https://blog.csdn.net/u013252047/article/details/80230781
View Details稍具规模一点的公司都会搭建属于自己的git,svn,而内部git用的最多的则是gitlab,虽然官网已经提供了非常多的功能,但内网搭建更能保证项目的私有性,只有公司内部员工才可以访问,更加安全。 这里演示gitlab的搭建与简单配置 操作 安装一些依赖软件包,SSH一般系统是默认安装好的,不过也不排除一些最小安装的系统没有sshd服务。
1 2 3 |
sudo yum install -y curl policycoreutils-python openssh-server sudo systemctl enable sshd sudo systemctl start sshd |
关闭防火墙,或者开放HTTP的端口
1 2 |
//刷新防火墙的规则 iptables -F |
安装邮件服务,当gitlab想要通过邮件通知,也可以另外配置其它的邮件服务器
1 2 3 |
sudo yum install postfix sudo systemctl enable postfix sudo systemctl start postfix |
从官网获取一件安装脚本,当然自己手动安装也是可以的gitlab下载地址,使用官网脚本会简单一些。执行这一步会如果使用CentOS系统,会添加gitlab的yum源
1 2 3 4 |
//输出到文件里是为了看下下载的脚本内容 curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh > rpm.sh chmod +x rpm.sh ./rpm.sh |
安装gitlab
1 2 3 4 |
//使用yum安装gitlab yum install -y gitlab-ee //可以看下gitlab-ee包的内容,看到gitlab安装在/opt/gitlab目录下 rpm -ql gitlab-ee | less |
上面已经安装好了gitlab,不过可以稍作一些配置,配置gitlab监听的地址与端口,gitlab的配置文件在/etc/gitlab/目录下,主要配置文件为gitlab.rb我修改了下gitlab.rb文件中的nginx监听地址,
1 2 3 4 |
external_url 'http://gitlab.ai-he.me' nginx['listen_addresses'] = ['0.0.0.0', '[::]'] # 系统端口冲突,我把端口改为了82 nginx['listen_port'] = 82 |
里面的配置项非常的多,可以对照官网文档根据需要修改。gitlab配置选项 运行gitlab命名,并重启
1 2 3 4 5 6 |
//重新配置gitlab sudo gitlab-ctl reconfigure //重启gitlab gitlab-ctl restart // 查看gitlab-ctl命令的帮助信息 gitlab-ctl --help |
打开浏览器查看效果,第一次打开页面会让我们设置root用户的密码。记住自己设置的密码,再次刷新进入登录页面 以管理员身份登录,默认的用户是root,密码是刚才设置的。 搭建好环境之后,下面的则根据官方文档解释,自己摸索做一些根据自己需要的修改,二次开发也可以。 最后 公司内部一般都会搭建内部gitlab仓库,自己搭建下摸索着玩玩。 参考 gitlab下载地址 gitlab配置选项 作者:Real_man 链接:https://www.jianshu.com/p/ade38a53b1ac 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
View Details打个比方 我们有个文件夹project project里面有一堆文件夹 aaa,bbb,ccc,我们需要找到aaa文件夹的其中某个文件file.txt的修改记录 我们可以再project上开启git操作 然后 输入 git blame -L 11,12 aaa/file.txt -L 11,12 含义是该文件的第11行和12行的修改记录 from:https://www.cnblogs.com/1179929172-zh/p/12938344.html
View Detailsgit bisect是一个很有用的命令,用来查找哪一次代码提交引入了错误。 它的原理很简单,就是将代码提交的历史,按照两分法不断缩小定位。所谓"两分法",就是将代码历史一分为二,确定问题出在前半部分,还是后半部分,不断执行这个过程,直到范围缩小到某一次代码提交。 本文通过一个实例,解释如何使用这个命令。下面是一个代码库,请将它克隆到本地。
1 2 3 4 |
$ git clone <a class="token email-link" href="mailto:git@github">git@github</a><span class="token punctuation">.</span>com<span class="token punctuation">:</span>bradleyboy<span class="token operator">/</span>bisectercise<span class="token punctuation">.</span>git $ cd bisectercise |
这个库是一个网页index.html,在浏览器打开这个网页。
1 2 3 |
$ open index<span class="token punctuation">.</span>html |
网页上是一个计数器,有两个按钮。点击+号按钮,可以看到计数器没有递增,反而递减,这说明代码有问题。 现在,就要来查找,到底哪一次代码提交,引入了错误。首先,检查一下代码提交历史。
1 2 3 |
$ git log <span class="token operator">--</span>pretty<span class="token operator">=</span>oneline |
可以看到,这个库一共有101次提交。最早的第一次提交的哈希是4d83cf。 git bisect start命令启动查错,它的格式如下。
1 2 3 |
$ git bisect start <span class="token punctuation">[</span>终点<span class="token punctuation">]</span> <span class="token punctuation">[</span>起点<span class="token punctuation">]</span> |
上面代码中,"终点"是最近的提交,"起点"是更久以前的提交。它们之间的这段历史,就是差错的范围。 这个例子中,我们选择全部的代码历史。起点是第一次提交4d83cf,终点是最近一次的HEAD。当然,指定其他范围也可以。
1 2 3 |
$ git bisect start HEAD 4d83cf |
执行上面的命令以后,代码库就会切换到这段范围正当中的那一次提交,本例是第51次提交。 现在刷新浏览器,点击+按钮,发现可以正常递增。使用git bisect good命令,标识本次提交(第51次)没有问题。
1 2 3 |
$ git bisect good |
既然第51次提交没有问题,就意味着错误是在代码历史的后半段引入的。执行上面的命令,Git 就自动切换到后半段的中点(第76次提交)。 现在刷新浏览器,点击+按钮,发现不能正常递增。使用git bisect bad命令,标识本次提交(第76)有问题。
1 2 3 |
$ git bisect bad |
执行上面的命令以后,Git 就自动切换到第51次到第76次的中点(第63次提交)。 接下来,不断重复这个过程,直到成功找到出问题的那一次提交为止。这时,Git 会给出如下的提示。
1 2 3 |
b47892 is the first bad commit |
既然找到那个有问题的提交,就可以检查代码,确定具体是什么错误。 然后,使用git bisect reset命令,退出查错,回到最近一次的代码提交。
1 2 3 |
$ git bisect reset |
现在就可以开始修复错误了。 (完) from:http://www.ruanyifeng.com/blog/2018/12/git-bisect.html
View Details