git廖雪峰自学笔记

安装

看看右键有没有git bash
官网安装,一路回车

创建版本库

版本控制系统,只能追踪文本文件的改动,

提交

1 file changed
2 insertions 插入了两行内容

时光机穿梭

git status
staged 已暂存
discard 丢弃
modified 修改过
git diff 文件
查看文件到底修改了什么
可以vscode左边第三个使用
左边是以前的,右边是自己的 点箭头就可以把右边的变成左边的。
(use “git reset HEAD …” to unstage)
stage暂存
把add 之后的文件放回去
unstage stage标识暂存区
三个盖帘 workng tree index、stage repository

git log 查看上版本

每次修改完一点就可以git add git commit

版本回去, git commit --hard

git内部有指针head ,当你$ git reset --hard HEAD^的时候只是换了侄指针而已。

git的后悔药。git reflog 记录命令
git reset --hard commit_id
git log 后进入的log界面依靠几个关键字操作,h查看帮助,q退出,一开始乱按一通找退出键
cat 文件名可以查看具体文件的内容
git reflog 查看对版本的操作记录,包含版本号
HEAD相当于头指针,指向当前版本
add过的可以找回来,add的时候会把文件内容保存为blob对象存入到.git/objects目录下。

git cat-file --batch-check --batch-all-objects | grep blob可以列出所有blob,譬如"ce013625030ba8dba906f756967f9e9ca394464a blob 6"。通过git show ce013625030ba8dba906f756967f9e9ca394464a可以打印其内容。可以通过遍历这些blob找到被reset掉的版本。如果没有git gc过,可以先用ls -l .git/objects根据时间筛选下最可能的blob,以缩小检查范围。
git revert
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
Untracked
track 追踪
git diff HEAD – readme.txt
厂库
工作区
git checkout – file可以丢弃工作区的修改:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
原来的git checkout 可以使用 git restore 代替

原来的git reset HEAD 可以使用 git restore --staged 代替

最新版的git提示都已经更换成了restore
原来的git checkout branchName 可以用 git switch branchName 代替。
情况1:在工作区做了修改,并未添加到暂存区,想撤销工作区的修改,用 git restore file;

情况2:在工作区做了修改,并用git add 添加到了暂存区,未提交;想撤销,分两步,1.先撤销暂存区的修改,用 git restore --staged file, 2.然后参考情况1撤销工作区的修改;

情况3:在工作区做了修改,且git add git commit添加并提交了内容,想撤销本次提交,直接用 git reset --hard HEAD^回退版本,即可保证工作区,暂存区,版本库都是上次的内容

远程库

关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
git push origin master
。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

分支

HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支
当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:
$ git switch -c dev
git merge
分支之间的跳转,需要保证该分支下工作区、暂存区与分支提交相同,无修改:即git diff HEAD 无差异;否则在分支跳转时会出现报错情况,无法跳转
分支就是指针!

每次commit 都是把新的 东西 提交(带着一个id)

而分支,就是指向这些commit的指针。

而HEAD,则是指向当前分支的指针。

冲突

解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
git log --graph
因为你不能让一个最新的提交往回合并!
二进制文件冲突就是二选一,你决定留下哪个就是哪个,没有合并一说
当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。
git push origin master
git push origin dev

多人协做

当你从远程厂库克隆的时候,实际上是git自动把本地的master与远程的master对应起来了,并且元辰的但是origin,
git remote -v
推送分支 就是把该分支的所有贝蒂提交推送到远程厂库,推送时,要指定本地分支,这样,git就会把该分支推送到远程库对应的远程分支上,
如果要推送其他分支,
git push origin dev
两个小伙伴各自克隆一个文件
git clone
git branch
对应远程的dev
git checkout -b dev origin/dev
这个是创建远程origin的dev分支到本地,
然后就可以在dev上修改,
git add git commit -m‘sss’
git push origin dev
你的小伙伴已经向origin/dev分支推送了他的提交,碰巧你也对同样的文件做了修改。
cat env.txt
git add env.txt
git commit -m’add new env’
git push origin dev
这个时候 some refs
提示你git pull
你git pull 失败 没关联
git branch --set-upstream-to=origin/dev dev
git brnach --set-upstream-to=origin/dev dev
首先,可以试图用git push origin 推送自己的修改;

如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

如果合并有冲突,则解决冲突,并在本地提交;

没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!
no tracking information 没有关联
git branch --set-upstream-to bendi origin/denzi
查看远程库信息,使用git remote -v;

本地新建的分支如果不推送到远程,对其他人就是不可见的;

从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;

从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值