# note **Repository Path**: donecode/note ## Basic Information - **Project Name**: note - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-11-20 - **Last Updated**: 2021-03-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Git [在线演示](https://learngitbranching.js.org/?locale=zh_CN) ## 版本回退 git reset --hard HEAD^ 上个版本HEAD^,上上个版本HEAD^^,上100个版本HEAD~100 命令历史: `git reflog` 提交历史: `git log` 或 `git log --graph --pretty=oneline --abbrev-commit` ## 撤销工作区修改 回到最近一次`git commit`或`git add`时的状态 1. 未添加到缓存区 丢弃工作区的修改:`git checkout -- readme.md` 2. 已添加到缓存区 撤销暂存区的修改:`git reset HEAD ` 丢弃工作区的修改:`git checkout -- readme.md` ## 查看修改 - 工作区(work dict)和暂存区(stage)的区别:`git diff` - 暂存区(stage)和分支(master)的区别:`git diff --cached` - 工作区和版本库里面最新版本的区别:`git diff HEAD -- ` ## 删除文件 `rm test.txt` 1. 删除提交版本库 `git rm file` `git commit -m 'remove file'` 2. 误删找回 将丢失最后一次修改 `git checkout -- file` ## SSH秘钥 id_rsa是私钥,id_rsa.pub是公钥 1. 生成秘钥 `ssh-keygen -t rsa -C "youremail@example.com"` 2. 找到秘钥 `cd ~/.ssh` 3. 复制公钥 id_rsa.pub内容与git仓库设置中绑定ssh key ## 添加远程库 1. 关联远程库: `git remote add origin git@github.com:michaelliao/learngit.git` 2. 推送到远程库: `git push -u origin master` 查看远程库信息:`git remote -v` 删除已有的远程库:`git remote rm origin` 关联多个远程库:`git remote add 远程库自定义名称 git-url` `gt push 远程库名称 master` ## 分支 查看分支:`git branch`,当前分支前带`*`号 创建分支 `git branch ` 切换到分支:`git checkout ` 或 `git switch ` 创建并切换到dev分支:`git checkout -b ` 或 `git switch -b ` 合并分支:`git merge ` 删除分支:`git branch -d ` 在本地创建和远程分支对应的分支:`git checkout -b branch-name origin/branch-name` ## 分支合并 分支合并图:`git log --graph --pretty=oneline --abbrev-commit` 禁用`Fast forward` ,生成一个新的commit,这样,从分支历史上就可以看出分支信息:`git merge --no-ff -m "merge with no-ff" dev` 工作现场:`git stash list` 保存工作现场:`git stash` 恢复工作现场: 1. `git stash apply`恢复,stash内容并不删除,你需要用`git stash drop`来删除 2. `git stash pop`,恢复的同时把stash内容也删了 3. `git stash apply stash@{0}`,恢复指定stash 复制一个特定的提交到当前分支:`git cherry-pick ` 强制删除未合并的分支:`git branch -D ` ## 多人 - 查看远程库信息,使用`git remote -v`; - 本地新建的分支如果不推送到远程,对其他人就是不可见的; - 从本地推送分支,使用`git push origin branch-name`,如果推送失败,先用`git pull`抓取远程的新提交; - 在本地创建和远程分支对应的分支,使用`git checkout -b branch-name origin/branch-name`,本地和远程分支的名称最好一致; - 建立本地分支和远程分支的关联,使用`git branch --set-upstream branch-name origin/branch-name`; - 从远程抓取分支,使用`git pull`,如果有冲突,要先处理冲突。 ## 标签 - 查看标签列表:`git tag` - 查看标签信息:`git show ` - 新建标签:`git tag ` 默认标签是打在最新提交的commit上的 - 新建标签到历史commit:`git cimmit ` - 新建带说明的标签:`git tag -a -m '说明文字' ` - 删除标签:`git tag -d ` - 推送标签到远程库:`git push origin ` - 推送全部标签到远程库:`git push origin --tags` - 删除远程库标签: 1. ` git tag -d ` 2. `git push origin :refs/tags/` 或 `git push origin --delete tag ` 或 `git push origin --delete refs/tags/${tagname}` ## 配置 - 查看配置:`git config [--local|--global|--system] -l` - 编辑配置:`git config [--local|--global|--system] [-e|--edit]` - 增加配置项: `git config [--local|--global|--system] --add section.key value` - 获取一个配置项:`git config [--local|--global|--system] --get section.key` - 删除一个配置项:`git config [--local|--global|--system] --unset section.key` - 别名 - `git lg`:`git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"` - `git last`:`git config --global alias.last 'log -1'` - 远程版本提交信息修改 git rebase -i HEAD~n 修改为编辑模式e,保存退出:wq git commit --amend --author "xw " git rebase --continue git push -f