目录
本文偏向于个人知识备用。
由于之前编程常常单打独斗,且没有大的项目经验,往往是复制文件备份管理版本。这次决心整理git相关知识,让自己也融入团队开发当中。
本文内容来自https://www.bilibili.com/video/BV1VK4y1e7z 和廖雪峰的教程https://www.liaoxuefeng.com/wiki/896043488029600/
如果要学习git直接去廖雪峰老师的教程好了!
下载地址
文档地址
https://git-scm.com/book/zh/v2
里面含有pdf的下载链接,方便局域网使用,如果你想要系统的学习git,没什么比官网教程更好的选择了。之后的只会记录常用的操作,如果又其他需求,请移步官网文档。
常用指令
获取帮助
git --help
git --help [command]
初始化
git init
此时会在当前目录的文件夹中创建.git文件
git init <dir_name>
在当前目录下创建一个git文件夹(更加常用)
查看状态
git status
在使用git的过程中我 们经常会用此命令查看编程情况
添加版本追踪
git add <file_name>
对单个文件
git add <file_name1 file_name2 file_name3....>
对多个文件
git commit
git add .
对全部文件
提交
每次有更改就要add commit
git commit
提交全部,同时进入输入差异的地方
git commit -m ‘message’
提交,messgea即为输入的信息
git commit -am 'message'
等价于git add + git commmit,但只能对已经被add过的文件使用
log追踪
git log
查看commit历史
git log -p -[\d]
最近几次的地址
查看差异
git diff <file_name>
版本回退
git reset --hard HEAD^
退回到上一个版本
“上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100”
git reset --hard <版本号>
版本号的获取是从git log 中得到的
git reflog
记录每一次的命令和版本号(版本号的获取)
撤销修改
git checkout --<filename>
丢弃工作区的修改
一种是readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
git reset HEAD <file>
把add但没有commit的文件回复到修改但没有add的时候,再使用CHECKOUT --FILE完全恢复
删除文件
git rm <file_name>
从版本库中删除,之后commit即可
手动删除文件后,add 和 rm命令可互换
远程仓库上的操作
ssh-keygen -t rsa -C "youremail@example.com"
生成sshkey,在github中的Account Settiing中配置
本地库关联远程库
git remote add origin https://github.com/<gitusername>/<reoname.git>
git branch -M main
git push -u origin main
通过git push -u 建立关联后,之后直接git push 即可
git push <remote_name> <branch_name>
推送到远程的某一分支
删除本地与远程库的关联
git remote rm <name>
查看本地于远程库的关联
git remote -v
从远程库克隆到本地
git clone https://github.com/<githubusername>/<repo.git>
最后的参数在github的对应项目中可以很方便的看到‘
获取远程最新代码,解决冲突常用此命令
git pull
如果git pull
提示no tracking information
,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
。
分支相关
查看所有分支
git branch
查看分支 当前分支前面会标一个*
号。‘
创建分支
git branch <branch_name>
切换分支
git checkout <branch_name>
git switch <branch_name>
switch 是新版的语法,因为checkout在回退文件中也有
创建并切换分支
git checkout -b <branch_name>
git checkout -b <branch_name> <remote_name/branch_name>
默认clone只到master分支,需要获取远程的其他分支就必须使用上面的下侧的方法
git switch -c dev
合并分支
git merge <branch_name>
将其他分支合并到当前分支上,若有冲突,才merge后先修改再提交
git merge --no-ff -m "message" <branch_name>
给合并一个commit
删除分支
git branch -d <branch_name>
git branch -D <branch_name>
强制删除没有被合并过的分支
冻结分支
git stash
把当前工作现场“储藏”起来,并退回到上一次提交,等以后恢复现场后继续编写,常常再改写bug时使用。
查看冻结
git stash list
恢复冻结
git stash apply
删除冻结
git stash drop
恢复并删除
git stash pop
把提交的修改合并到当前分支
git cherry-pick <commit>
常用于bug的修复
标签
查看所有标签
git tag
给当前分支打标签
git tag <tag_name>
打有说明的标签
git tag -a <tag_name> -m <message> <commit_id>
给历史提交(Commit)打tag
git tag <tag_name> <commit_id>
查看tag信息
git show <tag_name>
推送一个本地标签;
git push origin <tagname>
推送全部未推送过的本地标签
git push origin --tags
删除一个本地标签
git tag -d <tagname>
删除一个本地标签
git push origin :refs/tags/<tagname>