Git 命令一览
一,常用操作
# 将所有修改的文件从工作区放入暂存区
git?add?./?????-->?放入暂存区
#?添加commit信息,文件从暂存区提交到本地仓库中
git?commit?-m?'xxx'??-->?提交到本地仓库
#?拉取远程主机某个分支,再与本地分支合并
git?pull??-->?远程与本地合并
#?把本地仓库的所有内容推送到远程仓库上
git?push?????-->?推送到远程仓库上
#首次添加远程分支?(分支特性-时间-?版本号)
git?push?--set-upstream?origin?fix-202312-1.0.11
#?删除远程分支;
git?push?origin?--delete?xxxxx???/????git?branch?-d?xxxx
#更新远程分支
git?remote?update?origin?-p
以commit?或者?Tag?创建新的分支
git?checkout?-b?<branch?name>?<SHA1>
git?checkout?-b?<New?Branch?Name>?<TAG?Name>
在当前分支上执行git?stash命令。将当前分支存起来,id为?84c682f;
用??git?stash?list?命令去查看我们“存储”的列表;
git?push?--force?origin?master??//?强制推送
分析:这是由于你拉取pull分支前,进行过merge合并更新分支操作,而其他人在你之前已经push过一个版本,导致版本不一致
第一种解决方法:比较简单
执行git?config?pull.rebase?false
默认将pull下来的代码与现有改动的代码进行合并
但是可能会造成代码冲突,需要处理下这个问题,代码冲突如果2个人都改了同一个文件,需要联系之前push的同学,看看这块代码怎么保存
1.1?新建代码库
#?在当前目录新建一个Git代码库?git?init
#新建一个目录,将其初始化为Git代码库?git?init?[project-name]?
#?下载一个项目和它的整个代码历史?git?clone?[url]
1.2?配置
#?设置提交代码时的用户信息
git?config?[--global]?user.name?"[name]"
?git?config?[--global]?user.email?"[email?address]"
1.3?remote管理
#?查看远程主机网址?git?remote?-v?
#?删除远程主机?git?remote?rm?origin?
#?添加远程主机?git?remote?add?origin?https:git.xxxx.git?
1.4添加和撤销操作
#?该文件内容恢复到上个commit状态?git?checkout?--?<file>????
#?所有文件恢复到上个commit状态?git?checkout?.??
#?回退到某个版本?git?reset?–-hard?f109e83a5ae23766c86e9d259d18271a3ab53c16
#回退所有内容到上一个版本??git?reset?HEAD^?
以某个commit?创建分支?
git?checkout?fbcdb83774c325b8383dd1f9a758ebbec5d9723d?-b?test_2401?//?12-02
git?checkout?6f9cc664bb78b982b63305217369fc7d3084b626?-b?test_2401
大概意思是本地库和远程库没有同步导致无法提交合并,冲突导致无法push
git?pull?origin?main?--allow-unrelated-histories?//从远端仓库拉去不相关历史
git?push?origin?main?//推送到远端main分支
1.6?tag操作
#?展示标签
git?tag
#?打标签和注释
git?tag?-a?v0.1.2?-m?"0.1.2版本"
#?给指定的commit打标签
git?tag?-a?v0.1.1?9fbc3d0
#?git?push?操作不会将tag上传到服务器,需要单独上传,将v0.1.2标签提交到git服务器
git?push?origin?v0.1.2
#?将本地所有标签一次性提交到git服务器
git?push?origin?--tags
#?删除标签
git?tag?-d?v0.1.2
#?删除远程的tag
git?push?origin?--delete?tag?<tagname>?
二?分支操作
#?列出所有本地分支和远程分支
git?branch?-a
#?创建并切换分支
git?checkout?-b?test
#?切换到远程分支
git?fetch
git?checkout?-b?test?origin/test
#?新建一个分支,指向指定commit
git?branch?[branch]?[commit]
#?新建一个分支,指向某个tag
git?checkout?-b?[branch]?[tag]
#?合并指定分支到当前分支
git?merge?[branch]
#?选择一个commit,将该commit改动下的代码合并进当前分支
git?cherry-pick?[commit]
三,其它汇总
2.1?github上初始一个项目
echo?"#?ceshi"?>>?README.md
git?init
git?add?README.md
git?commit?-m?"first?commit"
git?remote?add?origin?git@github.com:archer-wong/ceshi.git
git?push?-u?origin?master
2.2?重命名远程分支
(先删除远程分支,重命名本地分支,最后提交一个新的远程分支)
git?push?--delete?origin?devel
git?branch?-m?devel?develop
git?push?origin?develop
2.3.gitignore文件
.gitignore?配置文件用于配置不需要加入版本管理的文件
1、语法:
所有空行或者以?#?开头的行都会被?Git?忽略。
可以使用标准的?glob?模式匹配。
匹配模式可以以(/)开头防止递归。
匹配模式可以以(/)结尾指定目录。
要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
所谓的?glob?模式是指?shell?所使用的简化了的正则表达式。?
星号(*)匹配零个或多个任意字符;
[abc]匹配任何一个列在方括号中的字符(这个例子要么匹配一个?a,要么匹配一个?b,要么匹配一个?c);
问号(?)只匹配一个任意字符;
如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如?[0-9]?表示匹配所有?0?到?9?的数字)。?
使用两个星号(*)?表示匹配任意中间目录,比如a/**/z?可以匹配?a/z,?a/b/z?或?a/b/c/z等。
2、示例:
#?忽略?.a?文件
*.a
#?否定忽略?lib.a,?尽管已经在前面忽略了?.a?文件
!lib.a
#?仅在当前目录下忽略?TODO?文件,?但不包括子目录下的?subdir/TODO
/TODO
#?忽略?build/?文件夹下的所有文件
build/
#?忽略?doc/notes.txt,?不包括?doc/server/arch.txt
doc/*.txt
#?忽略所有的?.pdf?文件?在?doc/?directory?下的
doc/**/*.pdf
???3、.gitignore不生效问题
如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git?rm?-r?--cached?.
git?add?.
git?commit?-m?'update?.gitignore'
四,合并冲突解决
需要你在本地把master合到你的发布分支,解决完冲突之后,再push到远端
git?merge?master?--allow-unrelated-histories
问题复现
在master分支已经做了一些提交,这个时候想要切换到dev分支。
如果修改的文件未提交时,当切换分支的时候会提示以下错误信息
error:?Your?local?changes?to?the?following?files?would?be?
英文大意:当切换分支的时候,你当前修改的文件将会被覆盖,所以git需要你先提交你的变动或者在你切换分支之前暂存它们。
根据提示有两种解决方案
提交当前的变动(此方案会多出来一条提交记录)
git?add?.
git?commit?-m?"切换分支之前暂存变动"
使用stash命令,此操作会将你当前工作区已修改未提交的内容暂存起来。并且以上一次提交的commit?信息作为记录。
git?stash
五、Mac系统下查看和生成SSH?Key
什么是公钥
- 很多服务器都是需要认证的,ssh认证是其中的一种。在客户端生成公钥,把生成的公钥添加到服务器,你以后连接服务器就不用每次都输入用户名和密码了。
- 很多git服务器都是用ssh认证方式,你需要把你生成的公钥发送给代码仓库管理员,让他给你添加到服务器上,你就可以通过ssh自由地拉取和提交代码了。
一、打开vim(terminal.app)查看本地是否存在SSH-Key
ls?-al?~/.ssh
>>?如果vim输出的是如下内容:证明本地没有生成的SSH?Key,请执行第二步。
No?such?file?or?directory
>>?如果vim输出的是如下内容:?证明本地已经存在SSH?Key?文件,请执行第四步。
id_rsa????????id_rsa.pub
二、如果没有,生成新的SSH?Key
ssh-keygen?-t?rsa?-C"you_email"
?三、生成并添加SSH?Key
ssh-add?~/.ssh/id_rsa
四、查看SSH?Key
cat?.ssh/id_rsa.pub
六、Windows查看本机SSH公钥,生成公钥
- 查看?ssh?公钥方法:
我们要想生成SSH?key,首先就得先安装?SSH,对于?Linux?和?Mac?系统,其默认是安装?SSH?的,而对于?Windows?系统,其默认是不安装?SSH?的,不过由于我们安装了?Git?Bash,其也应该自带了?>SSH.?可以通过在?Git?Bash?中输入ssh命令,查看本机是否安装?SSH:
此结果表示我们已经安装?SSH?啦!接下来,输入ssh-keygen?-t?rsa命令,表示我们指定?RSA?算法生成密钥,然后敲三次回车键,期间不需要输入密码,之后就就会生成两个文件,分别为>id_rsa和id_rsa.pub,即密钥id_rsa和公钥id_rsa.pub.?对于这两个文件,其都为隐藏文件。
- 打开你的?git?bash?窗口
- 进入?.ssh?目录:cd?~/.ssh
- 找到?id_rsa.pub?文件:ls
- 查看公钥:cat?id_rsa.pub?或者?vim?id_rsa.pub
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!