This file is my note for git learning.
-
git init
-
git add <file>
-
git commit -m <message>
git add readme.md git commit -m "new readme.md files"
- 查看状态
git status
- 查看不同
git diff
- 查看日志
git log
orgit log --pretty=oneline
- 查看历史
git reflog
查看命令历史,以便确定要回到未来的哪个版本 - 版本回退
git reset -hard HEAD^
orgit reset -hard <commit id>
- 参数:
HEAD^
HEAD^^
HEAD~100
- 参数:
git checkout -- file
丢弃工作区的修改git reset HEAD <file>
撤销暂存区的修改,重新放回工作区- 删除文件
git rm <files>
- 创建SSH Key
ssh-keygen -t rsa -C "youremail@example.com"
- 注册 GitHub,添加 SSH Pub Key
- GitHub 新建 Repository learngit
- 关联远程Repository
git remote add origin git@github.com:username/learngit.git
- 推送
git push -u origin master
git clone
- 创建
dev
分支并切换到dev
分支:git checkout -b dev
- 等价于
git branch dev git checkout dev
git checkout master
git merge dev
- 删除dev分支:
git branch -d dev
- 查看分支
git branch
- 创建分支
git branch <name>
- 切换分支
git checkout <name>
或者git switch <name>
- 创建+切换分支
git checkout -b <name>
或者git switch -c <name>
- 合并某分支到当前分支
git merge <name>
- 删除分支
git branch -d <name>
git merge --no-ff -m "merge with no-ff" dev
git stash
“储藏”当前工作现场,git stash list
查看git stash apply
恢复,但stash内容并不删除,需要用git stash drop
来删除- 或者用
git stash pop
,恢复的同时把stash内容也删除了 cherry-pick
复制一个特定的提交到当前分支- 通过
git branch -D <name>
强行删除没有被合并过的分支 - 查看远程库信息
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 rebase
提交记录变成一条直线
git tag <name>
就可以打一个新标签git tag
查看所有标签- 为历史提交 commit 打标签,找到 commit id
git tag <name> ommit_id
git show <tagname>
查看标签信息git tag -a <tagname> -m "blablabla..."
指定标签信息- 删除标签
git tag -d <tagname>
- 标签都只存储在本地,不会自动推送到远程。如果要推送某个标签到远程,使用命令
git push origin <tagname>
- 一次性推送全部尚未推送到远程的本地标签
git push origin --tags
git tag -d <tagname>
删除一个本地标签git push origin :refs/tags/<tagname>
删除一个远程标签
- 忽略文件或文件夹,新建
.gitignore
文件,将不需要追踪的文件和文件夹写入 VSCode
配置git