导图社区 Git
Git整理读书笔记,包含git特点,仓库,分支,疑惑点
编辑于2020-03-26 09:30:46Git
git
分布式版本控制工具
https://www.liaoxuefeng.com/wiki/896043488029600/900375748016320
版本控制类型
集中式
组成
中央服务器
客户端 N
缺点
需联网
不安全
分布式
组成
人人都是服务器
服务器(方便协作,交换修改 - 可无)
安全
不需联网
创建版本库
推送到哪里?
关联远程仓库或直接从远程仓库clone
git init
git add <file>
git commit -m <message>
message双引号
时光机穿梭
修改
git diff <file name>
版本回退
git reset --hard <commit id/HEAD^>
回到未来
git reflog查看命令历史
git reset ...
回退时使用的commit id
方1:revision前几位
git reset --hard 1094a
方2:HEAD^
上一个版本HEAD^
上上版本HEAD^^
HEAD~100
cmd中
git reset --hard HEAD"^"
区域
工作区
暂存区stage
add后,commit前的区域
仓库
命令
git diff 工作区与暂存区差异
git diff --cached 暂存区与仓库差异
git diff HEAD 查看工作区和仓库的差异
git checkout -- filexxx
使用暂存区文件覆盖工作区文件
放弃对工作区中某文件的修改
远程仓库
添加远程库
github创建
本地关联
git remote add origin git@github.com:lzwgit0286/learngit.git
git push -u origin master
origin:默认的远程仓库名
可改
ssh key
原来git提交有两个地址一个是https://github.com/yourname/repo.git,还有一个地址是git@github.com:yourname/repo.git
生成
ssh-keygen -t rsa -C "youremail@example.com"
是否有了之后,免密push? 是的
https://www.cnblogs.com/z-x-y/p/8284504.html
1.生成key
2.服务器设置key
3.本地修改config
remote "origin"
git@github.com: xxxx
4.bash 命令行提交,使用tortoiseGit报错
作用?
推送权限
免密提交
分支管理
命令
命令列表: 创建分支: git branch dev 切换分支:git checkout dev 创建分支并切换分支: git checkout -b dev 删除分支:git branch -D <name> 把dev的内容merge到当前分支 : git merge dev 删除Dev分支: git branch -d dev , -D强行删除 保存工作目录未commit的修改:git stash 特定分支修改merge到当前分支:git cherry-pick <commit> 查看远程库信息: git remote -v 从本地推送分支: git push origin branch-name 在本地创建和远程分支对应的分支: git checkout -b branch-name origin/branch-name 建立本地分支和远程分支的关联: git branch --set-upstream-to=origin/branch-name branch-name
stash
最新的stash为stash@{0}
未add,或add后的都可以stash
commit后就不需要stash
恢复stash
方法一
git stash apply stash@{0}
不会删除stash,删除使用git stash drop
git stash pop stash@{0}
恢复的同时把stash内容也删了
Untracked不跟踪未被stach所记录
stash所有branch共享
特定分支修改merge到当前分支
git cherry-pick
git checkout -b branchName origin/branchName
本地没有分支,则默认关联
标签
便于记忆使用
命令
打标签:git tag <name> 或 git tag <name> <commitID> 打标签并带说明:git tag -a <name> -m "xx" <commitID> 删除标签 :git tag -d tagName 推送一个本地标签: git push origin <tagname> 推送全部未推送过的本地标签: git tag -d <tagname> 删除一个远程标签: git push origin :refs/tags/<tagname>
所有分支可见
使用
1. git show tagName
2. 找到对应的commitid
3.git checkout commitId
问题
如何回退到哪个版本
是否要再次提交?
commit id
显示前几位
commit后产生
origin是什么?
远程仓库的默认名称
git checkout -- filexxx
使用暂存区文件覆盖工作区文件
放弃对工作区中某文件的修改
--很重要
有:
无:切换分支
reset
checkout 与 reset区别
checkout
reset
暂存区的修改撤销掉
git reset HEAD <file>
如:git reset HEAD test.txt
回退版本
revert与reset区别
reset之后是否需要提交?
git status
未被git管理的文件
被修改未commit的文件
origin/master
是branch?还是rep/branch
不同项目密码问题
本地仓库地址?
HEAD指针
HEAD 想象为当前分支的别名
对应.git/HEAD文件
可变
只有一个
本地创建branch,push
git push origin branchName
当前本地branch push到服务器,没有建立关联
git push --set-upstream origin localbranch
当前本地branch push到服务器,建立关联
概念
工作区
暂存区
仓库
支持ssh和https
如修改了文件,没add,已经add时,切换branch会报错
rror: Your local changes to the following files would be overwritten by checkout: readme.txt Please, commit your changes or stash them before you can switch branches. Aborting