git入门及命令行使用---git ? 盘他!
git作为现在世界上最先(NIU)进(B)的分布式版本管理器,今天我们就来盘一盘具体的入门,以及作为一些小白运维,如何在和开发沟通的时候,不被他们的 “高级” 概念忽悠,话不多说,上图先:
话不多说,上干货:
基础概念:
1:Workspace:工作区(你自己本地电脑上代码的目录)
2:Index / Stage:暂存区
3:Repository:仓库区(本地仓库,无网络连接远程仓库的时候把代码提交到这里)
4:Remote:远程仓库
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上,每个人的电脑都有一个完整的版本库,比如说自己在电脑上改了文件X,其他人也在电脑上改了文件X,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
Git命令行:
1:把这个目录变成git可以管理的仓库
mkdir example
cd example
git init
2:将代码添加到暂存区里(index)面去
git add test.py
3:用命令 git commit告诉Git,把文件提交到仓库
git commit -m "这是一个注释,嘻嘻!"
4:已经提交了一个test.py文件了,我们下面可以通过命令git status来查看是否还有文件未提交
git status
"回显 nothing to commit表示提交完毕"
5:我想看下readme.txt文件到底改了什么内容,如何查看呢?
git diff test.py
6:现在想查看下历史记录,如何查呢?
git log
7:版本回退
回退到上一个版本
git reset --head HEAD^
回退到倒数第二个版本
git reset --head HEAD^^
回退到倒数第100个版本
git reset --hard HEAD~100
8:获取到版本号
git reflog
回显第一列为版本号,最后一列为描述
9:回退到某个版本号
git reset --hard 版本号
版本号为8所查出来的第一列
10:git撤销修改和删除文件
git checkout -- file 可以丢弃工作区的修改,如下命令:
git checkout -- test.py
git checkout --readme.txt 意思就是,把readme.txt文件在工作区做的修改全部撤销,这里有2种情况,如下:
1.readme.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态。
2.另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态
注意:命令git checkout -- readme.txt 中的 -- 很重要,如果没有 -- 的话,那么命令变成创建分支了
11:创建分支
git branch 分支名
12:删除分支
删除分支: $ git branch -d 分支名
删除分支:git branch -D 分支名(不管它有没有merge)
ps: 前提是先要切换到其他分支,否则报错
error: The branch '0101' is not fully merged.
If you are sure you want to delete it, run 'git branch -D 0101'.
13:git push命令用于将本地分支的更新,推送到远程主机
git push <远程主机名> <本地分支名>:<远程分支名>
git stash用法
1:git stash
保存所有未提交的修改,用于后续恢复workspace
2: git stash save "stashname"
给每个stash加一个tag,用于记录版本
3:git stash pop / git stash apply
恢复最新缓存的工作目录(第一个),并删除缓存堆栈中的那一个stash删除(pop), apply则只恢复不删除
4:git stash list
查看现有所有stash
在使用git stash pop(apply)命令时可以通过名字指定使用哪个stash,默认使用最近的stash(即[email protected]{0})
5:git stash drop
移除最新的stash,后面也可以跟指定stash的名字
git checkout切换分支
1: git checkout -b newBranchName
Switched to a new branch 'newBranchName'
这相当于执行下面这两条命令:
git branch newBranchName
git checkout newBranchName(工作区一定要是clean的)
2: git checkout -b newBranchName remote_branch_name
拉取远程分支remote_branch_name创建一个本地分支newBranchName,并切到本地分支newBranchName,采用此种方法建立的本地分支会和远程分支建立映射关系。
git checkout 回退修改
git checkout -- fileName
这条命令把fileName从当前HEAD中检出,也就是回退当前工作区的这个文件的修改
--可以省略不写
如果需要回退工作区的全部文件修改,可以使用:
git checkout --hard HEAD
而不需要对每个文件进行checkout
git revert
反转提交, 撤销一个提交的同时会创建一个新的提交,也就是用一个新提交来消除一个历史提交所做的任何修改.
git revert commit-id revert指定的一个commit
git revert HEAD~3 revert指定倒数第四个commit
revert过程有可能遇到冲突,要么git revert --abort终止此次revert操作,代码还原至revert命令前。要么手动消除冲突(同普通的冲突解决),然后add commit