Git Bash/Ubuntu Terminal快捷键
- 复制:
ctrl + insert
/shift + ctrl + c
- 粘贴:
shift + insert
/shift + ctrl + v
Git 命令
Git初始化与帮助
-
设置名字和邮箱
$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"
-
查看当前编辑者姓名和邮箱
$ git config user.name $ git config user.email
-
查看git工具版本
$ git version # or $ git --version
创建repository
-
创建空的Git仓库
-
缺省,初始分支名为master:
$ git init
-
指定初始分支名:
$ git init --initial-branch=<branch name> # e.g. $ git init --initial-branch=main
-
-
$ git add <fils>/<directory>
特殊:add所有文件
$ git add .
-
提交文件:(带说明)
$ git commit -m "commit instructions"
$ git add file1.txt $ git add file2.txt file3.txt $ git commit -m "add 3 files."
增删改查
-
查看仓库状态(是否有文件被修改未add,add后未commit;即工作区、暂存区、版本库间区别):
$ git status
-
查看工作区与暂存区的区别:
$ git diff
查看工作区和版本库的区别:
$ git diff HEAD -- file
-
git log
(查看commit历史信息)相关:-
基本命令(不带参数):
$ git log
-
commit在一行内显示:
$ git log --pretty=oneline # or $ git log --oneline
-
用图线展示branch历史:
$ git log --graph --pretty=oneline
-
缩短commit id:
$ git log --abbrev-commit
-
展示最新n次commit:
$ git log -n
-
-
查看输入的命令历史:(来确定要回到未来的哪个版本)
$ git reflog
-
回退与撤销
-
回退(版本库)版本——在committed(版本库)中切换:
-
HEAD:当前版本
-
HEAD^:上一个版本
-
HEAD^^:上上个版本
-
HEAD~100:上100个版本
回退上一个版本:
$ git reset --hard HEAD^
根据版本号回退到制定版本(包括"未来"的版本,下面1094a为版本号前5位):
$ git reset --hard 1094a
-
-
撤销工作区修改——从工作区回退到最近一次commit(版本库)或add(暂存区)的状态:
即直接丢弃工作区:(checkout还有其他用法:见下面恢复从版本库删除的某个文件)
$ git checkout -- file
或
$ git restore file
-
即丢弃暂存区,放回工作区(工作区可以进一步丢弃):
$ git reset HEAD file
或
$ git restore --staged file
-
-
$ git rm file $ git commit -m "message"
若在工作区误删某个文件,可以通过如下命令从版本库恢复到工作区:
$ git checkout -- file
或:
$ git restore file
远程仓库
预备工作
-
注:笔记中使用
SSH
协议,github还支持HTTP
协议。 -
准备工作步骤
本地库→远程仓库
-
首次将本地库push到远程库上:(在github中新建了
GitLearningNotes
这一repository)在本地对应仓库运行命令:
$ git remote add origin git@github.com:<github name>/<repository name>.git
e.g.:
$ git remote add origin git@github.com:normalLLer/GitLearningNotes.git $ git remote add origin git@gitlab.oo.buaa.edu.cn:oo_2022/pre_2022_2_20231198_pre2_task2.git
然后:
$ git push -u origin master
-
将本地库push到远程库origin:
-
格式一:(默认远程库分支名与本地分支名相同)
$ git push <remote name> <local branch name> $ git push origin master # 将本地当前分支push到origin库的master分支上
-
格式二:(重命名远程库分支名)
$ git push <remote name> <local branch name>:<remote branch name> # 将local-branch推送到remote并改名为remote-branch-name
-
注:可用
--force
参数强行push,但有风险!# e.g. $ git push --force javarepo main
-
远程仓库→本地库
-
从远程库克隆(首次):
# git clone <repo:local/SSH/HTTP> $ git clone git@github.com:<Github name>/<repository name>.git
-
获取远程仓库更新(但不与本地库合并):
$ git fetch <remote name>
-
(在fetch后)将其的某个分支与本地当前分支合并:
$ git merge <remote name>/<remote branch name>
-
以上两个命令的合并:
$ git pull <remote name> <remote branch name>:<local branch name> # or $ git pull <remote name> <remote branch name> # or $ git pull
-
退出合并:(恢复合并前状态)
$ git merge --abort
其它
-
查看远程库信息:
$ git remote # or $ git remote -v
-
删除远程库:(指解除本地库与远程库的绑定)
$ git remote rm name # e.g: $ git remote rm origin
-
删除远程库某个分支:
$ git push <remote name> --delete <remote branch name>> # e.g. $ git push origin --delete testbranch2
分支管理
-
创建分支:
$ git branch <name>
-
切换分支:
$ git checkout <name> # or $ git switch <name>
-
修改本地分支名:
$ git branch -m <old> <new> # e.g. $ git branch -m master main # 将master修改为main
-
创建并切换分支:
$ git checkout -b <name> # or $ git switch -c <name>
-
创建并将指定远程分支clone到本地:
$ git switch -c <local branch name> <remote name>/<remote branch name> # e.g. $ git switch -c localtest origin/testbranch
-
查看分支:
-
查看本地库分支:
$ git branch
-
查看远程库分支:
$ git branch -r
-
查看所有分支:
$ git branch -a
-
-
fast forward模式与name分支合并(合并后log中无分支名字):
$ git merge <name>
-
删除本地分支:
$ git branch -d <name>
-
在个
git log
后添加参数:$ git log --graph --pretty=oneline --abbrev-commit -n # --graph: 用ascii图表示分支合并历史 # --abbrev-commit: 缩写前面序号SHA (abbreviation n.缩写) # -n: 显示最新n条
-
普通模式合并分支(合并后log有分支名记录):
$ git merge --no-ff -m "annotation" <branch name>
-
将本地
lb
分支与远程rb
分支建立链接:$ git branch --set-upstream-to=<remote name>/<remote branch name> <local branch name> # e.g. $ git branch --set-upstream-to=origin/rb lb
Stash 相关
注:stash v. 藏
-
$ git stash # or add annotations by "save" $ git stash save "annotations"
-
恢复stash:
# 将缓存堆栈中的第一个stash弹出并删除 $ git stash pop
# 将缓存堆栈中的第一个stash输出但不删除 $ git stash apply # 输出制定stash $ git stash apply stash@{0} # e.g. 输出最新
# 删除stash $ git stash drop $ git stash drop stash@{0}
-
查看现有stash:
$ git stash list
标签相关
-
创建标签
$ git tag -a <tag name> -m "annotations" <commit id>
-
形式一:在最新commit创建tag
$ git tag <name> # e.g. $ git tag v1.0
-
形式二:在指定
commit id
创建tag$ git tag <name> <id> # e.g. $ git tag v1.1 f52c633
-
形式三:在指定
commit id
创建带有说明文字的tag$ git tag -a <tag name> -m "annotations" <commit id> # e.g. $ git tag -a v1.2 -m "create tag v1.2 in id:1094ab" 1094ab
-
-
查看标签列表:
$ git tag
-
查看tag具体说明:(tag说明文字、commit说明文字等)
$ git show <tag name>
-
$ git tag -d <tag name>
-
本地与远程仓库的相关信息交互
相关资料
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。