1)git的学习及总结
cpp
可以用通配符添加多个文件,如git add *.txt;
git add . //把当前所有文件都添加到暂存区中
git reset test.txt //取消暂存
git commit -m "提交的信息" //这个信息会被提交到仓库中,作为版本管理的凭证
//git只会提交到暂存区中的文件,而不会提交工作中的其他文件!
repository [rɪˈpɒzɪt(ə)ri] 仓库
git log命令查看提交记录;
例如:输出如下信息
commit bc691e00aeb009ba8b20db6e5f4915e4b27188fc (HEAD -> master)
Author: 00025_JiangHuaiWei <jhw@autobrain.cn>
Date: Mon Sep 18 15:07:56 2023 +0800
git log --oneline //查看简洁的log信息,查看一些提交历史;
git reset的三种模式
git reset --soft 保存工作区 保存暂存区
git reset --hard 丢弃工作区 丢弃暂存区
git reset --mixed 保存工作区 丢弃暂存区(也是默认参数)
git reset --soft f05c120 //f05c120为回退的版本id;
git ls-files //查看暂存区里面的内容
git reflog //查看的操作历史记录;
git reset --hard 83582b1 //回退到之前83582b1版本
git reset --sort HEAD^ //回退到上一个版本
git diff的使用
git diff是比较的工作区和暂存区的不同
git diff HEAD 是比较工作区和版本库的不同
git diff --cached //暂存区和版本库的不同
git diff 版本id1 版本id2;
git diff HEAD~3 HEAD file3.txt //查看当前版本与第三个版本的的file3.txt内容的不同,其他文件不查看;
git diff 分支1 分支2 //比较分支之间的差异;
从版本库中删除文件
git rm 会删除工作区中的文件;
git rm 会同时将删除的文件添加到暂存区;
【因此 git rm 相当于 rm + git add 两个命令】
git rm other.log //同时删除本地和暂存区的内容
git rm --cached other.log //只删除暂存区的内容
删除完,应该再次提交,否则文件不能真正删除;
提交到版本库,完成删除动作
git commit -m "xxxxxx"
.gitignore的使用:
echo access.log > .gitignore //把access.log文件添加到.gitignore文件中
执行上面语句,则只会看到other.log,不会看到access.log文件了。
git ls-files执行后,只有other.log会添加到版本库中,accesss.log不会添加到
git status -s //输出 "modified: ../.gitignore",代表gitignore这个文件被修改过;
远程仓库的创建及秘钥添加
1)github的注册,需要用到邮箱;
ssh配置和克隆仓库
推举用ssh,不用htttps;
cd ~/.ssh //进入这个目录
当前目录:/home/jiang/.ssh
ssh-keygen -t rsa -b 4096 //生成秘钥按rsa协议生成,文件大小4096
把生成的秘钥添加到github上即可;
git常用命令6个:
git clone
git push命令是推送到远程仓库;
git add
git commit 把暂存区的内容提交到版本仓库中
git pull 拉取
git checkout
ctrl + shift + r //刷新网页的快捷键
本地文件添加远程仓库(origin是远程仓库的别名)
添加远程仓库:
步骤1: git remote add <远程仓库别名><远程仓库地址>
步骤2: git push -u <远程仓库名><分支名>
git remote add origin git@192.168.130.63:jianghuaiwei/dbc-itearator.git
git remote add origin的作用:是将远程仓库添加到本地仓库中,并为其设置一个别名;
例如:"git@192.168.130.63:jianghuaiwei/dbc-itearator.git"为远程仓库,添加到本地仓库并将其命名为"origin";
这样就可以通过使用"origin"来推送或拉取更新;
git remove -v //当前仓库对应的远程仓库的别名和地址,必须在对应的本地目录下才可以
输出:
origin git@192.168.130.63:autobrain/develop/common/edr.git (fetch)
origin git@192.168.130.63:autobrain/develop/common/edr.git (push)
git branch -M main //指定分支的名称为main
git push -u origin main //把本地仓库与远程仓库关联起来,-u 是upstream的缩写
全称应该是git push -u origin main:main //把本地仓库的main分支推送到远程仓库的main分支;注意:git版本低的是master
如果远程仓库的main分支和本地的main分支是一个名字的话,就写一次就可以了;
git pull <远程仓库名><远程分支名>:<本地分支名>
如: git pull origin main //远程仓库名称和远程分支名称可以省略,代表的是 origin 和 main 注意:git版本低的是master
执行完git pull命令后,git会为我们执行一次合并操作;
用fetch来获取远程仓库的修改内容;
git图形化工具
GitKraken -- 超好用的 Git 可视化工具
visual studio code 【source control】有"U" 未跟踪,M修改,A添加到暂存等;
分支的学习
git branch 查看分支列表
git branch branch_name 创建分支
git switch branch_name 切换分支 有的版本不支持,只能是git checkout branch_name切换分支
git merge branch_name 合并分支:合并后的分支还是存在的
git branch -d branch_name 删除分支,【已合并的】
git branch -D branch_name 删除分支,【未合并的】
解决分支的冲突
git commit -am "feat:1" //就一个命令完成添加暂存和提交的两个动作;
分支和master内容冲突的话,会出现下面错误:
jiang@jiang-X280:~/brahch_demo$ git checkout master
error: Your local changes to the following files would be overwritten by checkout:
main1.txt
Please commit your changes or stash them before you switch branches.
Aborting
需要手动修改错误,并提交;
总结:
两个分支未修改同一个文件的同一位置:git自动合并
两个分支修改了同一文件的同一处位置:产生冲突
解决办法:
1)手工修改文件
2) 添加暂存区 git add file
3) 提交修改
终止合并:
git merge --abort;
回退和rebase(变基)
Project slug: 仓库url名称,只能英文
Visibility Level: 仓库可见性,Privite就是私有仓库,Public就是公有仓库
https://blog.csdn.net/m0_66681776/article/details/129670579
fatal: detected dubious ownership in repository at '/home/jiang/ab_demo'
To add an exception for this directory, call:
解决办法:手动禁用安全目录 git config --global --add safe.directory '*'
git remote rm origin //删除远程仓库
推送远程仓库三部曲:
git add .
git commit -m "add context"
git push(全程是: git push origin master)
git push出现下面的错误的解决办法:
fatal: The current branch dev has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin dev
首先git push命令,是默认将当前分支Push到远程的对应的分支,如果远程不存在对应分支,则会报错。比如这里,本地是dev分支,远程没有dev分支,使用这条命令默认就是对应远程dev分支,所以就会报错;
解决办法:git push --set-upstream origin dev
本地分支与远程仓库分支关系对应
git branch dev2
git checkout dev2
echo dev2 > dev2.txt //创建一个测试文件
git add dev2.txt
git commit -m "branch dev2 test"
git push --set-upstream origin dev2 //因为远程仓库没有dev2分支,需要创建一个,正确的话,输出下面结果:
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: To create a merge request for dev2, visit:
remote: http://192.168.130.63/jianghuaiwei/data-closed-loop/-/merge_requests/new?merge_request%5Bsource_branch%5D=dev2
remote:
To 192.168.130.63:jianghuaiwei/data-closed-loop.git
* [new branch] dev2 -> dev2
Branch 'dev2' set up to track remote branch 'dev2' from 'origin'.
git push(全程 git push origin dev2)因为在dev2的分支上,所以也可以简写为 git push
security compliance 安全合法性;
revision 美 [rɪˈvɪʒn] 修订
stale 美 [steɪl] 陈腐的,没有创意的;
metrics /ˈmɛtrɪks/ 度量
alert 美 [əˈlɜːrt] 警报; 警戒;
incident 美 [ˈɪnsɪdənt] 严重事件
unrecognized argument 无法识别的参数
decorate 美 [ˈdekəreɪt] 装饰
./gitkraken //解压这个文件,运行这个软件就行了。
hotfix 网络用语 修补程序
git log --oneline --graph --decorate --all
alias graph="git log --oneline --graph --decorate --all" //取别名,等号两边没有空格
分支管理和工作模型
- git的常用命令
cpp
1 git init 新建代码库
2 git clone 克隆项目
3.1 git branch 列出本地已经存在的分支,并且当前分支会用*标记
3.2 git branch -r 查看远程版本库的分支列表
3.3 git branch -a 查看所有分支列表(包括本地和远程,remotes/开头的表示远程分支)
3.4 git branch -v 查看一个分支的最后一次提交
3.5 git branch --merged 查看哪些分支已经合并到当前分支
3.6 git branch --no-merged 查看所有未合并工作的分支
3.7 git checkout -b 新分支 创建分支的同时,切换到该分支上
4.1 git tag [name] 创建tag
4.2 git tag 查看已创建的tag
4.3 git show tagName 查看tag对应的commit id
5 git reset --hard commit-id 回退代码 (到这里就和reset方法一样了)
6 git submodule add [url] [path] 添加子模块
7.1 git pull 更新本地代码
7.2 git fetch 拉取仓库里有 本地电脑没有的代码
7.3 pull 根据不同的配置,可等于 fetch + merge 或 fetch + rebase
8 git add 将当前更改加入到索引
9 git commit 提交当前工作空间的修改内容
10 git commit 将commit的代码提交的远程仓库
11.1 git reset --hard HEAD^ 回退到上个版本
11.2 git reset --hard 本地库、暂存区动、工作区都动
11.3 git reset --mixed 本地库、暂存区动,工作区不动
11.4 git reset --soft 本地库动,暂存区、工作区不动
11.5 git reset --hard HEAD~3 回退到前3次提交之前
12.1 git push origin HEAD --force 推送到远程仓库
12.2 git push --set-upstream origin dev 本地创建了一个名为dev的分支,远程仓库没有这个分支,push
13 git merge 合并代码
14 git merge --abort、 取消合并过程
git reset --merge 取消合并过程
15.1 git stash 将当前分支修改暂存
15.2 git stash list 查看暂存信息
15.3 git stash apply 恢复最近一次修改
15.4 git stash apply stash@{2} 恢复索引
16.1 git config --local remote.origin.url 查看代码仓库地址
16.2 git config --local remote.origin.url http://www.abc.com/abc.git 修改代码仓库地址
17.1 git branch -d 分支名称 删除本地分支,不能删除当前所在的分支,如果要删除,必须先切换到其他分支上
17.2 git branch -D 分支名称 强制删除分支
17.3 git push origin :分支名称 删除远程分支,分支名称前有个冒号,分支名前的冒号代表删除
18 git status 文件、文件夹在工作区、暂存区的状态
19 git log 查看提交历史