git笔记

git

常用命令

命令名称作用
git config -global user.name 用户名设置用户签名
git config -global user.email 邮箱设置用户签名
git init初始化本地库
git status查看本地库状态
git add 文件名添加到暂存区
git commit -m “日志信息” 文件名提交到本地库
git push origin提交到远程库
git reflog查看历史记录
git reset --soft/hard 版本号版本穿梭

前两个命令只使用一次,签名的作用是区别不同操作者身份,若不设置用户名和邮箱会报错,但邮箱可填虚拟邮箱(不会验证),若要查看name和email在C盘下用户找到.gitconfig文件。(跟在github等平台上登录账号无关,只是windows客户端使用)

[user]
	name = tracy
	email = 407911147@qq.com
初始化本地库

git init 目录下会出现隐藏的文件夹(查看中设置是否可见)

命令行查看用ll -a可以查看目录下的包含隐含文件的文件

git fork

把代码添加到自己的空间,这样再执行clone后,提交代码都是提交在了自己空间中。

查看本地库状态 git status

linux下,光标停留在一句话的前面,yy是赋值,p是粘贴

cat+文件名 查看文件内容

  1. 查看到当前所在的分支
  2. 是否提交了
  3. 有无文件可提交,若是新增的文件,会显示未追踪,即只存在于本地工作区而未被git追踪;若只存在于暂存区还未被提交,显示这些改动可以被提交;文件被修改了也会提示有文件变化
添加暂存区git add

即上面说的,使文件被git追踪的过程。

可以选择某个范围进行添加,在源文件修改处查看文件(打开工作树),右键就可以选中范围进行暂存

暂存区的文件可以被删除(该删除不会删除本地工作区的文件)

git rm --cached+文件名
提交本地库git commit

提交并备注
日志信息主要写备注,如进行了哪些修改等

git commit -m “ ”

跳过暂存区add步骤,直接提交

git commit -a

针对代码提交错误或者message写的有问题,需要修改
注意:该操作会覆盖之前的提交记录

git commit --amend

场景:在没有push代码的情况下,直接执行amend,就像可以修改掉记录
已经push了代码但是发现commit有错误
追加:git commit --amend,把上两次的修改为一次提交
推代码时用git push origin -f
如果是代码提交错误,那就要将远程仓库的版本回退了
git reset --soft 版本号(版本号是老的版本号)

历史版本

git reflog 查看版本信息 (得到结果每一行最前面的就是版本号)
git log 查看版本详细信息,查看commit提交信息

版本穿梭 git reset

要用到上个查看历史版本的版本号,指针指向会变化

可以查看.git/refs/heads/分支名 文件,会发现该文件的内容发生变化,内容就是版本号。
底层就是移动指针head->master->某个版本

git reset --soft 版本号 只会将远程的版本回退。本地文件不动。(建议使用这条)如果只是回退上一个版本,指令可以这样写。git reset --soft HEAD^
git reset --hard 版本号(git log查看的上一次的commit)这会删除本地修改文件,也就是本地和远程版本内容一致。

git revert和git reset区别

git reset是指针会往回走,指向前一个版本,后面的提交就不会保留
eg:想重新提交,撤回,回退git reset --soft HEAD^,一个^代表回退一次

而git revert撤销某次操作,此次操作之前的commit都会被保留把要撤的撤销,提交一个新的版本

git分支操作

分支的底层也是指针
在这里插入图片描述
分支的好处:同时并行推进多个功能开发,提高开发效率。各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

分支的操作
命令名称作用
git branch 分支名创建分支
git branch -V查看分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上
分支合并(正常合并)

要切换到主分支上,把别的分支合并进来

分支合并(冲突合并)

冲突产生的原因: 合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替我们决定使用哪一个。必须人为决定新代码内容。

(若一个文件是在另一个的基础上修改的,那么正常合并,若两个文件都有修改,如master把a改成b,分支把c改成d,就冲突了)

  1. 先把代码提交到本地仓库git add
  2. git commit -m “描述”
  3. 将远程代码拉下来,进行合并git pull --rebase origin 分支
  4. 可能会有代码冲突,提示报错修改后,git rebase --continue
  5. push
git rebase和git merge区别

合代码的时候都会先找到两次commit的祖先
rebase:在自己的提交上把把别人的提交的副本接过来,把别人的提交删除,然后push
merge:以自己为基准,把三个分支合并,形成一个新的commit

  1. 出merge结果能够体现出时间线,但是rebase会打乱时间线。
  2. 而rebase看起来简洁,但是merge看起来不太简洁。
  3. 最终结果是都把代码合起来了,所以具体怎么使用这两个命令看项目需要。

git团队协作机制

团队内协作

初写代码的人把本地库代码push到远程库

把团队内其他成员添加进来(settings–>Manage access–>invite……)

然后给其他成员发送邀请的链接,其他成员打开并选择同意

没有代码的人在远程库把代码clone到本地库,做修改后,push

初写代码的人要把代码更新,则是从远程库pull,该操作会把代码merge

团队间合作

A团队把本地库代码push到远程库

想要B团队的人帮忙修改代码,非自己的成员所以不加入团队,其无法下载代码

B团队通过fork指令复制代码到自己的远程库(新建了一个库放的是A的代码)

B把远程库的代码clone到本地,修改后,push到自己的远程库

对A发送pull request指令,即通知A改好了,可以拉取了。

A要审核,当审核通过,直接merge操作,即A的远程库的代码已是修改好了的

此时,A的成员都可以pull新代码了

远程库

创建远程库

打开git bash,把内容传到远程仓库git remote add origin “ssh”

创建远程仓库别名

git remote -v 查看当前所有远程地址别名

git remote add 别名 远程地址

推送本地库到远程库

git push 别名 分支名(本地库的分支)

拉取代码到本地库

git pull 别名 分支名

克隆到本地

git clone 远程地址

clone会做如下操作:

  1. 拉取代码
  2. 初始化本地仓库
  3. 创建别名(一般默认是origin)
团队内合作

主要是其他成员要被加入团队,其他操作都一样

团队间协作

给外援远程库地址,外援访问,然后fork,此时他也拥有了一模一样的远程库,但他没有本地库,所以如果他要在本地修改代码,要通过clone操作,改好之后。

pull request,点击new,然后创建一个。对面就可以收到pull request了

收到之后,可以在线查看代码,审核通过的话,点击merge pull request

SSH免密登录

用https的时候,每次push或者别的都需要登录一次

ssh-keygen -t rsa -C 邮箱(账户)

ssh-keygen生成ssh协议的命令-t: 使用 rsa加密协议-C描述(对哪个账户进行免密)

生成了.ssh文件夹(在用户文件夹下)即公钥、私钥

把公钥拿到,复制到账户的SSH keys处

注意
  1. 关于第一次创建了仓库,不要在里面处理readme.md文件,在文件夹用touch readme.md,然后git add readme.md
  2. 第一次push的时候git push -u aoe master
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值