git命令学习笔录一
1. git最小配置 name && emailgit config --global user.name 'your_name'git config --global user.email 'youer_email@qq.com'--global 当前用户的所有仓库(个人home目录下的.gitconfig里面,例如:C:\Users\74986)--l...
1. git最小配置 name && email
git config --global user.name 'your_name'
git config --global user.email 'youer_email@qq.com'
--global 当前用户的所有仓库 (个人home目录下的.gitconfig里面,例如:C:\Users\74986)
--local 本地仓库 (在.git/config里面)
--system 本系统的所有仓库(基本不用)
查看配置:
git config --list --global
git config --list --local
git config --list --system
2. git add 添加内容到暂存区
// 添加到暂存区
git add index.html // 添加index.html
git add index.html images //可以多个,也可以是文件夹
git add -u // 将文件的修改、文件的删除,添加到暂存区
git add . // 将文件的修改,文件的新建,添加到暂存区
git add -A / git add -all // 将文件的修改,文件的删除,文件的新建,添加到暂存区
3. git log 看历史记录
git log // 获取提交的记录(当前分支)
git log --oneline // 一行展示记录
git log --graph // 有线条连接的记录
git log --all // 所有分支的记录
4.文件的重命名
git mv 旧文件名称 修改的名称
例如:
git mv README.md readme.md
5. 图形化界面
gitk
6.commit tree blob的关系
一次commit对应一个tree(可以理解是一次快照),这个大tree可能包含文件和文件夹
大tree文件夹对应的是一个新的tree,里面有自己的文件,这些文件对应blob
大tree文件对应的就是blob
blob不是以文件名来区别,是以文件的内容来区分是否是同一个blob
7.commit 提交
git commit -m '描述' //将暂存区的提交到本地
git commit -am '描述'
// a表示是add,就是git add和git commit一起执行,就没有啥暂存区的概念了
// 这个不太推荐,对于新建的文件也不好处理
8.分支
git branch // 查看本地分支
git branch -r // 查看远程的分支
git branch -a // 查看本地和远程的
git branch -av // 查看所有分支信息
git branch -d branch_name // 删除本地分支, -D强制删除(分支有修改的提交,没有被合并)
git branch -d -r branch_name // 删除远程分支
git branch -m oldbranch newbranch // 重命名分支
git checkout (-b) branch_name (base_branch_name/commit)
// 新建分支,并切换到此分支
// 最后一项是新建分支是以哪个分支或者是哪次提交为基础的
// ()里面表示是可选
// -b是切换到分支
git branch --no-merged // 查看没有合并的分支
9. 比较diff
git diff commit1 commit2 // 两次提交进行比较
git diff HEAD HEAD~1
// HEAD表示当前的提交,最新的
// HEAD~1表示是上一级提交,就是HEAD的父级,以此类推,HEAD~2,HEAD~3
git diff --cached (文件组) // 暂存区和HEAD的比较
git diff (文件组) // 工作区和暂存区的比较
git diff HEAD (文件组) // 工作区和HEAD的比较
10. git commit --amend
代替(或这说修改)上一次提交,不只是修改message。
比如上一次提交时有几个文件没有add以及commit,可以重新进行add之后再commit --amend提交。
但这次提交之后不会增加一次新的commit,而是相当于在上一次commit的基础上进行修改。
修改成功后,输入:,然后加上wq就可以退出,w是write写入意思,q是quit退出
11. 恢复之前版本 git reset (暂存区恢复到HEAD/commitId)
描述: 修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本
场景:如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要
此时如果用“git push”会报错,因为我们本地库HEAD指向的版本比远程库的要旧,所以我们要用“git push -f”强制推上去
git reset commitid(HEAD) --soft
// 把 HEAD 指向的 commit 恢复到你指定的 commit,暂存区 工作区不变
git reset commitid(HEAD) --hard
// 把 HEAD, 暂存区, 工作区 都修改为 你指定的 commit 的时候的文件状态
git reset commitid(HEAD) --mixed // 这是默认的,等价 git diff (文件组)
// 把 HEAD,暂存区 修改为 你指定的 commit 的时候的文件状态,工作区保持不变
git reset commitid(HEAD) -- (文件组) // 撤销具体文件
12. 恢复之前版本 git revert
描述: git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。
比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),
想要撤销版本二,但又不想影响撤销版本三的提交,
就可以用 git revert 命令来反做版本二,生成新的版本四,
这个版本四里会保留版本三的东西,但撤销了版本二的东西
场景:如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程
git revert -n 8b89621019c9adc6fc4d242cd41daeb13aeb9861
// -n 表示不强制合并(冲突)
然后再 git add,git commit即可
13.删除文件
git rm 文件组
14. git stash
场景:正在开发过程中,忽然有bug需要修复,此时又不好提交,所以暂时保存,先去修复bug,完成后回来再恢复之前的开发状态
git stash save 'msg' // 保存
git stash apply // 恢复之前的保存, 不删除stash的记录
git stash pop //恢复之前的保存,且删除stash的记录
git stash list // 查看stash记录
git stash pop stash@{2} //恢复具体stash记录的状态
git stash pop = git stash pop stash@{0} // 默认是0
15. ssh的配置 (github为例)
// 本地建立私秘钥
ssh-keygen -t rsa -b 4096 -C 'xxxxxxx@qq.com'
// -t 种类 rsa
// -b 字节长度
// -C 描述 comment
默认不断enter,会产生 id_rsa(私钥) id_rsa.pub(公钥,内容要加到github上面)
github默认也是找id_rsa,如果不用默认的,用其他名字,要另外配置
// github添加公钥
settings --> ssh and gpg keys --> new ssh keys
将id_rsa.pub的内容复制到内容去,title可以不管,保存即可
如果不使用默认的名字id_rsa:
// 生成私秘钥没有变化,命令行里名字自己编写,例如 mine_rsa
// 由于不是默认需要加到ssh
ssh -T git@github.com ~/.ssh/mine_rsa.pub
// 另外要在 ~/.ssh/ 配置config
cd ~/.ssh
touch config
修改config文件的内容,加入:
Host github.com
IdentityFile ~/.ssh/mine_rsa
测试是否连接成功:
ssh -T git@github.com
// 如果出现 Hi lujie-hybrid!(这是username) You've successfully authenticated, but GitHub does not provide shell access.
// 就表示成功连接了
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)