赞
踩
VI 编辑器
局域网:gitLab
外网:gitHub、gitee
查看资源 git ll 查看隐藏资源
git ll .git ./git中的文件不可修改删除
git config --list (需要注意不在仓库里执行,则结果展示global和system的配置,在仓库里才会显示全部级别的)
git branch 或者 git branch -v --查看分支
git branch xx --创建分支
git checkout branchName --切换分支
删除分支 git branch -d
合并分支前,必须切换到主分支(master)
git checkout master
git merge 要合并的分支名字
==== 当存在冲突conflict的情况,需要手动合并
git Diff —查看冲突
,通过VI编辑器合并冲突
vi 冲突的文件 (/xx/aa/文件)
wq 保存退出vi编辑器
git add xxx
git commit -m “ ”
git checkout -b - 创建、切换分支
相当于 下面两句指令
git branch 分支名
git checkout 分支名
本地创建 ssh key: ssh keygen -t rsa -c “email” // email:github上注册用的邮箱
把上面生成的 key 粘贴到 gitHUb中的 sshkey中
验证 是否成功 ssh -T git@github.com
如果是第一次的会 提示 是否continue ,输入 yes 就会看到
You’ve successfully authenticated ,but github does not provide shell access
表示已成功连接上GitHub,
git 选项解释,
-d
–delete 删除
-D
–delete --force的快捷键
-f
–force 强制
-m
–move :移动或重命名
-r
–remote 远程
-a
– all 所有
git init :当前目录作为git 仓库
git init path: 指定目录作为git仓库,建议【path】:使用绝对路径,否则在安装git软件的路径下的相对路径。
##git add
目的将修改文件由工作区提交到暂存区(stage) 从未缓存——>已缓存
git add 添加多个文件,文件之间用空格隔开
git add file1 file2 file3
###多次git add
git add file1
git add file2
git add file3
###添加指定目录下的文件
git source/* source目录下及子目录下所有文件
git home/*.py home 目录下所有 .py 文件
git add . 添加所有文件
git add --all 添加所有文件
git add 文件夹
git add 文件夹名
git clone 克隆仓库
git clone 克隆到指定的目录。
当执行git clone 之后, 会默认配置一个 origin 代表 远程地址
所以下次 git pull origin master
git clone 远程地址 Test
git add [file1][file2]… 添加一个或多文件到stage
git add [dir] 添加和指定目录到暂存区,包括子目录
git add • 添加当前目前下所有文件到stage
git status 显示上次提交更新后的更改或写入stage的改动,查看仓库当前的状态,显示有变更的文件
git status -s 获取简短的输出结果
git status -s
AM xxxx //AM :表示这个文件在我们添加到缓存之后又有改动
A xxx
比较文件在暂存区(stage)和工作区的差异
1、显示暂存区和工作区的差异
git diff [File]
2、显示暂存区和上一次提交(commit)的差异
git diff --cached 【File】
或
git diff --stage 【file】
3、显示两次提交之间的差异
git diff 【first-branch】…[second -branch]
将暂存区内容添加到本地仓库中【local repository】
①提交stage 内容到本地仓库中
git commit -m [message]
②提交stage指定文件内容到本地仓库
git commit 【file1】【file2】…-m 【message】
③ -a 修改文件后 不需要执行git add 直接提交
git commit -a
①git revert -h 版本号 //可能出现conflict 需要手动修改冲突文件,而且要使git add 文件名
② git commit -m “message” // 可以理解把上一个版本提交,再次提交。
此时可用git log 查看本地版本库信息,可见多生成一个新的版本
③ git push origin master // 推上远程库
④ git reset 的作用是修改HEAD 的位置,即将head指向的位置改变未之前存在的某个版本
git reset --hard HEAD ~N ## 回退N个版本之前的版本(回退之后,无法在恢复了【用head -N 无法恢复了,但指定版本可以的】)
git reset --hard 7位版本号 ## 回退指定版本 【版本穿越】
HEAD:相当于指针,指向当前分支的,它总是指向当前分支上的最后一次提交
git reset 操作过程
① git log 查看提供记录的版本号
②git reset -hard 版本号 // 回退到指定版本
③git push -f origin master // 此时如果用“git push” 会报错,因为我们本地库的head,指向的版本库比远程库的要旧。所以要强制 -f force
reflog翻译:Reference logs(参考日志)
git reflog命令:可以叫做显示可引用的历史版本记录。
git mv 用于移动或重命名一个文件、目录、软连接
git mv 【file】【new file】
1、git log 查看历史提交记录
2、git blame 【file】 以列表形式查看指定文件的历史修改记录
git log --online 查看历史记录简洁的版本
git log --graph 查看历史中什么时候出现了分支、合并
git log --reverse 逆向显示所有日志
git log --author xxx 查看指定用户提交日志。
指定日期, --since --before --under --after
git log --online --before={3.weeks.ago} --after={2021-04-13}
1、git remote -v 显示所有远程仓库
git remote -v
origin xxxxx //为远程地址的别名
origin xxxx
2、显示某个远程仓库的信息
git remote show 【remote】 //remote :远程地址
3、添加到远程版本号
git remote add 【shortname 远程仓库在本地的别名】[url]
#添加一个远程仓库配置
git remote add origin https://gitee.com/holyking/test-1.git
git remote rm name //删除远程仓库 本地删除远程的管理
git remote rename old_name new_name //修改仓库名
将某个远程主机的更新全部取回到本地
git fetch <远程主机>
取回特定的分支
git fetch <远程主机> <分支名>
取出origin 主机的master 分支
git fecth origin master
取回更新后,会返回一个FETCH_HEAD 指某个branch 在服务器上最新状态,我们可以在本地通过它查看刚取出更新信息
git log -p FETCH-HEAD
git fetch origin remote_branch_name : local_branch_name
git push origin : remote_branch_name 如果省略本地分支名,则表示 删除指定的远程分支,因为等于推送一个空的 本地分支到远程分支。
等同于 git push origin --delete master
git pull <远程主机名><远程分支名>:<本地分支名>
将远程主机origin的master 分支拉取过来,与本地的branchtest分支合并
git pull origin master :branchtest
如果远程分支与当前分支合并,则冒号后面的部分可以省略
git pull origin master
将本地的分支版本上传到远程并合并
git push <远程主机名 别名><本地分支名>:<远程分支名>
如果远程与本地分支名相同,可以省略冒号
git push <远程主机名 别名><本地分支名>
如果本地版本号与远程版本号有差异,但又要强制推送可以用 --force 参数
git push --force origin master
git push origin --delete master //删除origin主机的master分支 origin:表示远程地址
git push origin 当前分支推送到origin主机的对应分支,如果当前分支只有一个追踪分支,那么主机名(origin)可以省略
git push 如果当前分支与多个主机存在追踪关系,那么这个时候 -U 选项会指定一个默认主机。
git push -U origin master 将本地的master分支推送到origin主机的master 分支,同时指定origin为默认主机
后面就可以不加任何参数,使用git push,不带任何参数的git push ,默认只推送当前分支, 这叫做simple 模式
解决本地与远程的冲突方式
1、git push -f origin master
或
git push origin master -f
本地强制上传到远程,把远程覆盖
2、git pull --rebase origin master
拉取远程的文件把本地的覆盖,再上传。
如果远程分支与当前分支合并,则冒号后面的部分可以省略
git pull origin master
git push 上传远程代码并合并
将本地的分支版本上传到远程并合并
git push <远程主机名> <本地分支名>:<远程分支名>
如果远程与本地分支名相同,可以省略冒号
git push <远程主机名><本地分支名>
如果本地版本与远程版本有差异,但又要强制推送可以 使用–force参数
git push --force origin master
git push origin --delete master //删除origin 主机的master分支
git tag -a V1.0
git tag 显示查看所有标签
如果忘记给每个提交打标签,又将它发布了,可以追加 标签
假如 发布提交了85fc7e7,但忘记给它打标签了
git tag -a V0.9 85fc7e7
指定标签信息命令:git tag -a -m “xxxxx”
保存当前工作区和暂存区的修改,工作区中的修改会隐藏stage会恢复到变动之前。
git stash 将工作区文件改动保存到stash。
git stash -a 将工作区新添加的文件以及修改的文件保存到stash。
git stash show -P 或 -patch 可以查看特定stash的全部diff
git stash list:显示保存列表
git stash show stash@{X} 查看 X:列表号
git stash apply 恢复最近保存的记录但不会删除、保存列表里对应的记录。但不会删除、保存列表里对应的记录(默认会将被恢复的操作 保留在工作区,但是不会自动帮你重新暂存)
git stash apply stash@{X} X:列表号
应用任意一次修改到当前目录
git stash drop stash@【1】 来丢掉 stash{1}
保存时打上标记,git stash save “标记文本”
git stash 会把所有来提交的修改(包括暂存区和非暂存区)的都保存起来,用于后续恢复当前工作目录。
git stash 保存起来,当前目录不会显示保存起来的内容
git stash
将修改后的代码存储到本地(一个线结结构)一般会在git pull 拉取代码失败时使用。
git stash pop 将stash到本地的代码与重新git pull下的代码合并
git reset 清屏把git Bash 命令窗口的所有内容清空。
git stash pop可取出最近一次储藏的修改到工作区中,并同时将该储藏从储藏记录列表中删除
git stash 是本地的,不会通过git push 命令上传到git server上
实际应用中推荐给每个stash 加一个 message,用来记录版本使用
git stash save “message” 取代git stash。
git stash 其将当前未提交的修改(即,工作区的修改和暂存区的修改)先暂时储藏起来,这样工作区干净了后,就可以切换切换到master分支下拉一个fix分支。在完成线上bug的修复工作后,重新切换到dev分支下通过git stash pop命令将之前储藏的修改取出来,继续进行新功能的开发工作
git checkout 文件 // 如果工作区 文件修改了,没有add ,或commit, checkout 可以把暂存区的文件覆盖工作区的文件。相当于工作区的文件还原本次修改之前的状态。
当你想切换分支时,但工作区已经修改过了,如果你想切换分支,git是不准许的,会报错的,这时候git stash 命令就出现了。
这个git stash 可以 保存 【工作区的修改】,然后就可以切换分支了,git就不会报错了。
此命令对于【已经被跟踪】的文件才会有效。
工作目录下的每一个文件都只有两种状态:已跟踪 或 未跟踪。
【已跟踪】的文件是指那些被纳入了版本控制的文件,它们的状态可能是未修改,已修改或已放入暂存区。
初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态,因为 Git 刚刚检出了它们,而你尚未编辑过它们
git stash 保存当前工作区和暂存区的修改
git stash save “message” ,如果保存的内容过多可能会导致无法辨别需要恢复的保存记录,这时候就加上save 参数后面双引号后面填写此次保存的描述信息。
git stash list 显示保存列表
git stash pop:恢复最近保存的记录并把恢复恢复的记录从保存列表中删除。只恢复工作区(默认会将被恢复的操作保留在工作区,但是不会自动帮你重新暂存)
git stash pop -index:与上面命令的效果一样,但是还会恢复暂存区
git stash pop stash@{序号}:恢复保存列表【git stash list】里面指定的保存记录,并把恢复的记录从保存列表中删除。
git stash --patch :保存之前先比较工作区和HEAD之前的区别,然后选择是否重新编辑需要保存的文档。
git stash apply :恢复最近保存的记录但不会删除保存列表里面对应的记录(默认会将被恢复的操作保留在工作区,但是不会自动帮你重新暂存)
git stash drop:删除保存列表里面最近保存的记录。后面加上 stash@{序号} 可以删除指定的保存记录
git stash clear 删除保存列表里面所有的保存记录。
git stash 分支 stash@{序号}:修改了demo里面的内容后使用git stash 保存德莫文件里面的修改,如果此时修改了demo文件然后再使用git stash pop 或者git stash apply 恢复之前修改demo里面的内容,那么此时可能会引发冲突。此时就可以使用此命令。这个命令会创建一个分支然后再创建的分支上把保存的记录恢复出来。如果成功了,将会丢弃存储(把对应保存记录删除。)
1、目的不同
git fetch:从远程获取最新版本到本地,但不会自动 merge,用于从远程跟踪分支下载和查看其他人完成的最新提交,但不将这些提交合并到本地存储库中。它从远程存储库中获取更改并将其存储在本地存储库中。
git pull:从远程获取最新版本并 merge 到本地,它会自动将提交合并到您的本地存储库中,而无需查看提交。
2、用途不同
git fetch:Fetch 只是通过将提交从远程存储库传输到本地存储库来使远程存储库的本地副本保持最新。将提交导入到本地分支将允许您跟上其他人所做的更改。
git pull:Pull 将更改引入本地代码存储库,以使用远程存储库更新本地存储库。
3、用法不同
git fetch:当您想要查看其他人正在处理的内容时,Fetch 命令非常有用,这使您可以在将更改与本地存储库集成之前轻松查看其他开发人员推送的提交。您可以通过使用命令“git fetch ”来做到这一点,该命令从远程存储库中获取所有分支。
git pull:您可以使用命令“git pull ”来执行拉取,该命令检索分支的远程副本并将其与本地副本合并。这与使用命令“git fetch ”后跟“git merge ”完全相同。
4、远端跟踪分支不同
git fetch:Git fetch能够直接更改远端跟踪分支。
git pull:git pull无法直接对远程跟踪分支操作,我们必须先切回本地分支然后创建一个新的commit提交。
5、拉取不同
git fetch:Git fetch会将数据拉取到本地仓库 – 它并不会自动合并或修改当前的工作。
git pull:git pull是从远程获取最新版本并merge到本地,会自动合并或修改当前的工作。
6、commitID不同
git fetch:使用Git fetch更新代码,本地的库中master的commitID不变,还是等于1。
git pull:使用git pull更新代码,本地的库中master的commitID发生改变,变成了2。
7、安全性不同
git fetch:git fetch是一个更安全的选择,因为它从你的远程仓库拉入所有的提交,但不会对你的本地文件做任何修改。这给了你足够时间去发现远程仓库自从你上次拉取后到现在为止发生的变化。你可以在合并前检查哪些文件有变化,哪些文件可能导致冲突。
git pull:git pull相当于运行git fetch,然后立即将你的改动合并到本地仓库。这样的确少了一个步骤,但是也会带来一些风险。
clone 是本地没有 repository 时,将远程 repository 整个下载过来。
pull 是本地有 repository 时,将远程 repository 里新的 commit 数据(如有的话)下载过来,并且与本地代码merge。
从远程服务器克隆一个一模一样的版本库到本地,复制的是整个版本库,叫做clone.(clone是将一个库复制到你的本地,是一个本地从无到有的过程)
从远程服务器获取到一个branch分支的更新到本地,并更新本地库,叫做pull.(pull是指同步一个在你本地有版本的库内容更新的部分到你的本地库)
git pull相当于是从远程获取最新版本并merge(合并)到本地 git pull = git fetch + git merge,git fetch更安全一些
git clone是远程操作的第一步,通常是从远程主机克隆一个版本库,eg: git clone ## 该命令会在本地主机生成一个目录,与远程主机的版本库同名,如果要是制定不同的目录名,可以将目录名作为git clone 命令的第二个参数。eg:
git clone #版本库网址# #本地目录名# git clone支持多种协议,除了http(s),还有ssh,git,本地协议。
git pull 作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。
git fetch:当您想要查看其他人正在处理的内容时,Fetch 命令非常有用,这使您可以在将更改与本地存储库集成之前轻松查看其他开发人员推送的提交。您可以通过使用命令“git fetch ”来做到这一点,该命令从远程存储库中获取所有分支。上图
git fetch:从远程获取最新版本到本地,但不会自动 merge,用于从远程跟踪分支下载和查看其他人完成的最新提交,但不将这些提交合并到本地存储库中。它从远程存储库中获取更改并将其存储在本地存储库中。上图
要特别注意的一点是 fetch 抓取到新的远程跟踪分支时,本地的工作区(workspace)不会自动生成一份可编辑的副本,抓取结果是直接送到版本库(Repository)中。如下图:
打个比方,在远程库 origin 新建了一个分支 dev,git fetch 后本地不会生成一个新的分支 dev(可用 git branch 查看),只有一个不可以修改的 origin/dev 指针。
给修改者授权
第一,github针对企业要收费,那当然是不同意,毕竟都想节约资金,那就还能使用gitee,或者gitlab了。
第二,但是Gitee码云虽然是免费的,而且不用自己搭环境,但是企业中把项目放在别人的服务器上,始终没有安全感。
第三,因此,衍生出了gitlab,就是用于企业搭私服,而且还是在自己的服务器上。
tag的定义 简单的理解,tag 就是 对某次 commit 的一个标识,相当于起了一个别名。
有两种类型的标签 : 轻量标签(lightweight)、附注标签(annotated)
【轻量标签 】: 只是某个commit 的引用,可以理解为是一个commit的别名;
【附注标签】 :是存储在git仓库中的一个完整对象,包含打标签者的名字、电子邮件地址、日期时间 以及其他的标签信息。
它是可以被校验的,可以使用 GNU Privacy Guard (GPG) 签名并验证。
查看标签
git tag 直接列出所有的标签
git tag -l [标签名称筛选字符串*] 或者 git tag --list [标签名称筛选字符串*] 别忘记通配符 *
git tag -l xxx 可以根据xxx 进行标签的筛选
git show 标签名 查看标签的信息,(轻量标签 和 附注标签 的信息是不一样的)
git log --online --graph 在提交历史中查看标签
git tag 标签名 或 git tag 标签名 提交版本 创建轻量标签
git tag 标签名 : 直接给当前的提交版本创建一个【轻量标签】
git tag 标签名 提交版本号 :给指定的提交版本创建一个 【轻量标签】
创建附注标签
git tag -a 标签名称 -m 附注信息
或
git tag -a 标签名称 提交版本号 -m 附注信息
删除标签
git tag -d 标签名称 删除指定名称的标签
推送到远程仓库
默认情况下, git push 命令并不把标签推送到远程仓库,因此,需要手动将本地标签推送到远程仓库中
git push origin 标签名称 将指定的标签上传到远程仓库
or
git push origin --tags 将所有不在远程仓库中的标签上传到远程仓库
删除远程仓库的标签
$ git push origin :regs/tags/标签名称
or
$ git push origin --delete 标签名称
检出标签
检出标签的理解 : 我想在这个标签的基础上进行其他的开发或操作。
检出标签的操作实质 : 就是以标签指定的版本为基础版本,新建一个分支,继续其他的操作。
因此 ,就是 新建分支的操作了。
git checkout -b 分支名称 标签名称
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。