Git是什么
Git的强大功能在于我们可以将工作区的工作内容添加到暂存区再提交到版本库,版本库存有提交过的所有文件,以便跟踪文件的修改删除,拯救工作区的误操作,远程仓库github则被利用与团队合作。
如上图所示,如果我们想在本地建立一个版本库就要先0.下载一个版本控制软件git bush并安装,然后我们就可以将新建的文件下1.创建一个版本库来管理我们的文件了,创建完毕后我们必须将我们的1.文件提交到本地仓库嘛,一旦文件提交本地仓库,本地仓库就有了第一次提交的版本,那么当我们在工作区多次进行文件的改动并且每一次都提交到本地仓库,本地仓库就有了多个版本的内容(如上图的123版本),而版本库提供了多种操作比如3.撤销工作区的错误删除,版本回退等,使你可以轻松地回到以前,git还提供了多分支管理,比如团队合作中你开发功能1,你的队友开发功能2,那么你可以通过创建属于自己的分支,在你开发的过程中提交到自己新建的分支而不影响队友的工作。
1.创建版本库及提交文件的例子
1. mkdir learngit //创建名为learngit的空仓库 2. cd learngit //转到learngit目录下 3. pwd //查看当前目录路径 4. git init // 把这个目录变成git可以管理的仓库
5. 在目录下手动创建1.txt文件
6. git add 1.txt //将1.txt 文件添加到仓库
7. git commit –m “first add 1.txt” //将文件提交到仓库
2.修改文件后查看修改内容并提交
1. git status //查看仓库当前状态
2. git diff 1.txt //查看修改的具体内容
3. git add 1.txt //添加修改过的文件
4. git commit –m “add a word hello” //提交修改过的文件
5. git push origin master
注意:在commit时可能出现文件提交不上仓库的例子
.git目录下index.lock文件锁住了index文件导致commit指令不可用,根据上图提示,将index.lock文件删除掉再运行一次commit指令就行(删除后不影响git的使用)
3.撤销修改
git checkout – 1.txt //撤销在工作区的修改(解决工作区误删误修改问题)
4.删除文件
1.在工作区删除
2.git rm 2.txt //在版本库中删除2.txt
3.git commit –m “delete 2.txt”
5.执行git status后的提示
1.文件还未被添加到版本库
2.文件被修改了,但还未准备提交(还未add)
3.文件准备被提交,将要被提交的文件包括1.txt
4.没有文件需要被提交
5. 文件在工作区被删除,版本库与工作区不一致
6.版本回退
从当前最新版本回退到以前的版本
1. git log //查看所有版本
2. git reset --hard HEAD^ //回到上一个版本
git reset --hard HEAD^^ //回到上上个版本
git reset --hard HEAD~100//回到上100个版本
--hard回退一个版本,不清空暂存区,将已提交的内容恢复到暂存区,不影响原来本地的文件(未提交的也不受影响)
git reset --soft HEAD^
回退一个版本,清空暂存区,将已提交的内容的版本恢复到本地,本地的文件也将被恢复的版本替换
3. 回到穿越之前的版本(用回旧版本)
git reflog //通过查看历史指令获得版本的commit id
git reset –hard 9e3d9ed //回到commit id为9e3d9ed的版本
git diff HEAD -- 1.txt //查看版本库最新版本和工作区的1.txt文件内容的区别
7.成功推送到远程仓库的例子
1.git init //把这个目录变成git可以管理的仓库
2.git add –A //将目录下所有文件添加到仓库
3.git status //查看仓库状态
4.git commit –m “RENEW” //将目录下所有文件提交到仓库
5.git remote add origin git@github.com:jenniferzgh/123.git //将本地仓库和远程仓库关联
6.git push –u origin master //把本地库内容推送到远程仓库
从此以后本地库的所有修改可以通过git push origin master提交到远程仓库github
关联仓库git remote add origin 出现remote origin already exists
解决方法git remote rm origin
8.成功下载并安装运行的例子
1. git clone https://github.com/cucygh/es6-webpack.git
2. cd es6-webpack.git //切换目录到es6-webpack.git下
3. npm install
4. npm start
9. 创建新分支,将修改的文件提交到新分支,合并到master分支,删除新分支
1. git checkout –b dev //创建并切换到新分支
2. git branch //查看当前分支
3. 将1.txt里内容”Git is a…”改成”first commit to dev”
4. git add 1.txt //将修改后的1.txt添加到dev分支
5. git commit –m “add to dev” //将修改后的1.txt提交到dev分支
6. git checkout master //切换回master分支
7. git margin dev //把dev分支的工作成果合并到master分支
8. git branch –dev //删除dev分支
10 合并冲突及其解决方法
1. 在1.txt中修改冲突的内容
2. git add 1.txt //将修改后的文件添加到合并分支
3. git commit –m “change for commit” //将修改后的文件提交到合并分支
4. git branch –d dev //删除分支
11.将手头上的分支任务搁置(有未commit项),新建紧急分支
1. git stash //将bug1分支工作现场储存到stash
2. git stash pop //将bug1分支回复并且删除stash
12.强行删除分支
git branch –D bug2 //强行删除bug2分支
13.多人协作
1.git remote//查看远程仓库信息
git remote -v//查看远程仓库详细信息
5. git clone https://github.com/jenniferzgh/XXXXX //将项目下载到本地(只含master主分支)
2.git checkout –b dev origin/dev //创建远程的dev分支到本地
2.git push origin dev //推送分支
999注意事项
文件不能用中文名
平行分支不能互相切换
Commit时要加提示信息
如果要创建闭源项目,自行了解git服务器创建
指令关键词 | 例子 | 含义 |
init | git init | 把这个目录变成git可以管理的仓库(版本库) |
add | git add 1.txt | 将文件添加到本地仓库 |
commit –m | git commit –m “XXX” | 将文件提交到本地仓库 |
status | git status | 查看本地仓库当前状态 |
remote | git remote | 查看远程仓库信息 |
remote -v | git remote -v | 查看远程仓库详细信息 |
diff | git diff 1.txt | 查看修改的具体内容 |
checkout | git checkout – 1.txt | 撤销在工作区的修改 |
rm | git rm 1.txt | 在版本库中删除 |
log | git log | 查看所有版本 |
reset –hard | git reset –hard head^ | 版本回退 |
reflog | git reflog | 查看历史指令 |
diff | git diff HEAD -- 1.txt | 查看版本库最新版本和工作区的1.txt文件内容的区别 |
remote add origin | git remote add origin | 将本地仓库和远程仓库关联
|
push –u origin | git push –u origin master | 首次把本地库推送到远程仓库 |
push origin | git push origin master | 把本地库推送到远程仓库 |
clone | git clone | 从远程仓库克隆 |
checkout –b | git checkout –b dev | 创建并切换新分支 |
checkout –b | git checkout –b dev origin/dev | 创建远程的dev分支到本地 |
branch | git branch | 查看当前分支 |
branch – | git branch – dev | 删除分支 |
branch –D | git branch –D bug2 | 强行删除bug2分支 |
checkout | git checkout master | 切换到master分支 |
margin | git margin dev | 把dev分支合并到当前分支 |
stash | git stash | 存储当前分支 |
stash pop | git stash pop | 恢复当前分支 |