工作区 --git add--> 暂存区(stage/index)--git commit--> 本地库 --git push--> 远程仓库
git add file 从工作去添加到暂存区
git commit file -m "#message." 提交修改和提交新文件都是两步:git add 和 git commit
git status 查看工作区的状态
git pull 拉取
git push 推送
git diff file
git log 查看版本记录
git log --pretty=oneline
git log --graph --pretty=oneline --abbrev-commit 查看分支的合并情况
HEAD 当前版本
HEAD^ 上一个版本
HEAD^ 上上一个版本
HEAD~100 上100个版本
git reset --hard HEAD^ 把当前版本回退到上一个版本,(这个指令回退的是本地的版本)
git reset --hard 1094a 回到指定的某个版本,包括未来的某个版本
cat file 查看文件内容
git checkout -- file 撤销工作区的修改,这里有两种情况:
一种是file自修改后还没有提交到暂存区,现在,撤销修改就回到了与版本库一模一样的状态;
另一种是file已经添加到暂存区后,又做了修改,现在,撤销修改就回到添加到暂存区后的状态。
git reset HEAD file 把暂存区的修改撤销掉,重新放回工作区
删除文件:
再git rm file
再git commit -m "message",
如果删错了,那就git checkout -- file ,checkout其实就是用版本库中的版本替换工作区的版本。
Git是很不错的版本管理工具,从事编码工作的人都应该会。
我是通过廖雪峰的网站学习的git,https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
下面是我在跟着廖雪峰老师官网学习的时候做的笔记,比较凌乱,建议不要看,直接去gu官网学习,效果会更好。
本地git仓库和远程github仓库之间的传输是通过SSH加密的。
创建SSH Key: ssh-keygen -t rsa -C "youremail@example.com" 用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥
关联远程仓库:git remote add origin git@github.com:michaelliao/learngit.git
第一次推送master分支的所有内容:git push -u origin master 之后推送gitpush origin master
从远程库克隆一个本地库:git clone git@github.com:michaelliao/gitskills.git
git checkout -b dev 创建分支: -b 表示创建分支并切换,相当于一下两条命令:
git branch dev;git checkout dev
git branch 查看当前分支: 该命令会列出所有分支,当前分支前面会有一个*号
git checkout master 切换回master分支
git merge dev 把dev分支的工作成果合并到master分支上
git merge 合并指定分支到当前分支
git branch -d dev 删除分支
实践得出的结论:切换分支前,本地修改必须提交,否则不能切换过去。两个分支的修改互不影响,一个分支不能看到另一个分支合并之前修改的内容。
分支的意义?什么情况下用分支?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没有写完,不完整的代码库会导致别人没法干活,如果等代码完全写完再提交一次,又存在丢失每天进度的巨大风险。现在有了分支就不用怕了。你创建了一个属于你自己的分支,别人看不到,别人还继续在原来的分支上工作,而你在自己的分支上工作,想提交就提交,知道开发完毕后,再一次性合并到原来的分支上,这样,即保证了每天得开发进度不丢失,又不影响别人的工作。
dev分支上能push代码到远端吗?即dev分支与master分支是相同的吗?答:能。dev同样能push代码到远端。切换带dev分支后,执行git remote,能返回origin。
研究一下log中时间图的看法?合并的时候没有发生冲突,也会产生两条线合并的效果。
研究一下什么情况下回产生冲突?