Git操作备忘

82 阅读2分钟

Git命令

基本参照廖雪峰Git做的记录,用于速查,欢迎补充。

基础命令

创建空目录
mkdir learnGit
cd learnGit
pwd //显示当前目录

没有那么git ^

git init  //git仓库初始化(在目标路径下创建master分支)
git add [filename1] [filename2] ...  //将文件添加至暂存区
git add .  //一次性添加路径下全部文件
git status  //查询仓库状态
git diff [filename]  //查询文件当前与上次的更改
git diff [HEAD~number]--[filename]  //查看工作区与版本库内最新版文件的区别
git commit -m "提示性信息"  //提交所有区文件,默认提交至"master"分支
git log  //查看提交记录
回退
git reset --hard HEAD^  //回退至上一版本

HEAD表示当前版本,HEAD^表示上一版本,HEAD^^倒数第二个版本,HEAD~100上100个版本

撤销回退
git reset --hard [commitID]  //仅需commitID的前几位供git自行查找

commitID可通过git log查看,对于清屏后的情况,可使用git reflog查看

撤销更改
git checkout -- [filename]  //丢弃上次修改,回退至最近一次git add或git commit时的状态

如果待修改文件已经进入暂存区,使用git reset HEAD <filename>可撤销,文件重新放回工作区,然后使用git checkout --[filename]彻底放弃本次修改

删除文件

常用rm [filename]但会收到git警告文件被删除。

从版本库中删除文件git rm [filename]git commit,注意使用-m填写删除文件的提示性信息。

误删文件,使用git checkout -- [filename]撤销

链接远程仓库

创建SSH Key,WIndows下打开Git Bash,键入ssh-keygen -t rsa -C "emali@exmaple.com"其中emali任意填写皆可,起辨认作用。

进入Windows用户主目录下的.ssh或直接使用指令$ open ~/.ssh,可发现私钥id_rsa,公钥id_rsa.pub,其中,公钥可随意传播。

进入Github的SSH设置,任意填写SSH标题,将id_rsa.pub中的文件拷贝到Key文本框,点击add key完成。

关联远程库
git remote add [originName] git@userName:repoName.git

若远程库已存在:

git remove -v
git remove [originName]
推送到远程
git push -u [originName] [currentBranch]

第一次推送 使用-u参数,关联本地/远程库,此后可省略。

删除远程库
git remote rm [originName]

解除本地/远程库关联

克隆远程库

git clone git@github.com:[repoName]

SSH传输协议最快

分支管理

创建分支

git branch dev  //创建dev分支
git checkout dev
Switched to branch 'dev'  //切换至dev

前两条语句相当于git checkout -b dev

合并分支
git merge dev  //合并指定分支到当前所在分支
git branch -d dev  //删除dev分支
git branch  //查看分支

创建新分支

并不推荐使用git checkout <branch>切换分支,推荐使用git switch <branch>,创建新分支并打开,使用switch -c <branchName

冲突解决

pass

标签管理

创建标签

git tag v1.0  //为当前所在分支最新commit版打标签
git tag v0.9 [commitID]  //对某一版本打标签
git tag  //查看所以标签
git show [tagName]  //查看某标签具体信息,包括[commitID,Data...]
git tag -a v1.0 -m "解释性文字" [commitId前几个字符]  //-a 指定标签名,-m指定说明文字
//a.k.a本标签带有说明,git show可见

操作标签

git tag -d v0.9  //删除标签
git push origin <tagname>  //推送标签到远程
git push origin --tags  //推送全部标签
git push origin :refs/tags/<tagname>  //删除远程标签,关于冒号作用:
//官方的解释:将冒号前面的空值推送到远程标签名,从而高效地删除它。
git push origin --delete ref/tags/$<tagname>  //另一种删除方法

参考

[1] 廖雪峰Git教程 史上最浅显易懂的Git教程!

为什么要编写这个教程?因为我在学习Git的过程中,买过书,也在网上Google了一堆Git相关的文章和教程,但令人失望的是,这些教程不是难得令人发指,就是简单得一笔带过,或者,只支离破碎地介绍Git的某几个命令,还有直接从Git手册粘贴帮助文档的,总之,初学者很难找到一个由浅入深,学完后能立刻上手的Git教程。 首先,本教程绝对面向初学者,没有接触过版本控制概念的读者也可以轻松入门,不必担心起步难度; 其次,本教程实用性超强,边学边练,一点也不觉得枯燥。而且,你所学的Git命令是“充分且必要”的,掌握了这些东西,你就可以通过Git轻松地完成你的工作。

[2] MIT公开课-The Missing Semester

[3] missing-semester-2020