Git 知识点总结(个人·常用)

git 中文件有三种状态:
ignore
tracked
untracked
文件有三个位置:
工作目录
暂存区
仓库中

push的是仓库中的代码,即使工作目录中的代码修改了但是没有add和commit,仓库中的代码也是不会变的,push的时候也不会受影响。

创建新分支,删除分支

创建并切换到新分支

  1. git branch branchname
    git checkout branchname
  2. git checkout -b newBranch

删除分支

  1. (本地)git branch -d branchname
  2. (远端)git push origin –delete branchname

添加文件到暂存区和取消添加

添加 git add . 或者 git add filename(文件名之间可以是空格隔开来添加多个文件) 或者 git add 文件夹

撤销添加:git reset HEAD filename

提交文件到仓库:
git commit -m “说明”
修改最新的提交
git commit –amend

暂存区中的文件覆盖工作目录中的文件

git checkout – filename

代码回滚:

git reset commit_id

撤销某次提交

git revert commit_id

将远端代码拉取到本地和某分支合并

git pull origin 远端分支:本地分支

将本地代码推送到远端和某分支合并

git push origin 本地分支:远端分支

将远端某分支拉取到本地

git fetch origin branchname

合并分支到当前分支

git rebase 分支名
git merge 分支名

查看文件状态

git status

查看提交日志

git log

想要切换分支但又不想commit当前分支的代码

git stash
git checkout 分支名 (接着是在当前分支的一些操作)
git checkout 原分支
git stash pop (原来的修改代码就回来了)

删除文件

  • 如何从仓库中和工作目录中删除一个文件??
    git rm 文件名
  • 只从暂存区删除文件
    git rm –cached 文件名:
  • git rm -r 文件夹/ :删除文件夹

查看工作目录相对索引区文件的修改??

git diff filename

通过手动的delete键在工作目录中删除文件

  1. 再使用一次 git rm 文件名
  2. 执行指令 git add -A .或者是git add -all .(注意一定要有一个“.”),就会将不存在的文件记录在文档库中,接着执行git commit ,就会从文档库删除这些文件。

总结:git revert 可以用在公共分支上,git reset 应该用在私有分支上。

合并代码的过程???
第一:有人发出合并请求
第二:有人对代码进行审查
第三:有人来执行合并操作

origin是什么意思??
git会自动把远程仓库的名字命为origin,使用git remote -v 可以看到origin指的地址是什么。

HEAD是什么??
可以看做是一个指针,始终指向当前分支,当前分支对应着最新一次提交的commit hash。

查看本地所有分支???
git branch -a

查看远程仓库所有分支??
git branch -r

新切一个分支????
git checkout -b newbranch

切换分支?
git checkout branch

将一个分支(一般是本地分支)合并到当前分支???
git rebase 分支名

怎么将远程仓库中的代码搞到本地来??
git clone

把一个分支的修改合并到当前分支
取回所有分支的更新:git fetch
取回指定分支的更新:git fetch origin 分支名 取回后就会在本地新建一个同名分支

git log可以看到什么??
谁在什么时间做了一次提交,对代码做出改动的说明是什么。
谁在什么时间对代码做了一次合并,合并了哪几次提交??
(如果有bug,那么让人进行修复之后切一个分支(checkout -b)做一次提交(commit),让人进行合并(merge)之后,其他人拉取(fetch)远端的指定分支,然后合并(rebase)到自己本地当前的分支)

push

把本地分支推送到远程主机的分支??
git push origin local:remote
可以省略远程分支名
git push origin local 将本地分支推送到与之存在追踪关系的分支(通常就是同名分支)
在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,
当前分支与远程分支存在追踪关系
git push origin
当前分支只有一个追踪分支
git push

pull

把远程分支取回本地并合并指定分支??
git pull origin 远程分支:本地分支
把远程分支取回本地并合并到当前分支??
git pull origin 远程分支
把远程和当前分支存在追踪关系的分支和当前分支进行合并
git pull

将指定分支合并到当前分支??
git merge branchname

查看所有的储藏列表??
git stash list

为什么要使用git stash??
当想要pull最新代码的时候会提示要先commit,这个时候如果不想commit,就可以执行
git stash
git pull
git stash pop

git stash 存储当前工作目录中的代码
git stash pop 应用最近一次存储的代码

如何提交一个文件??
git commit -m “描述信息”
将文件修改添加到索引??
git add filename
撤销对未放入索引区文件的修改?
git checkout filename

如何在别人的分支上面继续开发??
别人执行一次git commit
然后git fetch origin 分支名,然后git checkout 分支名,这样代码就和别人的代码一样了,可以在别人的基础上继续开发。
将工作目录中的所有变化提交到暂存区(包括修改和新加文件)?
git add .
–all参数全名 -A参数简写

git checkout – filename
用暂存区中filename文件来覆盖工作区中的filename文件。相当于取消自上次执行git add filename以来(如果执行过)的本地修改。

merge的原理??
rebase的原理??
1.版本1、版本3、版本6的 sha-1 值完全相同,这种情况表明没有冲突
2.版本3或6至少一个与版本1状态相同(指的是sha-1值相同或都不存在),这种情况可以自动合并。比如1中存在一个文件,在3中没有对该3.文件进行修改,而6中删除了这个文件,则以6为准就可以了
版本3或版本6都与版本1的状态不同,情况复杂一些,自动合并策略很难生效,需要手动解决。我们来看一下这种状态的定义。

将文件add到了暂存区中怎么取消操作??
git reset HEAD filename(其中filename可以写多个文件,文件之间用空格隔开,在add的时候也可以用这个方式)

提交之后reset操作??
git reset commit_id 会将仓库中的代码和暂存区中的代码一起回滚到那次提交之后的代码。工作目录中的代码则是自己操作过的代码。

在本次提交之后发现有些文件该提交却没有提交如何重新提交?
git add filename
git commit –amend(修订) (会弹出一个vim编辑器进行编辑提交的信息)
编辑完成后按esc然后输入
:wq就可以退出编辑。

回退到某个版本??
git reset 057d
向前回退几个版本?
git reset HESD~2/3/4··
撤销某次操作但是不影响此次操作前后的提交??
git revert commit_id/HEAD^/HEAD~1

执行commit操作后工作目录中的文件的名字颜色就会发生改变。如果只是add文件的颜色是不会发生改变的。

vim中在没有进入编辑模式之前,按下I,O就能进入编辑状态,区别是按下O会进入下一行编辑。按下esc则退出编辑状态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值