git学习小结


git初始化

git config --global user.name

git仓库创建后项目文件的三种状态

一旦git仓库被创建后,一个项目文件会处于三种状态。
已提交(committed)、已修改(modified) 和 已暂存(staged)

git add

追踪文件
文件被追踪后会存在两份,一份在暂存区,一份在文件夹
暂存区只会保存add时的文件,add之后再修改文件不会同步保存

git status

查看当前跟踪、修改等状态

git restore

还没提交到版本库,会撤回修改到暂存区版本

git log

查看提交历史

git commit -m “说明性文字”

提交当前状态并附上说明性文字
提交之后要重新跟踪

git commit --amend

重新提交,最终只会有一个提交——第二次提交将代替第一次提交的结果。

git checkout

git checkout 哈希字符串或者版本tag或者master,slaver,可以回到对应版本或者分支
不建议在历史版本作修改
一般用git checkout -b 切换并创建分支
git checkout --trace remotes/backup/user2,在远程分支user2下工作,会把user2分支拉下来成为一个本地分支

git branch

查看本地分支

git branch -a

查看远程分支

git clone

克隆仓库

git clone --bare

克隆一个仓库
–bare表示克隆一个裸仓库,不用来修改,只用来储存,本质是吧.git的隐藏文件夹复制过来,可以作为原创文件夹提交

git remote

查看当前仓库的远程仓库(不在当前目录下的仓库都是远程仓库)

git remote add

添加远程仓库

git remote rm

删除远程仓库

git remote show

显示远程仓库的详细信息

git merge

合并分支
git merge a b合并a,b分支到当前分支
git merge a合并a分支到当前分支

git diff

查看未暂存的改动

git diff --cached

查看在暂存区内的改动

git rm

从已跟踪文件清单中移除,取消add

git rm --cached

把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然保留在当前工作目录中

一些容易误解的地方

git log查看提交历史

git log查看提交历史,但是不同分支的提交历史是不同的。这个提交历史指的是当前分支的提交历史,而不是对远程仓库来说的提交历史

git pull和push

如果这两个命令不加分支,只加远程地址,应该默认是指当前分支。在master分支用git push backup不会提交user1分支。不要混淆了不同分支和远程与本地。在自己的分支下push怎么会影响别人的分支呢。
git push --set-upstream [remote] [branch]或者-u
和远程仓库的branch分支建立连接push上去

模拟多人使用git

在本地弄两个仓库用于模拟多人使用git,一个裸仓库用于储存

获取 Git 仓库

通常有两种获取 Git 项目仓库的方式:

将尚未进行版本控制的本地目录转换为 Git 仓库;
从其它服务器 克隆 一个已存在的 Git 仓库。
这里先用本地目录生成一个git仓库,然后再在另外一个目录克隆得到git仓库

本地目录生成git仓库

在这里插入图片描述
用git init在本地新建一个README.md文件并写入hello world,add之后文件加入到暂存区,commit之后提交
在这里插入图片描述

创建一个裸仓库

用git init --bare在另一个目录gitbackup创建一个裸仓库,把裸仓库添加为远程仓库(裸仓库一般不在本地),再从新目录克隆裸仓库

用git clone --bare从现有仓库克隆一个裸仓库
在这里插入图片描述
使用git remote add添加裸仓库作为远程仓库
在这里插入图片描述

从裸仓库克隆一个仓库

用git clone直接输入裸仓库地址即可,通过裸仓库克隆得到了原先的仓库
在这里插入图片描述
到这里准备好了两个仓库可以用作工程使用,一个裸仓库专门用于保管代码。
第一个仓库remote查看后是设定的backup
第二个仓库remote查看是origin

两个仓库模拟多人工作

第一个仓库编辑a,b文件,第二个仓库编辑b,c文件,先在不同分支上工作,再整合到master分支

注意
git branch只查看本地分支,如果本地分支不提交到远程仓库别人就看不到

在第一个仓库创建user1分支编辑a,b并提交到远程仓库

创建user1分支,编辑ab文件
在这里插入图片描述
然后将修改add,commit提交
在这里插入图片描述

用git push来推送到远程仓库
在这里插入图片描述

在第二个仓库创建user2分支编辑b,c文件,两个b文件不同并提交到远程仓库

在这里插入图片描述
在这里插入图片描述
此时远程仓库应有三个分支,master,user1,user2

两个仓库都通过fetch远程仓库同步数据

在使用fetch后远程分支不会自动出现在本地
在这里插入图片描述
如果想在远程分支user2下工作,可以用git checkout --trace remotes/backup/user2
在这里插入图片描述
可以看到user2的文件
第二个仓库的同步操作类似

将两个分支合并到master分支并处理冲突

在第一个仓库直接使用git merge合并user1和user2分支,不出意外的合并失败
在这里插入图片描述
此时目录内的文件情况
在这里插入图片描述
更改冲突文件后,按提示完成合并
在这里插入图片描述

其实应该是在master分支上执行git merge user1 user2就能直接完成。

最后在master中git merge user1,即可得到user1和user2合并分支
这里直接push报错了
在这里插入图片描述
按照提示建立远程master的跟踪,git push --set-upstream backup master
在这里插入图片描述
在第二个仓库拉下来看下效果
在这里插入图片描述
发现只有master分支,没有user1分支,不是理想效果,再回到第一个仓库把user1分支push上去

此处应该是pull命令如果不加分支默认是拉取远程的本地同名分支,因为这里是在user1分支下而之前没有提交user1分支,所以没有更新。

在这里插入图片描述
再次pull,可以得到全部的数据
在这里插入图片描述

使用ssh链接GitHub作为远程仓库

在GitHub中建立好仓库后,用git remote add 远程仓库名字 远程仓库地址即可
在这里插入图片描述
在GitHub上可以看到推送上来的master分支
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值