标签:GIT git -- 常见 HEAD 场景 branch commit 暂存区
一. Git基础
1.1 git的三个作用域
git config --global user.name ‘your_name’
git config --global user.email ‘you_email@163.com’
其中缺省默认代表local
git config --local *local只对某个仓库有作用*
git config --global *global对当前用户所有仓库有作用*
git config --system *system对系统所有登录的用户有效*
显示config的配置,加–list
git config --list --local
git config --list --global
git config --list --system
1.2 建Git仓库
两种场景
- 把已有的项目代码纳入Git管理
cd 项目所在的文件夹
git init
- 新建的项目直接用Git管理
cd 某个文件夹
git init your_project # 会在当前路径下创建与项目同名的文件夹
cd your_project
如果git权限为global 在此新建一个仓库并设置权限为local 那么最后生效权限为local
放入暂存区
git add 放入暂存区的文件1 文件2
git add -u # 全部文件
放入版本历史
git commit -m'提交信息'
1.3 查看版本历史
1. git log # 查看当前分支的全部提交
2. git log --oneline # 简介查看提交信息
3. git log -n2 --oneline # 查看最近的两个commit
4. git log --all # 查看所有分支的log
5. git log --all --graph # 图形化的显示所有分支
6. git log --oneline --all
7. git log --oneline --all -n4
8. git log --oneline --all -n4 --graph
git branch -v 查看本地有多少分支
git checkout -b temp 创建分支
1.4 Git 图形管理界面
gitk
1.5 .git目录
.git文件目录
• COMMIT_EDITMSG
• config 当前 git 的配置文件
• description (仓库的描述信息文件)
• HEAD (指向当前所在的分支),例如当前在 develop 分支,实际指向地址是 refs/heads/develop
• hooks [文件夹]
• index
• info [文件夹]
• logs [文件夹]
• objects [文件夹] (存放所有的 git 对象,对象哈希值前 2 位作为文件夹名称,后 38 位作为对象文件名, 可通过 git cat-file -p 命令,拼接文件夹名称+文件名查看)
• ORIG_HEAD
• refs [文件夹]
• heads (存放当前项目的所有分支)
• tags (存放的当前项目的所有标签,又叫做里程碑)
• cat 命令, 功能:用来显示文件。 例如 cat text.md 显示 text.md 文件的内容
• ls -al 命令, 表示列出当前目录下的所有文件(包括隐藏文件)
• git cat-file -t 命令 , 查看 git 对象的类型
• git cat-file -p 命令, 查看 git 对象的内容
• git cat-file -s 命令, 查看 git 对象的大小
1.6 分离头指针
detached HEAD —这种代表切换了一个未知的分支,这种状态commit 后不会在git 中显示,日后git会自动清除,目前可以通过git branch new-branch-name 原先分支名
来保存commit
基于某一个分支创建新分支git checkout -b new-branch-name basic-branch-name
git diff HEAD HEAD^1
HEAD^1 == HEAD~1
``HEAD11 == HEAD~2`比较HEAD与其父亲提交的比较 ^1 代表父亲, 11 代表爷爷
二. 个人使用Git常见场景
2.1 查看分支
git branch -av
2.2 怎么删除不需要的分支
git branch -d branch-name
如果该分支还没有merge 那么该命令无效,想删除可以使用git branch -D branch-name
2.3 如何修改最新commit message
git commit --amend
2.4如何修改旧commit message
git rebase -i father-commmitID
注意变基是在单独开发的项目中实现,不可在团队开发中使用
2.5 把连续的commit 合并一个
git rebase -i father-commitID
进去后将后几个命令改成s
2.6 把不连续的commit合并成一个
git rebase -i father-commitID
进去后,把需要合并的与第一个放在一起
2.7 暂存区和HEAD文件作比较
git diff --cached
2.8 工作区与暂存区文件做比较
git diff
工作区与暂存区所有文件的比较
git diff filename
某个文件的工作区与暂存区的比较
2.9 让暂存区恢复到和HEAD一样
git reset HEAD
2.10 让工作区恢复到和暂存区一样
git checkout -- filename
2.11 让暂存区部分文件恢复到和HEAD一样
git reset HEAD -- filename1 filename2
2.12 消除指定的几次提交(暂存区与工作区回到某一个位置)
git reset --hard commitID
2.13 比较不同分支,提交的文件差异化展示
git diff branch-name1 branch-name2 -- filename
git diff commit-ID1 commit-ID2 -- filename
2.14 删除文件的方法
git rm filename
2.15 开发中临时加塞紧急任务
git stash
任务放到一个栈里面
git stash list
查询任务
git stash apply
将栈顶的任务复制拿出来,可以无限使用
git stash pop
将栈顶任务弹出来,智能使用一次
2.16 如何指定git不管理的文件
vi .gitignore
里面放上不需要管理的文件
标签:GIT,git,--,常见,HEAD,场景,branch,commit,暂存区 来源: https://blog.csdn.net/weixin_43672855/article/details/118404899
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。