Git学习 : https://git-scm.com/book/zh/v2
假设SVN服务器没了,那你丢掉了所有历史信息,因为你的本地只有当前版本以及部分历史信息。
假设GitHub服务器没了,你不会丢掉任何git历史信息,因为你的本地有完整的版本库信息。你可以把本地的git库重新上传到另外的git服务商。
① git拥有三个阶段
② git拥有三个阶段
③ 具体介绍
在工作区中修改文件。
将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。
提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。
步骤 |
命令 |
---|---|
去对应的Bitbucket上面创建一个自己的branch,假设命名为test_branch | |
在本地创建一个文件夹存放拉下来的代码 | git clone |
创建并切换到命名为test_branch的分支进行开发工作 | git checkout -b test_branch |
开发 | |
查看更新内容 | git status |
把更新内容存放到暂存区 |
git add . |
把暂存区的内容提交 | git commit -m '本次提交的命名' |
检查一下是否提交成功 | git status |
将本地仓库推送到远程仓库 | git push origin test_branch |
2.1 新建代码库 |
git init | 在当前目录下新建一个代码库 |
git init [project-name] | 新建一个目录,将其初始化未Git仓库 | |
git clone [url] | 下载/克隆一个项目 | |
2.2 配置 |
git config --list | 显示当前的Git配置 |
git config -ee |
编辑Git配置文件 | |
git config -ee |
设置代码时的用户信息 | |
2.3 增加/删除文件 |
git add [file-name] | 添加指定文件到暂存区 |
git add [dir-name] | 添加指定文件到暂存区,包括子目录 | |
git add | 添加当前目录所有文件到暂存区 | |
git rm [file-name] | 删除工作区文件 | |
git rm --cached [file-name] | 删除暂存区或分支上的文件 | |
git mv [file-orginal-name][file-new-name] | 改文件名 | |
2.4 代码提交 |
git commit -m [message] | 提交暂存区文件到本地仓库区 |
git commit [file-name] -m [message] | 提交暂存区指定文件到本地仓库区 | |
git commit -v | 提交时显示所有diff信息 | |
git commit --amend -m [message] | 使用一次新的commit,代替上一次提交 | |
2.5 分支 |
git branch | 列出所有分支 |
git branch -r | 列出所有远程分支 | |
git branch [branch-name] | 创建一个分支 | |
git checkout -b [branch-name] | 创建一个分支,并切换到该分支 | |
git checkout [branch-name] | 切换到指定分支,并更新工作区 | |
git checkout - | 切换到上一个分支 | |
git merge [branch-name] | 合并指定分支,并更新工作区 | |
git branch -d [branch-name] | 删除分支 | |
git branch -r -d [branch-name] / git branch origin --delete [branch-name] |
删除远程分支 | |
2.6 标签 |
git tag | 列出所有标签 |
git tag [tag-name] | 在当前的commit新建一个tag | |
git tag [tag-name] [commit-id] | 在指定的commit新建一个tag | |
git tag -d [tag-name] | 删除本地tag | |
git tag origin:refs / tags/ [tag-name] | 删除远程tag | |
git show [tag-name] | 查看tag信息 | |
git push [remote] [tag-name] | 提交指定tag | |
git checkout -b [branch-name] [tag-name] | 新建一个分支,指向某个tag | |
2.7 查看信息 |
git status | 显示变更的文件 |
git log | 显示当前分支的版本信息 | |
git log – state | 显示commit历史,以及每次commit变更时产生的文件 | |
git log 5 --pretty=online | 显示过去5次提交 | |
git diff | 显示暂存区和工作区的差异 | |
git diff --cached [file-name] | 显示暂存区和本地工作区的差异 | |
git diff HEAD | 显示工作区和当前分支最新的commit之间的差异 | |
git relog | 显示当前分支的最近几次提交 | |
2.8 远程同步 |
git fetch | 下载远程仓库时有所变动 |
git remote -v | 显示所有远程仓库 | |
git remote show [remote-name] | 显示某个远程仓库的信息 | |
git remote add [shortname] [url] | 增加一个新的远程仓库,并命名 | |
git pull [remote-name] [branch-name] | 取回远程仓库的变化,并于本地分支合并 | |
git push [remote-name] [branch-name] | 上传本地指定的分支到远程仓库 | |
git push [remote-name] --force | 强行推送当前分支到远程仓库 | |
git push [remote-name] --all | 推送所有的分支到远程仓库 | |
2.9 撤销 |
git checkout --[file-name] | 文件工作区修改全部撤销 |
git checkout | 回复所有暂存区的文件到工作区 | |
git reset --hard HEAD | 将暂存区与工作区,与HEAD提交的保持一致 | |
git reset --hard [commit-id] | 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致 | |
git reset --hard HEAD^ | 回退到上一个版本 | |
git reset HEAD | 暂存区和HEAD的提交保持一致 | |
2.10 其他 |
在两个分支上都对同一个文件进行修改并且还都进行了提交
实际上,push操作即是将本地代码merge到远端库分支上。关于push和pull其实就分别是用本地分支合并到远程分支 和 将远程分支合并到本地分支,所以这两个过程中也可能存在冲突。
情景 | 解决方法 | |
---|---|---|
1 | 多个分支代码合并到一个分支时 | 在当前分支上,直接修改冲突代码--->add--->commit |
2 | 多个分支向同一个远端分支推送代码时 | 在本地当前分支上,修改冲突代码--->add--->commit--->push |