工作区是创建的空目录,暂存区是空目录里面的 .git仓库,文件只有先被add到.git仓库,才能再被commit到master分支
总结所有命令如下:
1.自报家门:
$ git config --global user.name “Your Name”
$ git config --global user.email "email@example.com"
2.创建空目录 :
$ mkdir directoryName
$ cd directoryName【directoryName修改成目录名称】
$ pwd
3.将该目录变成Git可以管理的仓库: $ git init
4.将写好的并保存在该目录下的文件提交到暂存区:
$ git add fileName
【fileName修改成文件名称,例如readme.txt】
5 将提交到暂存区的文件提交到分支: $ git commit -m "explain this commit"
6 查看仓库当前的状态: $ git status
7 查看对文件具体修改的内容: $ git diff flieName
8 显示从最近到最远的提交日志: $ git log
9 显示简洁一点的从最近到最远的提交日志: $ git log --pretty=oneline
10 回退到上一个文件版本: $ git reset --hard HEAD^
11 回到任一版本:
$ git reset --hard commit_id【commit_id需要修改成文件提交时的版本号】
12 查看文件内容 : $ cat fileName
13 显示每一次命令: $ git reflog
14 查看工作区和版本库里面最新版本的区别: $ git diff HEAD – fileName
15 撤销工作区的修改: $ git checkout – fileName
16 撤销暂存区的修改: $ git reset HEAD fileName
17 删除工作区的文件: $ rm fileName
18 删除暂存区的文件: $ git rm fileName
远程库
19 创建SSH Key :
$ ssh-keygen -t rsa -C"youremail@example.com"
《引号里面例如:2026214922@qq.com》
20 关联远程库 :
$ git remote add origin git@github.com:yourAccount/fileName.git
《其中yourAcconut是你在github上面注册的账户,learngit是在github上面创建的仓库名》
【注意】使用此命令时先要进入到git可以管理的仓库即.git所在的目录下
查看远程库的信息:git remote -v
21 将本地库的内容推送到远程库 : $ git push -u origin master
22 从远程库克隆到本地库 : $ git clone git@github.com:yourAccount/fileName.git
分支管理
Git鼓励大量使用分支,在团队开发中应该充分应用。
合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
23 查看分支: git branch
24 创建分支: git branch branchName【其中的branchName是取得分支名】
25 切换分支: git checkout branchName
26 创建+切换分支: git checkout -b branchName
27 合并某分支到当前分支: git merge branchName
28.合并某分支到当前分支,加上–no-ff参数,表示禁用Fast forward:
git merge --no-ff -m “explain this merge” branchName
28 删除分支: git branch -d branchName
29 查看分支合并图: git log --graph
或者 git log --graph --pretty=oneline --abbrev-commit
修复文件Bug时
- 把当前工作现场“储藏”起来: git stash
- 显示存储的工作现场内容: git stash list
- 恢复工作现场:
git stash apply
git stash drop
或者用一步:git stash pop - 恢复指定的stash list内容: git stash apply stash@{0}
- 丢弃一个没有被合并过的分支,进行强行删除: git branch -D branchName
多人协作的工作模式步骤
35.首先推送自己的修改: git push origin branchName
36.如果推送失败,则因为远程分支比你的本地更新,就进行合并:
git merge branchName
35. 如果合并有冲突,则解决冲突:
git merge --no-ff -m “explain this merge” branchName
36. 并在本地提交,用add 和commit相关命令
37. 没有冲突或者解决掉冲突后再进行推送:git push origin branchName
38. 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建:git branch --set-upstream-to branchName origin/branchName
标签管理:
41.把本地未push的分叉提交历史 整理成直线: git rebase
42 用于新建一个标签,默认为当前版本HEAD贴标签,也可以指定一个commit id:
git tag tagName
或者 git tag tagName commit_id
43 创建带有说明的标签,用-a指定标签名,-m指定说明文字:
git tag -a tagName -m “explain this tag” commit_id
43 查看所有标签: git tag
44 查看标签信息: git show tagName
45 == 删除标签:== git tag -d tagName
46 推送某个标签到远程: git push origin tagName
47 一次性推送全部尚未推送到远程的本地标签: git push origin --tags
48 删除一个远程标签:
先从本地删除: git tag -d tagName
从远程删除: git push origin :refs/tags/tagName
自定义git
忽略某些文件时,需要编写.gitignore;
.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
49 Git显示颜色: git config --global color.ui true
50 强制把在.gitignore文件夹里面的文件即会忽略的文件添加到git:
git add -f fileName
51 如果.gitignore写得有问题,需要找出来到底哪个规则写错了:
git check-ignore -v fileName
52 如果想偷懒少拼写命令,可以给命令配置别名:git config --global alias.newOrder oldOlder
【每个仓库的Git配置文件都放在.git/config文件中】
53可以查看配置文件里的内容: cat .gitconfig
别名就在[alias]后面,要删除别名,直接把对应的行删掉即可。
而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中
详情参考:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375234012342f90be1fc4d81446c967bbdc19e7c03d3000
53git显示颜色分明的提交历史时:
git log --color --graph --pretty=format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset’ --abbrev-commit"
参考教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000