1.创建版本库 | |
| 到自己的目录位置,建立目录,再把这个目录变成git可以管理的仓库 |
| 注意:Windows系统,目录名尽量不要包含中文 |
| |
| 1.1 创建目录:mkdir demo |
| 1.2 进入目录:cd demo |
| 1.3 展示目录:pwd |
| 1.4 变成仓库:git init |
| |
| 创建完成后,里面会有一个 .git的目录,这是用来跟踪管理版本库的, |
| 不要随意更改里面的文件,否则会破坏Git仓库 |
| -看不见的话,是因为默认隐藏, ls -ah 可以看见。 |
| -任何的目录都是可以创建Git仓库的,但是不建议这样,如果熟练的 |
| 话,可以直接创建 |
| |
| 1.5 添加文件到仓库:git add <文件名> |
| 1.6 提交文件到仓库:git commit -m '<提交说明>' |
| |
| -添加文件到仓库的时候,可以同时提交多个,所以执行commit |
| 可以一次提交多个文件 |
| |
| 2.版本回退 |
| 2.1 版本回退:git reset --hard <commit_id> |
| git reset --hard HEAD^^/HEAD~2 |
| 2.2 提交历史:git log /git log --pretty=oneline --穿梭过去 |
| 2.3 命令历史:git reflog --重返未来 |
| |
| 暂存区/工作区解释 |
| 提交文件都是先提交到暂存区(add),然后再提交到当前的分支(commit). |
| |
| 情景1. 假如你修改了文件,并执行了add操作,但是又对文件进行了修改,那么直接执行commit操作的 |
| 时候,会发现最新的修改并没有提交,所以,对文件进行修改以后,只要想让他是最新的并且 |
| 提交,都必须先执行add操作,在执行commit操作。 |
| 2.4 丢弃工作区的修改:git checkout -- <文件名> 用版本库里的版本替换工作区的版本,一键还原 |
| 2.5 丢弃暂存区的修改:git reset HEAD <文件名> ,再执行2.4 |
| |
| 2.6 删除工作区的文件:rm <文件名> /Windows下直接删除 ---2.4可以恢复 |
| 2.7 删除版本库的文件:git rm <文件名> ---2.5->2.4可以恢复 |
| |
| |
| 3.远程仓库 |
| 看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa(私钥)和id_rsa.pub(公钥)这两个文件, |
| 如果已经有了,可直接跳到下一步。 |
| 没有的话执行此步:创建SSH Key:ssh-keygen -t rsa -C "<git的邮箱地址>" |
| 3.1 添加远程库: |
| 3.1.1 登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库: |
| 3.1.2 点击“Create repository”按钮,就成功地创建了一个新的Git仓库 |
| 3.1.3 在本地的learngit仓库下运行命令: git remote add origin <.git结尾的地址> |
| 3.1.4 把本地库的所有内容推送到远程库上: git push -u origin master |
| |
| -加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支 |
| 和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。 |
| |
| 3.1.5 从现在起,只要本地作了提交 git push origin master |
| |
| 3.2 从远程库克隆 |
| 3.2.1 登陆GitHub,创建一个新的仓库 |
| 3.2.2 勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件 |
| 创建完毕后,可以看到README.md文件 |
| 3.2.3 git clone <git地址> |
| 3.2.4 进入gitskills目录看看,已经有README.md文件 |
| |
| |
| 4.分支管理 |
| 4.1 创建于合并分支: |
| 4.1.1 查看分支:git branch |
| 4.1.2 创建分支:git branch <name> |
| 4.1.3 切换分支:git checkout <name> |
| 4.1.4 创建+切换分支:git checkout -b <name> |
| 4.1.5 合并某分支到当前分支:git merge <name> |
| git merge --no-ff -m "merge with no-ff" dev |
| --no-ff参数,表示禁用Fast forward |
| 因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。 |
| 4.1.6 删除分支:git branch -d <name> |
| |
| 4.2 解决冲突 |
| 4.2.1 分支合并图: git log --graph |
| 4.3 分支管理策略 |
| 4.4 bug分支 |
| 4.5 Feature分支(新功能分支) |
| 4.6 多人协作 |
| 4.6.1 推送分支 git push origin dev |
| 4.6.2 要在dev分支上开发,就必须创建远程origin的dev分支到本地 |
| |
| 因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们, |
| 先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送 |
| git pull |
| git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接, |
| 根据提示,设置dev和origin/dev的链接: |
| git branch --set-upstream dev origin/dev |
| |
| |
| 因此,多人协作的工作模式通常是这样: |
| |
| 首先,可以试图用git push origin branch-name推送自己的修改; |
| |
| 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并; |
| |
| 如果合并有冲突,则解决冲突,并在本地提交; |
| |
| 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功! |
| |
| 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。 |
| |
| 这就是多人协作的工作模式,一旦熟悉了,就非常简单。 |
| |
| 小结 |
| |
| 查看远程库信息,使用git remote -v; |
| |
| 本地新建的分支如果不推送到远程,对其他人就是不可见的; |
| |
| 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交; |
| |
| 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致; |
| |
| 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name; |
| |
| 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。 |
| |
| |
| // 通用命令 |
| 1.掌握仓库当前状态: git status |
| 2.查看不同: git diff |
git的常见操作
最新推荐文章于 2023-05-10 12:56:59 发布