一、基础概念
1. Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目
2. 在 https://git-for-windows.github.io 下载安装
3. git工作的一般流程
1)克隆Git资源作为工作目录
2)在克隆的资源上添加或修改文件
3)如果其他人修改了,你可以更新资源
4)在提交前查看修改
5)提交修改
6)在修改完成后,如果发现错误,可以撤回提交并在此修改并提交
二、关联github
1. 创建ssh key, 先下载git客户端,执行命令$ ssh-keygen -t rsa -C "415340216@qq.com",用户目录下会生成.ssh文件,里面有id_rsa是私钥,id_rsa.pub是公钥
2. 在github上打开settings,点ssh Keys,点击New SSH key, key值为id_rsa.pub(公钥)里面的内容
3. 测试ssh key是否成功,使用命令“ssh -T git@github.com”,如果出现You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github
4. 从github上复制一个参考到本地,要先git init(先初始化,使该文件夹属于git管理), 然后命令:$ git clone git@github.com:Streamhu/gitLearn
5. 本地空仓库要git init初始化,这样才会有.git文件,才能做git的相关操作
6. 远程关联github仓库,命令:git remote add origin git@github.com:Streamhu/env-build
7. 查看关联的远程仓库,命令: git remote -v
8. 提交文件到github的步骤
1) git add . (将改动添加到暂存区)
2) git commit -m "提交说明"
3) git log (查看提交记录)
4) git push origin master (将本地更改推送到远程master分支)
(遇到! [rejected] master -> master (fetch first)error: failed to push some refs to 'git@github.com:Streamhu/env-build' 可能是有冲突,执行指令:git pull --rebase origin master,然后再 git push -u origin master)
9. 有关用户名和邮箱地址的指令:
1) 查看用户名 git config user.name
2)查看邮箱 git config user.email
3) 修改用户名 git config --global user.name "username"
4) 修改邮箱 git config --global user.email "email"
三、git常用命令
1. 新建代码库
1)git init 把这个目录变成Git可以管理的仓库,当前目录下多了一个.git的目录(.git就是用来版本控制的,即版本库)
2)git init [project-name] 新建一个目录,将其初始化为Git代码库
3)git clone [url] 从远程库克隆,下载一个项目和它的整个代码历史
2. 配置(Git的设置文件为.gitconfig)
1)git config --list 显示当前的Git配置
2)git config -e [--global] 编辑Git配置文件
3)git config [--global] user.name "[name]" 设置提交代码时的用户信息
git config [--global] user.email "[email address]"
3. 增加/删除文件
1)git add [file1] [file2] ... 添加指定文件到暂存区
2)git add [dir] 添加指定目录到暂存区,包括子目录
3)git add . 添加当前目录的所有文件到暂存区
4)git add -p 添加每个变化前,都会要求确认,对于同一个文件的多处变化,可以实现分次提交
5) git rm [file1] [file2]... 删除工作区文件,并且将这次删除放入暂存区
6) git rm --cached [fiel] 停止追踪指定文件,但该文件会保留在工作区
7) git mv [file-original] [file-renamed] 改名文件,并且将这个改名放入暂存区
4. 代码提交
1)git commit -m [message] 提交暂存区到仓库区
2) git commit [file1] [file2] ... -m [message] 提交暂存区的指定文件到仓库区
3) git commit -a 提交工作区自上次commit之后的变化,直接到仓库区
4) git commit -v 提交时显示所有diff信息
5. 查看信息
1)git status 可以让我们时刻掌握仓库当前的状态
(1)Changes not staged for commit 只在本地修改了,没有add的
(2)Changes to be committed add了,没有commit的
2)git log(--pretty=oneline) 显示从最近到最远的提交日志,后面的参数限制log数目,(其他参数看参考网址)
3)git diff filename 显示暂存区和工作区的差异,显示的格式正是Unix通用的diff格式
4) git show [commit] 显示某次提交的元数据和内容变化
5) git reflog 显示当前分支的最近几次提交
6. 远程同步
1) git remote add [shortname] [url] 增加一个新的远程仓库,并命名
2) git remote -v 显示所有远程仓库
3) git remote show [remote] 显示某个远程仓库的信息
4) git fetch [remote] 下载远程仓库的所有变动(仅仅是下载,还要看下远程下载和本地的差别,git log -p master origin,然后把远程的合并过来 git merge origin, 它的这些操作才相当于下面的pull,所以一般用pull)
5) git pull [remote] [branch] 取回远程仓库的变化,并与本地分支合并
6) git push [remote] [branch] 上传本地指定分支到远程仓库
7) git push [remote] --force 强行推送当前分支到远程仓库,即使有冲突
8) git push [remote] --all 推送所有分支到远程仓库
7. 撤销
1)git reset filename 撤回文件工作区到暂存区的修改,即撤回add的操作
2)git reset --hard HEAD^ 撤回commit到上一次提交的时候(即回退到提交前,同时还要从暂存区回退到工作区,就是暂存区和工作区都要改变,慎重,代码可能全丢失了)
3)git reset --hard commitID 置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
4) git checkout -- filename 撤回某文件工作区的修改(意思就是本地修改的代码没了)
5) git checkout . 撤回工作区所有文件的修改
8. 分支
1)git branch 列出所有本地分支
2) git branch -r 列出所有远程分支
3) git branch -a 列出所有本地分支和远程分支
4) git branch [branch-name] 新建一个分支,但依然停留在当前分支
5) git checkout -b [branch] 新建一个分支,并切换到该分支
6) git checkout [branch-name] 切换到指定分支,并更新工作区
7) git checkout - 切换到上一个分支
8) git branch --track [branch] [remote-branch] 新建一个分支,与指定的远程分支建立追踪关系
9) git merge [branch] 合并指定分支到当前分支
10)git branch -d [branch] 删除分支
11)git push origin --delete [branch-name] 删除远程分支
git branch -dr [remote/branch]
12) git push origin branch_name 本地新建git分支推送到远程
13)git branch -vv 查看本地分支关联的远程分支
9. 标签(标签也是版本库的一个快照,一般是给commit id打标签,版本)
1) git tag 列出所有tag
2) git tag [tag-name] 新建一个tag在当前commit
3) git tag [tag-name] [commit id] 新建一个tag在指定commit id
4) git tag -d [tag-name] 删除本地tag
5) git push origin --delete tag <tagname> 删除远程tag
6) git show [tag-name] 查看tag信息
7) git push [remote] [tag-name] 提交指定tag
8) git push [remote] --tags 提交所有tag
9) git checkout -b [branch-name] [tag-name] 新建一个分支,指向某个tag
10. 其他
1)git archive 生成一个可供发布的压缩包
参考网址
GitHub入门:各种概念、图解页面信息(都是知识点啊小伙伴们)
注:文章是经过参考其他的文章然后自己整理出来的,有可能是小部分参考,也有可能是大部分参考,但绝对不是直接转载,觉得侵权了我会删,我只是把这个用于自己的笔记,顺便整理下知识的同时,能帮到一部分人。
ps : 有错误的还望各位大佬指正,小弟不胜感激