git基础指令
基础指令
基本操作指令
- git init 创建新的 git 仓库
- git clone /path/to/repository 创建一个本地仓库的克隆版本
- git clone username@host:/path/to/repository 如果是远端服务器上的仓库
- git add * 提出更改(把全部更改添加到暂存区)
- git add (filename)提出更改(把一个文件更改添加到暂存区)
- git commit -m "代码提交信息" 提交到本地仓库HEAD
- git push origin master 提交到远端仓库,可以把 master 换成你想要推送的任何分支。
如果没有clone已有本地仓库,推送到远程仓库
git remote add origin xxx(仓库地址) 添加远程仓库
git push -u origin master 提交到远端仓库,-u来来指定一个默认连接
已经提交过的进行fast-forwards
git fetch origin master
git merge origin/master 提示和历史记录对不上的话
git merge --allow-unrelated-histories origin/master
分支指令
- git checkout -b dev 创建dev的分支,并切换过去
- git checkout master 切换回主分支
- git branch -d dev 删除分支
- git push origin dev 分支推送到远程库 除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的
更新与合并
- git pull 更新你的本地仓库至最新改动
- git merge
合并一条分支到你当前的分支 - git diff
合并前预览差异
替换本地改动
git checkout --
- git fetch origin
- git reset --hard origin/master 丢弃你在本地的所有改动与提交,以到服务器上获取最新的版本历史,并将你本地主分支指向它
标签
- git tag 1.0.0 1b2e1d63ff 创建一个叫做 1.0.0 的标签 1b2e1d63ff 是你想要标记的提交 ID 的前 10 位字符。可以使用下列命令获取提交 ID
- git log 你也可以使用少一点的提交 ID 前几位,只要它的指向具有唯一性。
log
- git log 了解本地仓库的历史记录
- git log --author=bob 只看某一个人的提交记录
- git log --pretty=oneline 一个压缩后的每一条提交记录只占一行的输出 git log --graph --oneline --decorate --all 艺术的树形结构来展示所有的分支
实际运用
- 工作区:你操作的代码
- 暂存区:git add 添加入暂存区
- 本地仓库:当你把某个功能做好之后 可以git commit
- 远程仓库:做本地仓库的同步
场景一:你觉得这次提交的commit不行,需要做回退到上次提交的commit做重新来
回退到上个commit
- 1
git reset --hard HEAD^
回退到上上个commit
- 1
git reset --hard HEAD^^
回退到上100个commit
- 1
git reset --hard HEAD~100
回退到指定版本,通过git log 查看commitid --pretty=oneline 可以显示成简略版
- 1
git log --pretty=oneline
- 1
git reset --hard e475afc93c209a690c39c13a46716e8fa000c366
此时回退到以前版本git log会看不到后来的版本 可以通过git reflog 看到操作纪路来找到操作过的commitid
- 1
git reflog
场景二:撤销修改。
你修改了README.md的文件 此时想撤销修改回到上次的commit的状态 git checkout -- file
- 1
git checkout -- README.md
你修改了README.md的文件
并将其存到了暂存区,此时想撤销修改回到上次的commit的状态
git reset HEAD
- 1
git reset HEAD README.md
你不小心删除了README.md文件
- 1
git checkout -- README.md
总之,git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
场景三:多人协作。
多人协作的工作模式通常是这样:
- 首先,可以试图用git push origin
推送自己的修改; - 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
- 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再用git push origin
推送就能成功! - 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to
origin/ 。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
小伙伴入职:
- 1
git clone
小伙伴要在dev分支上开发,就必须创建远程origin的dev分支到本地,于是他用这个命令创建本地dev分支
- 1
git checkout -b dev origin/dev
还有许多命令可查看 https://github.com/521xueweihan/git-tips
另外推荐使用SourceeTree https://www.sourcetreeapp.com/ 可视化工具管理