近来GitHub发布了中文文档,官方的中文文档当然就是“教科书”啦,但是翻阅了一些还是不是很看的懂,还是先将自己需要的部分总结一下,然后没事的时候可以多翻阅官方文档来提高自己。
GitHub 中文文档地址:https://help.github.com/cn
一、Git小常识
1、在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
2、 Git把数据看作小型文件系统的一组快照,每次提交更新时Git都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,Git不会重新存储该文件,而是只保留一个链接指向之前存储的文件。所以Git的工作方式可以称之为快照流。
3、Git底层采用的是SHA-1算法
二、commit
commit 分为两种:一种是常规的 commit,也就是使用 git commit
提交的 commit。
另一种是 merge commit,在使用 git merge
合并两个分支之后,你将会得到一个新的 merge commit。merge commit 和普通 commit 的不同之处在于 merge commit 包含两个 parent commit,代表该 merge commit 是从哪两个 commit 合并过来的。
三、git 目录
我们知道 git init / git init 目录名 会创建一个新的仓库,或者将仓库给初始化,它会产生一个.git 文件,而git系统当中的的所有数据都存在于.git文件夹之中。
4、先pull后push
5、git的工作流
工作区:即自己当前分支所修改的代码,git add xx 之前的!不包括 git add xx 和 git commit xxx 之后的。
暂存区:已经 git add xxx 进去,且未 git commit xxx 的。
本地分支:已经git commit -m xxx 提交到本地分支的。
六、idea 上设置终端为 git bash
idea file--》setting--》terminal 配置shell path 为F:\git\Git\bin\bash.exe即可。
ps:上面地址替换为你的 git安装目录里的bash.exe的目录
七、解决git的乱码问题,如下?:
方法一:在git bash下(使用界面操作时),右键 -->选择options-->选择“Text”-->将Character set
设置为 UTF-8
方法二:分别修改git的某些配置文件
//1和2在C:\Users\Administrator下,3和4在git安装目录下?
1、.gitconfig文件末尾添加
# 代码库统一使用utf-8
encoding = utf-8
# log编码
commitencoding = utf-8
# 支持中文路径
pathnameencoding = utf-8
# status引用路径不再是八进制
quotepath = false
2、git-completion.bash文件末尾添加
# 让ls命令能够正常显示中文
alias ls='ls --show-control-chars --color=auto'
3、inputrc文件末尾添加
# bash可以正常输入中文
set output-meta on
set convert-meta off
4、profile文件末尾添加
export LESSHARESET=utf-8
方法三: -->git安装目录 -->编辑 etc/bash.bashrc --> 文末最后添加
# 解决IDEA下的terminal中文Unicode编码问题
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
方法四:在 Ideal的terminal 终端 里面参看git log乱码,则可以使用set LESSCHARSET=utf-8 命令临时解决,当然是临时的。
因为Ideal的terminal 终端 默认使用的是本机的CMD窗口,所以想要解决问题得配置本机的环境变量
PS:git status不能显示中文:git config --global core.quotepath false
8、一些高级命令操作
1、撤销没有push的commit | 1:git log 查看提交日志,找到commit id 2:git reset --hard commit_id (恢复到之前某个提交的版本,且那个版本之后提交的版本都不要了) 或者 git reset --hard HEAD^ # 回到最新的一次提交 或者 git reset HEAD^ # 此时代码保留,回到 git add 之前 |
2、撤销已经提交到远程仓库的commit | 1:git log # 得到你需要回退一次提交的commit id 2:git reset --hard <commit_id> 3:git push origin HEAD --force # 强制提交一次,覆盖之前错误的提交 或者 1:git log # 得到你需要回退一次提交的commit id 2:git revert <commit_id> #生成一个新的 commit, 将指定的 commit 内容从当前分支上撤除 |
3、合并前几次的提交 | git rebase -i HEAD~n(回退到前N次提交) |
合并某一次的提交 | |
4、修改的文件已被git commit ,但想再次修改不再产生新的Commit | 1:git add sample.txt 提交修改的文件 2:git commit --amend -m"说明" 3:git push --no-thin origin HEAD:refs/for/master #再次推到远程 |
5、回到add之前的工作区 | git checkout -- a.txt # 丢弃某个文件 或者 git checkout -- . # 丢弃全部 |
6、恢复git add到缓存区,并未commit提交 | git reset HEAD . 或者 git reset HEAD a.txt |
7、查看所有记录所有HEAD的历史 | git reflog |
8、合并某一次提交到当前分支上 | git cherry-pick 某次提交 |
9、将dev合并到master | git merge dev |
10、查看本地分支所关联的远程分支 | git branch -vv |
11、查看所有远程分支 | git branch -r |
12、重命名本地分支 | git branch -m old_branch new_branch |
13、删除远程分支 | git push origin :old_branch 例如:(git push origin :master 删除远程master) 或者 git push -u origin :matter |
14、设置当前分支对应的远程分支 | git push --set-upstream origin new_branch |
15、重命名远程分支 | 13点+14点 |
16、在本地删除远程不存在的分支 | 1:git branch -a 查看所有分支 2:git remote show origin #显示本地与远程的对应关系 3:git remote prune origin |
17、取消所有在stash中的文件 | git checkout -- . |
18、回滚会保留源码,只是将git commit和index 信息 回退到了某个版本. | |
19、生成SSH秘钥 | ssh-keygen -t rsa -C "邮箱” |
20、 更新子仓库 | git submodule update |
21、带着子仓库一起 gtclone | git clone --recurse-submodules -j8 git@项目地址 -b develop |