本文共 3575 字,大约阅读时间需要 11 分钟。
本文内容来自:https://www.bilibili.com/video/BV1pW411A7a5
学习git的目标如下:
基于jekyll+gitpage+阿里云搭建个人博客
将平时的md存到博客,定时同步到微信
push平时的练手代码
将图片push到个人服务器,博客以直接引用
手术规划软件web化
工作区(本地项目)、暂存区、本地库、远程库
同组协作push
不同组fork、然后发起pull请求
#,初始化工作区 git init #添加到暂存区 git add . #提交到本地库 git commit -m 'first commit' #建立本地库和远程库的连接,远程库别名为origin git remote add origin https://github.com/chrisxyq/AblationSoftware.git #将本地库push到远程库 git push origin master
13692@CP3 MINGW64 /e/workspaces/FirstGit/AblationSoftware1.0 $ git init Initialized empty Git repository in E:/workspaces/FirstGit/AblationSoftware1.0/.git/
git config --global user.name chrisxyq git config --global user.email chrisxyq@yo.com git config user.name chrisxyq git config user.email chrisxyq@yo.com
git commit -m 'first commit' AblationSoftware1.0/ #备注:将工作区直接提交到本地代码库 git commit -a等价于git add+git commit两步操作 #未追踪的文件:新建的文件 #已追踪的文件:曾提交到暂存区/本地库的文件
#head为当前提交的指针 $ git log commit 8c0b0703ad5917084f569bd2713ebaf3e6520f24 (HEAD -> master) Author: chrisxyq @yo.com> Date: Fri Jan 1 20:13:03 2021 +0800 add readme.md commit 43692dde8e21507e7754f09bf6d63ccc96c8c6ab Author: chrisxyq @yo.com> Date: Fri Jan 1 19:46:17 2021 +0800 first commit
#单行显示提交历史 $ git log --pretty=oneline 8c0b0703ad5917084f569bd2713ebaf3e6520f24 (HEAD -> master) add readme.md 43692dde8e21507e7754f09bf6d63ccc96c8c6ab first commit
#@后面的数字为到该版本需要移动的步数 $ git reflog 8c0b070 (HEAD -> master) HEAD@{ 0}: commit: add readme.md 43692dd HEAD@{ 1}: commit (initial): first commit
13692@CP3 MINGW64 /e/workspaces/FirstGit/AblationSoftware1.0 (master) $ git reset --hard 43692dd HEAD is now at 43692dd first commit #该操作过后,工作区的本地项目文件夹的readme.txt将被删除 #hard参数将移动本地库、暂存区和工作区三个区域的指针 #若在工作区删除了某文件,并git add和commit(即本地库、暂存区和工作区三个区域均删除了该文件),可通过git reset --hard找回该文件(前提是删除前,文件存在时的状态提交到了本地库
git diff 文件名:工作区和暂存区的文件比较 git diff HEAD 文件名:工作区和本地库的当前版本比较 #不带文件名,则比较多个文件
git branch 分支名:创建分支 git branch -v:查看分支 git checkout 分支名:切换分支 在master分支执行git merge hot_fix:将hot_fix分支合并到master分支
与svn不同,在工作区手动解决完冲突文件之后,git还需做如下操作
git add 冲突文件名 git commit -m "提交日志信息"
git的提交对象是一个文件树,每个文件都对应一个哈希值,因此git每次提交都是提交一个哈希树。且git的每个版本迭代均基于版本的哈希值建立父子关系。
分支管理机制 | |
---|---|
svn | 新建一个分支,是将上一个分支复制一份 |
git | 新建一个分支,是新建一个指针指向当前的分支,相较于svn节省了数据,提高了效率。git分支的切换,即为切换head指针的指向(head指针永远指向当前版本) |
step1:创建远程仓库:https://github.com/chrisxyq/AblationSoftware.git
step2:在本地仓库为远程仓库创建别名,别名为origin
13692@CP3 MINGW64 /e/workspaces/FirstGit/AblationSoftware1.0 (master) $ git remote add origin https://github.com/chrisxyq/AblationSoftware.git #新建完别名,使用git remote -v查看 13692@CP3 MINGW64 /e/workspaces/FirstGit/AblationSoftware1.0 (master) $ git remote -v origin https://github.com/chrisxyq/AblationSoftware.git (fetch) origin https://github.com/chrisxyq/AblationSoftware.git (push) #将本地仓库的master分支push到远程仓库origin $ git push origin master
在本地工作区git clone之后,将在工作区自动创建.git/文件夹,且git remote -v将发现自动为远程库创建了origion的别名
#先把远程库拉取到本地,但是此时本地工作区的文件内容不会被修改 #origin:远程地址别名、master:远程分支名 git fetch origin master #切换到远程仓库,此时可以看到远程仓库的内容 git checkout origin/master #切换回到本地仓库 git checkout master #确认好远程和本地仓库的文件后,将远程仓库的master合并到本地仓库的master,此后本地工作区的内容将改变 git merge origin/master #pull=fetch+merge #当修改的文件比较简单,不会产生冲突,可直接使用如下:将远程仓库拉取到本地仓库和开发区 git pull origin master
转载地址:http://wpdoo.baihongyu.com/