git 从基础开始梳理

gitk 图形界面查看修改的东西

拉取

git pull --rebase

拉取不产生冲突,会直接 rebase,不会产生分支合并操作,如果有冲突则需要手动 fix 后,自行合并。
1.git reset 版本回退
git reset --hard HEAD^ 回退到最近的一个版本
git reset --hard commit_id 回退到指定版本的id
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

工作区和暂存区

  将本地修改的文件添加到git版本库
  我们把文件往Git版本库里添加的时候,是分两步执行的:
  1. 第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
  2. 第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
    一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的
    (如果修改了文件,git add之后,又修改了之后,直接git commit到版本库,那么只会将第一次的修改提交到版本库,因为第二次没有add。git commit只负责把暂存区的代码添加到版本库中)
撤销修改

工作区文件修改了,但是没有add到暂存区,放弃更改
git checkout -- filename 注意有 – 不然成了切换分支
工作区文件修改了,并且add到暂存区,放弃更改
git reset HEAD filename

删除文件

一般是直接在文件管理器里面删了 先手动删除文件,然后使用git rm <file>git add<file>效果是一样的。
还有一种是误删本地的,要从版本库恢复到本地
git checkout -- filename

创建和合并分支

创建分支
git branch branchName
删除分支
git branch -d branchName
删除一个没有合并过的分支
git branch -D <name>
切换分支
git checkout branchName
切换并创建分支
git checkout -b branchName
罗列所有的分支列表
git branch 当前分支前会有*

合并分支

git merge branchName
切换到B分支,完成开发后,commit一下,再切换到A分支,会发现B分支上的改动A分支上并没有,这时候将B分支合并到A
分支,就会将内容合并到A分支上
merge之后,要提交master上的合并的内容,直接push。不需要再commit了
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
git log --graph命令可以看到分支合并图。

分支管理策略

合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
git merge --no-ff -m "merge with no-ff" dev

贮藏

git stash 将当前的工作内容贮藏
git stash save "msg" 带贮藏信息的贮藏
git stash list 查看贮藏的列表
git stash apply 恢复贮藏但不删除这个贮藏 需要使用git stash drop来删除
git stash pop 恢复贮藏并且删掉它
git stash apply stash@{0} 恢复指定的贮藏

多人协作

当从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。并且从远程库clone时,默认情况下,只能看到本地的master分支。
如果远端有一条dev分支
git checkout -b dev origin/dev 创建远程的dev分支到本地 (检出)
git remote 查看远程库的信息
git remote -v 查看更详细的信息
因此,多人协作的工作模式通常是这样:
1、首先,可以试图用git push origin <branch-name>推送自己的修改;
2、如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
3、如果合并有冲突,则解决冲突,并在本地提交;
4、没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建
用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

推送分支

git push origin <branch-name> 推送相应分支上的修改
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支
推送到远程库对应的远程分支上
git push origin master 推送本地的master分支
git push origin dev 推送本地的dev分支

rebase

rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值