Git&Guthub学习路线
远程库、本地库、暂存区和工作区运作关系:
解释图中的名词:
- Workspace 工作区
- Index/Stage 暂存区
- Repository 本地库
- Remote 远程库
常用Git命令总结
一、 本地库操作
1.设置签名:
1.1项目级别/仓库级别:仅在当前本地库范围内有效
git config user.name [name]
git config user.email [email]
1.2系统用户级别:登录当前操作系统的用户范围
git config –global user.name [name]
git config –global user.name [name]
1.3查看当前用户签名
cat ~/.gitconfig //~/.gitconfig为信息保存位置
1.4签名优先级:项目级别>系统用户级别(如果只有系统用户级别,就以系统用户级别为准,但是二者都没有是不允许的)
2.新建本地库
2.1在自己电脑里找到自己所要上传的文件夹,右键Git Bash here:
git init //此时文件夹内会生成.git的一个隐藏文件
2.2在git bash中修改文件内容
vim [文件名] //vim编辑器操作:按“i”进行编辑;按“ESC”退出;输入“:wq”完成写入退出
2.3将工作区的文件添加到暂存区(添加)
git add [文件名] //添加单个文件
git add -A //添加所有变化
git add -u //添加被修改和倍删除文件,不包括新文件
git add . //添加新文件和被修改的文件,但不包括被删除的文件
2.4撤销
git checkout [文件名] //恢复暂存区的指定文件到工作区
git checkout . //恢复暂存区的所有文件到工作区
2.5删除
git rm [文件名1] [文件名2] ... //删除工作区文件,并且将这次删除放入暂存区
git mv [原文件名] [修改后的文件名] //改名文件,并且将这个改名放入暂存区
2.6将暂存区的文件提交到本地库(提交)
git commit [文件名] //回车后将进入vim编写注释
git commit -m “注释” [文件名] //可以不用进入vim直接写注释
git commit --amend -m [message] //使用一次新的commit,替代上一次提交,如果代码没有任何新变化,则用来改写上一次commit的提交信息
git commit --amend [文件名] [文件名] ... //重做上一次commit,并包括指定文件的新变化
2.7查看历史记录
(多屏显示控制方式:空格向下翻页;b向上翻页;q退出)
git log //查看完整历史记录
git log --pretty=oneline //以行为单位显示信息
git log –oneline //每一行显示一项记录,并只显示一部分hash值
git reflog //显示当前分支的最近几次提交,并显示指针的指向
2.8查看状态信息,比较文件差异
git status //查看工作区、暂存区状态
git diff //显示暂存区和工作区的差异
git diff [文件名] //将工作区中的文件和暂存区进行比较
git diff [本地库中历史版本] [文件名] //将工作区文件和历史记录比较
git diff --cached [file] //显示暂存区和上一个commit的差异
git diff HEAD //显示工作区与当前分支最新commit之间的差异
2.9版本的前进和后退
git reset --hard [局部索引值] //回退到指定的版本,删除操作已经提交到本地库,则指针指向历史记录;删除操作尚未提交到本地库,则指针位置使用HEAD
git reset --hard HEAD^ //只能后退,一个^表示后退一步,n个表示后退n步
git reset --hard HEAD~n //表示后退n步
2.10分支操作
git branch [分支名] //创建分支
git branch -v //查看分支
git branch -r //查看远程所有分支
git checkout [分支名] //切换分支
git branch [branch] [commit] //创建分支并指向commit
git branch --track [分支名] [远程分支名] //新建一个分支,与指定的远程分支建立追踪关系
git branch --set-upstream-to=[远程库名/远程分支名] [本地分支名] //本地分支关联远程分支
git merge [指定分支名] //合并指定分支到当前分支
git branch -d [分支名] //删除分支
2.11解决上库冲突
第一步:编辑文件,删除特殊符号(vim [文件名])
第二步:把文件修改好,保存退出(wq)
第三步:git add [文件名]
第四步:git commit -m “注释” (此时commit不能带具体文件名)
二、远程库操作
1.1创建和查看远程库
git remote -v //查看当前所有远程库地址别名
git remote add [远程库别名] [远程库URL] //关联远程库给远程库起别名
1.2克隆远程库
git clone [远程库URL] //将远程库内容克隆到本地库
1.3远程同步
git fetch [远程库别名] //下载远程库的所有变动
git fetch [远程库别名] [远程分支名] // 指定分支名,取回特定分支的更新
git log -p FETCH_HEAD //取回更新后会返回一个FETCH_HEAD,指的是某个分支在服务器上的最新状态,我们可以在本地通过它查看刚取回的信息
git merge [远程库别名/远程分支名] //将远程分支合并到当前分支
git pull [远程库别名] [远程分支名] //取回远程库的变化,并与本地分支合并
git pull [远程库别名] [本地分支名]:[远程分支名] //如果本地当前是在与远程分支不同名的分支上,想要将远程分支与当前不同名的分支合并(merge),可以使用如下命令
git pull master//将远程仓库的master分支合并下来。如果本地没有master分支,那么本地就新建一个master分支
git push [远程库别名] [本地分支名] //将当前分支提交到远程库上,如果远程库上没有这个分支,则会在远程库上新建一个该分支
git push [远程库别名] [本地分支名]:[远程分支名] //指定当前分支提交到远程库的某个分支上