git简介


各区域回退

git checkout – file 可以丢弃工作区的修改(仅限于文件)
git clean -df 要清除工作区中的所有文件和更改(包括文件夹)

git rm -r --cached .删除缓存区,回退到工作区

出现的问题

到公司去一般是直接克隆网上仓库到本地:
下面对一些情况进行分析:

你编写好了一段代码,公司其他员工先提交到网上仓库了,你此时推送上去会失败

在这里插入图片描述
方案一:
1 先将本地代码放在暂存区,暂时不提交到本地仓库:(这估计就是暂存区的好处)
2 将远程gitlab上代码拉取下来,后再提交暂存区代码
方案二:
1.git pull --rebase origin master(master是分支名字,换成你需要更新的分支名)
意思是重新拉取最新的分支,–rebase的作用是将本次的commit提交放在拉取代码的后面
在这里插入图片描述

2.再执行git push origin master(master是分支名字,换成你需要更新的分支名)

拉去文件时文件覆盖
merge分支时,本分支多出的文件不会被覆盖
例如本分支有a.txt,c.txt.合并其他分支b.txt,c.txt时,a.txt不会消失

pull文件测试:
本地文件也没有出现被覆盖

** 本地仓库和网络仓库的log是否一致**
本地仓库记录和网上仓库记录一样

一、git是什么?

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

在本地文件中建立了一个git文件后,他会立刻管理当前文件,对没有添加进该版本控制的文件进行标记

二、使用步骤

1.先配置身份

项目身份
config user.name “wangyuelihai”
全局身份
代码如下(示例):

config --global user.name "lol"
config --global user.email "lol@xxx.com"

查看配置是否成功

$ git config --global user.name
lol

2.为项目建立一个代码仓库

先进入项目目录
代码如下(示例):

小王@DESKTOP-6VKQ3FI MINGW64 /d/Gittest
$ git init
Initialized empty Git repository in D:/Gittest/.git/
$ ls -al //查看文件夹目录
total 75
drwxr-xr-x 1 小王 197121    0 Apr 10 20:09 ./
drwxr-xr-x 1 小王 197121    0 Apr 10 20:00 ../
drwxr-xr-x 1 小王 197121    0 Apr 10 20:09 .git/
-rw-r--r-- 1 小王 197121  222 Apr 10 20:00 .gitignore
drwxr-xr-x 1 小王 197121    0 Apr 10 20:01 .gradle/
drwxr-xr-x 1 小王 197121    0 Apr 10 20:09 .idea/
drwxr-xr-x 1 小王 197121    0 Apr 10 20:00 app/
-rw-r--r-- 1 小王 197121  667 Apr 10 20:00 build.gradle
drwxr-xr-x 1 小王 197121    0 Apr 10 20:00 gradle/
-rw-r--r-- 1 小王 197121 1182 Apr 10 20:01 gradle.properties
-rwxr-xr-x 1 小王 197121 5296 Apr 10 20:00 gradlew*
-rw-r--r-- 1 小王 197121 2260 Apr 10 20:00 gradlew.bat
-rw-r--r-- 1 小王 197121  428 Apr 10 20:00 local.properties
-rw-r--r-- 1 小王 197121   44 Apr 10 20:00 settings.gradle

会生成一个git目录(用来记录本地所有git操作)
若想删除本地代码仓库,可直接删除该文件夹

3.提交本地代码

在这里插入图片描述

git add app提交整个app目录下的文件
git add . 添加所有文件
git commit -m “First commit” app(-m 为添加的文件备注信息)

4.不提交选定类容

git允许用户将指定的文件或目录排除在版本控制范围之外
即检查代码仓库中是否存在.gitignore文件(android studio在创建项目时会自动生成该文件)
若存在就一行一行的读取,将每行指定的文件或目录排除在版本控制之外

5.查看修改类容

适用与本地查看自己更改的内容
$ git diff

查看具体类的修改类容
修改本地文件没有add时
1.和缓存区的进行比较
$ git diff ccc.txt
warning: LF will be replaced by CRLF in ccc.txt.
The file will have its original line endings in your working directory
diff --git a/ccc.txt b/ccc.txt
index b656400..d17c059 100644
--- a/ccc.txt
+++ b/ccc.txt
@@ -1 +1,2 @@
 dsad
+dsadasdasdas
---------
2.add后
git diff a.txt
无
3.和本地库比较
git diff HEAD a.txt
4.和上一个版本比较
git diff HEAD^ a.txt

git diff 不指定文件则比较所有被改动文件

6.撤销未提交的内容

git reset HEAD aaa.txt


7.查看提交记录(git log)

$ git log
将查看记录放到一排!
在这里插入图片描述

移动到当前版本需要多少步
在这里插入图片描述

git log -1
查看最后一次提交记录

git log -p [分支]查看该分支更改的具体消息 {n}

git log dev ^master
查看 dev 有,而 master 中没有的:

git log --left-right dev…master
注意 commit 后面的箭头,根据我们在 –left-right dev…master 的顺序,左箭头 < 表示是 dev 的,右箭头 > 表示是 master的。

//查出 03.12-03.18 期间的提交
git log --since=“2018.03.12” --until=“2018.03.18”

使用这个命令可以容易地看到谁做了什么,毫无保留的。
git shortlog

前进后退历史版本

1
在这里插入图片描述
2 只能往前到以前的版本
git reset --hard^^ 退^个
git reset --hard~n 退n个

3.退回修改前
git reset --hard HEAD

8.查看分支

$ git branch -v

  • master

$ git branch version1.0

$ git branch -v

  • master
    version1.0

$ git branch -v 查看分支
$ git branch version1.0创建分支
git checkout version1.0切换分支
git branch -D version1.0删除分支
git merge version1,0合并分支(在主线上和支线)

分支冲突
冲突原因:
当两个分支同时改了一个文件的内容,两个文件内容不一样时,再合并分支时会出现问题

在这里插入图片描述

9.与远程库协作

若其它账号想要push就必须在
github上添加其为团队成员

添加成员

在这里插入图片描述

在这里插入图片描述
复制邀请链接发送给那个人

问题

git clone https://github.com/wangyuelihai/SunnyWeather.git
这里我的电脑出现:
Failed to connect to github.com port 443: Timed out
连接外网容易超时
所以设置了sstop代理

简写

git remote -v
查看已命名内容在这里插入图片描述
git remote add origin xxxxx
如果最开始是克隆的外界仓库,那么git remove 存在一个origin ,若是自己在本地init 一个仓库则没有,利用这一现象可以查询当前版本仓库源头

拉文件

一般先使用
git fetch origin {分支}将远程库下载到本地,没指定分支就是默认master分支
然后会返回一个分支
FETCH_HEAD
该分支上记录了修改信息
git log -p FETCH_HEAD(查看具体修改的信息)

git fetch origin master:tmp
//在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
git diff tmp
//来比较本地代码与刚刚从远程下载下来的代码的区别
git merge tmp
//合并temp分支到本地的master分支
git branch -d tmp
//如果不想保留tmp分支 可以用这步删除

如果不想查看可以直接
git pull origin master:brantest
将远程master分支与brantest合并
如果当前是brantest分支就可省略
git pull origin master

拉文件出现

refusing to merge unrelated histories
原因是最开始在本地init了一个本地仓库,
解决方法
$git pull origin master --allow-unrelated-histories

先拉一下

删除文件

在本地仓库中删除
物理删除
git add .
git commit -m “deleteall”
git push origin master
远程库也没有了

推文件

$ git push <远程主机名> <本地分支名>:<远程分支名>

条件:必须工作区的文件必须和远地仓库一样才行
常见错误:前一个员工push后,后一个员工没有先拉后推,而是直接推,这会有问题。
解决方法:推不了,就先拉,拉文件是会告知那个文件有问题,和分支解决方法一样,对某个需要手动更改的文件进行手动更改再提交即可。
在这里插入图片描述

跨团队协作

请别人帮忙
不用加入团队

1.访问团队的远程库链接,先FORK一份,在拉入本地仓库,进行更改
2.再pull request
3.团队收到后可以审查,最后点击merge就可以合并了
4.合并后就可以拉取到本地了

git免密push

替换自己的账号
在这里插入图片描述
生成ssh目录
在这里插入图片描述
在这里插入图片描述
将生成的密匙放到github账号的个人设置ssh key 中
在这里插入图片描述
在用ssh地址传输就行了
在这里插入图片描述

标签

相当于为当前工作分支存个档
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

问题

refusing to merge unrelated histories

如果再本地建的git仓库会出现refusing to merge unrelated histories
最好是先clone远地仓库

再次学习感悟

1.仓库的文件(A+B+C+E)
你本地建立的仓库(A+B+C+D)
你可以拉,但是不能推,因为E你没有

2.当本地仓库于网上仓库推或者拉时,这时git log便是两个仓库的修改集合记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值