基础操作
***初始化GIT仓库:
git init
***身份配置:
git config --global user.name "您的名字"
git config --global user.email "您的邮箱"
***创建一个新仓库:
mkdir learngit
***进入到仓库目录:
cd learngit
***查看目录路径:
pwd
***添加文件到Git仓库(可多次添加):
git add
***添加文件时的备注信息:
git commit -m "备注信息"
***文件修改过之后查看当前仓库状态:
git status
***文件修改过如果要查看具体修改过什么内容(显示差异):
git diff 文件名
版本回退
***查看提交的历史记录:
git log
命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL
,上一次是add distributed
,最早的一次是wrote a readme file,也可以通过提交的时间来查看。
***如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline
参数:
提示:这里看到的一长串数字就是类似f4a6761c4....就是commit id(版本号)
***如果要把当前版本回退到上一个版本:
git reset --hard HEAD^
***查看具体版本内容是否是上一个版本:
cat 文件名
注意:HEAD表示当前版本,上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100。
***当版本回退成功之后还想找回之前的版本(只要命令行未关闭,然后找到之前版本的commit id,这个时候就可以回到之前的版本了):
git reset --hard f4a67
版本没必要写全,前几位就可以了。
版本回退图,只需要切换HEAD的指针即可:
***现在,如果说你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id
怎么办?
Git提供了一个命令git reflog
用来记录你的每一次命令:
找到了commit id,这个时候就可以找到之前的版本了。
修改管理
***查看工作区和版本库最新版本的区别:
git diff HEAD -- aaa.txt
***丢弃工作区的修改(在文件未添加的情况下,需要将工作区的全部修改撤销)/另外在删错文件的情况下(版本库里还存在此文件,需要把误删的文件恢复到最新版本):
git checkout -- aaa.txt
***也可以通过git reset HEAD 可以把暂存区的修改撤销掉,重新放回工作区(git reset不光可以回退版本,也可以把暂存区的修改回退到工作区,我们用HEAD时,表示最新的版本)
git reset HEAD
删除文件
***删除工作区的文件:
rm aaa.txt
***删除版本库的文件:(记得删除之后commit提交文件)
git rm aaa.txt
远程分支跟踪(否则每次提交都必须要指定想要push或者pull的远程分支(例如):git push origin new )
git branch --set-upstream-to=origin/远程分支的名字 本地分支的名字
远程仓库
***克隆到本地(如果说别人仓库的项目,需要克隆到自己仓库,点击“Fork”即可。):
git clone git@github.com:michaelliao/gitskills.git
Git支持多种协议,包括https,ssh,使用https速度较慢,而且每次推送都需要输入口令;默认使用ssh.
分支管理
***创建分支(创建分支:git branch 分支名----切换分支:git checkout 分支名):
git checkout -b dev
***分支上传:
git push origin dev
***查看分支:
git branch
***查看全部分支(远程和本地的):
git branch -a
***分支切换:
git checkout master
***合并分支(Fast-forward:快捷合并):
git merge dev
***删除本地分支:
git branch -d dev
***删除远程分支:
git push --delete origin dev
***查看分支合并图(git log --graph --pretty=oneline --abbrev-commit简洁版):
git log --graph
***准备合并dev分支,请注意--no-ff参数,表示禁用Fast forward:
git merge --no-ff -m "merge with no-ff" dev
***更新远程分支
git fetch
***查看远程分支
git branch -r
***查看本地分支
git branch -l
因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去;加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
※ bug分支