git 补充笔记
Git小白时候的补充:
远程仓库里面多生成了一个分支,删除。创建子分支的时候名字一定记得一致
git push origin --delete xiaobai1
删除本地分支的时候,一定记得先切换到其他分支,才能删,因为删除不了自己当时所在的分支
git branch -D <分支名字>
remove可以缩写为rm ,删除远程仓库地址 (代码想同时托管到gitee,github俩个平台)
git remote remove 等同于 git remote rm
1.到公司第一次连接git操作
/*
*1.git clone + 地址
*2.git checkout -b 分支名 //创建本地分支并切换到该分支
*3.git pull origin 分支名 --allow-unrelated-histories 拉取下拉的时候可以同步远程
*4.为了确保同步成功没有,可以执行以下操作,谨慎处理
*1.git add . 2.git commit -m 'v-1' 3.git push
第一次git push时会有提示让设置连接远程,按提示操作,之后就不用再设了,只需git push 即可
git push --set upstream 远程连接别名
5. 实际工作master 一般不动,每次做项目为了方便做统一都用这一次的代码,创建和远程一样的仓库,是为了拉取和同步远程的代码,在创一个分支,是为了测试自己写的本地的内容,共三个分支,
分支规划:
master分支不动,
dev分支,是公司做功能的分支,只用来合并xiaobai自己每天写的分支内容,和负责提交上传远程,
xiaobai分支,是每天写的测试的代码,可以正常跑整个项目,
*/
2.下班前
/*
*下班前提交代码:
1.切换到要提交的分支(连接好远程的分支)
2.git pull(拉取下来)
3.git merge 分支名 // 自己要合并的分支
4.解决冲突后才能提交 ********************
5.git add .
6.git commit -m 'first'
7.git push
8.在dev项目分支上,拉取合并上传内容,git pull,在本地运行一下,可以知道有没有问题
*/
3.上班前
/* 上班前:
1.如果功能没做完,且分支就只有自己一个人的时候,可以接着前一天内容直接写。
上传时间:可以整个功能都做好之后,一起上传合并。
如果多个功能多人可能更改每天,早上来的第一件事,就是git pull,运行看有没有问题,没有问题可以切到xiaobai分支,在xiaobai 分支上git merge dev ,这一步可以实现,xiaobai分支和dev分支是同步的,如果不想要那么多分支,可以只建一个分支即可,每天git pull,提交。
2.git checkout xiaobai 切换到每天写代码的分支
3.在xiaobai分支里面 合并代码 git merge dev这样的话,线上的代码和xiaobai 分支里面的代码每天是一致的,
4.在xiaobai 分支里面继续写功能 ,如果没有冲突,则会个分支里写的内容会同步到,本地的dev分支里面去
5.下班前,在小白分支里面,先git add . git commit -m '注释',及时把自己写的代码先提交到暂存区
6.切换到dev 分支,git pull拉取线上的代码
7.git merge xiaobai,解决冲突
*/
最好不要自己轻易合并文件,要问下项目老大,合并要不要自己来合,在操作
一、工作流程
1.连接远程仓库
说明:
git pull origin 分支名 --allow-unrelated-histories 拉取下拉的时候可以同步远程
git push --set upstream 远程连接别名 写过一次用git push就可以了,gitpush
1. 创建远程库
2. 远程库与本地库关联
https
ssh
git remote add <远程连接别名,一般默认使用origin> <远程仓库的https地址或ssh地址>
3. 查看本地库与远程库的关联信息
git remote -v
4. 克隆远程库
李四加入到张三的公司,李四需要将Apple项目克隆到本地
张三给李四一个远程仓库的地址
李四使用 git clone <远程仓库的地址> 克隆项目到本地
5. 推送 push
李四已经克隆了代码,张三让李四做一个登陆的功能。
不要直接在master上写代码,询问张三(老大)我基于那个分支做开发。
一个功能一天做不完,也需要每天下班之前提交推送一下。(有些公司老大要看看工作饱和度)
推送时权限错误:
需要加入到项目
6. 抓取 fetch
git fetch <远程仓库连接别名> <远程仓库的分支名>
7. 合并 merge
处理问题之后,做merge
8. 拉取 pull
pull = fetch + merge
2.1 ssh免登录
1 需要先查看本地电脑是否有 ssh 相关的东西 (用户目录下是否有 .ssh 的文件夹)。有就先删除吧。
2 创建 ssh key
ssh-****** -t rsa -C "邮箱地址"
3 接着在 用户目录下找到 .ssh 文件夹中的 id_rsa.pub 这个文件,或者可以用命令去找到这个文件
用户的SSH**存储在其
~/.ssh
目录下$ cd ~/.ssh $ ls id_dsa id_dsa.pub
4 复制 id_rsa.pub 中的内容
5 去远程托管平台上添加 ssh
1 这时克隆项目时就可以直接选择使用 ssh 的方式
2 先将本地的https的连接方式给删除,换成 ssh 的连接方式
3.1 跨团队协作开发
一、对某个开源代码感兴趣
1 将这个开源的项目 fork 一份到我的远程仓库
2 clone 我 fork 的这个项目到本地
3 写好代码推送到自己的远程
4 创建 pull request
二、分支管理
1.分支命令
1.1 查看分支
git branch 查看本地仓库的分支情况
git branch -r 查看远程仓库的分支情况
git branch -a 查看本地与远程的所有分支情况
1.2 创建分支 ***
git branch <分支名字> 只是创建分支
git checkout -b <分支名字> 创建分支,并切换到新创建的这个分支上***********
1.3切换分支***
git checkout <分支名字>
注意:本地如果不存在这个分支,则会把远程的给弄下来,如果远程也没有,就报错。 注意和带-b是不同的
1.4合并分支****
先切换被合并的分支上。
使用 git merge <需要合并的分支>
1.5 合并时解决冲突
原因:两个分支在同一个代码上的某一个位置做了修改,这些 git 合并时不知道该听那个分支的。
1 找到有冲突的文件
2 删除这个文件中的特殊标记
3 找到相应的开发人员去商量到底如何处理这个情况,用你的,还是用我的,或者两个都保留
4 git add
5 git commit
1.6 删除分支
git branch -d <分支名字> 以及合并过的分支可以这样去删除
git branch -D <分支名字> 没有合并过的分支,但是里面有代码修改,使用 -d 删除,是删除不了的。确定要删除,就是用 -D
三、git基本操作命令和配置
3.0、 工作区、暂存区、版本库
工作区:写代码 --> git add --> 暂存区 --> git commit --> 版本库
3.1、用户信息配置
配置作用:区分不同开发人员的身份
配置方式:
- 项目级别/仓库级别
git config user.name "你的名字" git config user.email "你的邮箱" # 配置信息在当前项目的 .git/config 文件中
- 系统用户级别
git config --global user.name "你的名字" git config --global user.email "你的邮箱" # 配置信息存放在 系统的用户目录下 C:\Users\<当前系统的用户名>\.gitconfig 文件
优先级:项目级别 > 系统级别
如果想重新配置: 把.git/config 文件或者 C盘里面的.gitconfig文件删除即可
3.2、git命令
2.1.日志
git log 列出所有日志,如果一屏展示不下,可以使用键盘操作翻页。这时使用 Ctrl + C 退出不了。可以使用 q 来退出
git log --oneline / git --pretty
git reflog 列出最近git的所有相关操作日志。版本前进时可以参考
git log - 列出最近的 num 条提交日志
2.2. 撤销修改 **
工作区的修改:
(说明:还没有git add,但是文件想撤销修改,命令中文件名前有–,中间有空格**)
git checkout –
暂存区的修改:
(即已经git add过,需要撤销,这时需执行下面俩个命令才行,命令中文件名前没有–,要看清)
1 git reset HEAD 空格 撤销暂存区的修改
2 git checkout – 撤销工作区的修改
工作区的新增: 直接删除新增的文件即可
说明:对工作区中文件的修改分为三种情况:
(1)还没有git add
(2)已经git add
(3)已经git add,并再次进行修改
对于第一种情况,直接使用git checkout – 文件,即可撤销修改,撤销修改就回到和版本库一模一样的样子。
第二种情况,先使用(git reset HEAD – 文件),然后在使用(git checkout – )文件进行修改撤销。
第三种情况 先使用git checkout – 文件,文件就会变成添加到暂存区后的状态,也就转换成了“第二种情况”,然后,在使用情况(2)中的处理方法,即可将文件恢复到与版本库一致的状态。
2.3.版本回退和前进***
版本回退的本质:
就是一个 HEAD 指针的操作
基于Commit Id操作 (推荐)
git reset --hard
使用 ^ 符号操作
git reset --hard HEAD^ 回退到当前版本的上一个版本
只能回退
使用 ~ 符号操作
git reset --hard HEAD~ 回退到当前版本的上 num 个版本
只能回退
2.4. 删除文件并找回
找回文件有个前提条件:要找回的文件以及被git管理起来了。 使用版本回退相关的处理
2.5.git其他命令
git init 生成.git文件夹
git add / git add . 表示把某个文件,点代表所有文件,提交到暂存区
git status 查看状态
cat 文件名 可以查看文件内容
touch 文件名 表示创建文件夹
vim 文件名 进入编辑器,i 输入后,可以写内容,写完之后需要按esc+:wq 保存并退出
git commit -m ‘提交的信息说明’ 回车之后直接提交了,不会进入 vim 中
git commit 回车之后会进入到 vim 编辑器中,需要输入这次提交的日志
ls 查看当前目录下所有内容 ll / ls-a 查看的内容不同