对于git
的使用,看廖雪峰老师的足矣,下面仅仅个人笔录
一. 创建本地版本库(项目变成Git可以管理的仓库)
git init
二. 将文件添加并提交到本地仓库
先输入git status
查看状态
git status
//下面是输入git status显示内容
-------------------------------------------------------------------------
D:\2018PersonProject\RxProject>git status
On branch master
nothing to commit, working tree clean
-------------------------------------------------------------------------
如果是上面状态,说明你已经提交过并且本地未修改,否则需要add并commit
git add file1.txt
//若提交多个文件,可以写成
//git add file2.txt
//git add file3.txt
//也可写成
//git add file2.txt file3.txt
//若提交所有文件
//git add .
git commit -m "提交的说明"
三. 本地库版本回退
- 当你改乱了工作区某文件,想直接丢弃工作区的修改时,用命令
git checkout -- 文件名
git checkout -- 文件名
//注意不能缺少 -- 而输成 git checkout 文件名
- 当你不但改乱了工作区某文件,还添加到了暂存区,想丢弃修改分两步,第一步:
git reset HEAD 文件名
,就回到了场景1,第二步:按场景1操作
git reset HEAD 文件名
git checkout -- 文件名
//当用HEAD时,表示最新的版本
- 本地版本回退(当你不但改乱了工作区某文件,还添加到了暂存区,而且还提交到了本地库)
既然要回退到之前的某个版本,我们需要用git log命令查看:
git log
//下面为显示的你的版本
-------------------------------------------------------------------------
commit 62d0964827fcc6e1db6a6c69e12a73c3cdfefe52
Author: [email protected]
Date: Thu Jul 19 11:53:35 2018 +0800
11:53 use to test back
commit 0441dcfcc96157699e006389a13dd87889fc3553
Author: [email protected]
Date: Thu Jul 19 10:41:35 2018 +0800
test commit RxProject first
-------------------------------------------------------------------------
如果你要回退到上面0441dcfcc96157699e006389a13dd87889fc3553
版本,输入
git reset --hard 0441dc
//只需要输入 0441dcfcc96157699e006389a13dd87889fc3553 这一串中前几个即可
- 回退后再次恢复到回退前的最新版本
在你回退到之前版本后,突然后悔了想再次回到回退前的最新版本,这时候你输入git log
git log
//下面为输入git log后显示的
-------------------------------------------------------------------------
D:\2018PersonProject\RxProject>git log
commit 0441dcfcc96157699e006389a13dd87889fc3553
Author: [email protected] <[email protected]>
Date: Thu Jul 19 10:41:35 2018 +0800
test commit RxProject first
-------------------------------------------------------------------------
可以看到没有最新的62d0964827fcc6e1db6a6c69e12a73c3cdfefe52
版本,这是因为这个时候查询最新的版本输入应该为git reflog
git reflog
//下面为输入git reflog后显示的
-------------------------------------------------------------------------
0441dcf HEAD@{0}: reset: moving to 0441
62d0964 HEAD@{1}: commit: 11:53 use to test back
0441dcf HEAD@{2}: commit (initial): test commit RxProject first
-------------------------------------------------------------------------
可以看到,62d0964
就是回退前的最新版本,这时候输入git reset --hard 62d0964
即可回到回退前最新版本
四. 把本地项目推送到远程
- 本地和远程建立关联
git remote add origin https://github.com/你的账户名/你的远程项目名.git
- 把本地库所有内容推送到远程库
git push -u origin master
//第一次推送master分支时,加上-u参数,后面本地推送到远程库只需要 git push origin master
五. 拉取远程库到本地
git clone 项目地址路径
六. git分支管理(下面的dev为取的分支名)
- 查看分支
//查看本地分支(进入到项目根目录,打开终端,输入指令,将会显示该项目本地全部分支,当前分支前面有*号)
git branch
//查看远程分支
git branch -r
//查看所有分支(包括本地+远程分支)
git branch -a
- 新建并切换到dev分支
git checkout -b dev
- 切换到dev分支(dev分支已存在)
git checkout dev
- 在提交到远程之前先拉取远程代码(防止别人提交了然后你的代码覆盖别人写的)
git pull
//git pull在git add . 和git commit -m "提交内容"之后,在git push origin dev之前,如果有冲突合并冲突再提交
- 将新建的本地分支push到远程
git push origin dev
//或 git push --set-upstream origin dev
- 删除本地分支(-D强行删除)
git branch -D dev
- 删除远程分支
git push origin :dev//注意冒号前面的空格不能少,相当于把一个空分支push到server,等于删除该分支
//git branch -r -d origin/dev 注意这个只是删除本地索引,不是真正删除远程分支,要想真正删除远程分支用上面的
- 合并某分支到当前分支
//合并dev分支到master
git merge dev
//git log --graph --pretty=oneline --abbrev-commit 用来查看分之合并图
上面合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快,如果出现冲突必须先解决冲突再提交,然后删除dev分支。
缺点:这种模式下,删除分支后会丢掉分支信息
如果用下面这种强制禁用Fast forward
模式,Git
就会在merge
时生成一个新的commit,这样从分支历史上就可以看出分支信息
git merge --no-ff -m "merge with no-ff" dev
- bug分支
当你在dev分支努力开发时,突然领导说用户反馈线上出现了一个重大bug需要立即修复并上线。这个时候dev分支开发到一半还没发提交,这个时候你可以用git stash
把当前工作现场“储藏”起来,等后面另开的分支把bug修复好用git stash pop
继续工作
//储藏
git stash
//查看工作现场存到哪去了
git stash list
//恢复
git stash pop
七. git 标签使用(创建的标签都只存储在本地,不会自动推送到远程)
- 查看所有标签记录
git tag
2.打标签
git tag v1.0.1
//在使用git tag v1.0.1之前先切换(git checkout master)到需要打标签的分支上
- 补打以前忘了但需要打的标签
先查看历史提交的commit id记录,然后把需要的打上标签;eg:commit id为131c154
git log --pretty=oneline --abbrev-commit
//下面为显示内容
-------------------------------------------------------------------------
7b3e111 commit master test
131c154 commit dev to test conflicts
-------------------------------------------------------------------------
git tag v0.0.9 131c154
还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:
git tag -a v0.1 -m "你的说明内容" 131c154
- 查看标签信息
git show v1.0.1
- 删除本地标签
git tag -d v1.0.1
//删除远程标签
//git push origin :refs/tags/v1.0.1
- 推送本地标签到远程
git push origin v1.0.1
//推送全部未推送过的本地标签
git push origin --tags
八. 查看项目远程地址
git remote -v
遇到的问题
Another git process seems to be running in this repository, e.g.
an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.