创建版本库
- git init
- 通过这个命令把当前目录变成Git可以管理的仓库(默认会生成一个.git文件,这个文件是Git用来跟踪管理版本库的)
创建完版本库之后便可以对该目录下的文件进行Git相关操作
克隆远程代码到本地
- git clone 地址
- 克隆具体某个分支的线上代码:git clone -b 分支名 地址
查看版本库当前状态信息
- git status
- 该命令用于查看版本库的当前状态,可以看出当前哪些文件是已经改动了的(修改,新增,删除)。同时还会提示哪些文件是需要添加到暂存区,哪些是已经添加到了暂存区现可以提交到仓库的。
git diff
- git diff <文件名>查看文件在工作目录与暂存区的差别。如果还没 add 进暂存区,则查看文件自身修改前后的差别
- git diff HEAD -- <文件名>可以查看工作区和版本库里面最新版本的区别。
- git diff --cached已经暂存起来的文件和上次提交(commit)之间的差异
- git diff commit-id 文件名比较工作区与指定的 commit -id 的差异
提交到暂存区
- git add 文件名
- git add .: 会把工作目录里的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件
- git add -u: 仅监控已经被add过的文件(即tracked file),他会将被修改的文件提交到暂存区。 但是不会提交新文件
- git add -A: 跟git add . 一样,但是会包括已删除的文件
把文件提交到本地仓库
- git commit -m "注释"
更新远程代码
- git pull origin <远程分支名>:<本地分支名>
- 如果与当前分支合并,则可省略本地分支名:git pull origin <远程分支名>
- 如果当前分支与远程分支存在追踪关系: git pull origin
- 如果当前分支只有一个追踪关系: git pull
git pull和git fetch的区别
- git fetch <远程主机名> 这个命令将某个远程主机的更新全部取回本地
- $ git fetch <远程主机名> <分支名>取回特定分支的更新,可以指定分支名
- 他跟pull的区别是 :git fetch是将远程主机的最新内容拉到本地仓库,用户在检查了以后决定是否合并到工作本机分支中。而git pull 则是将远程主机的最新内容拉下来后直接合并。直观的来讲就是:git pull = git fetch + git merge。
更新时解决冲突
- git stash先将本地修改存储起来,这样本地的所有修改就都被暂时存储起来 。用git stash list可以看到保存的信息。其中stash@{0}就是刚才保存的标记。
- git pull暂存了本地修改之后,就可以pull了
- git stash pop stash@{0}还原暂存的内容,系统自动合并修改的内容,但是其中有冲突,需要解决其中的冲突
- 打开文件里面其中 <<<<HEAD 这里是本地的修改内容 ======== 这是远程修改的内容 >>>>>>>>> commit id (这里需要手动修改)
将本地仓库的代码推送到远程仓库
- git push origin "本地要推送的分支名" : "远程分支名"
- origin指远程代码库的地址,可以用git remote -v查看详情。
- 或者git push origin "本地要推送的分支名"这个是把该分支上的所有本地推送到对应的远程分支上,(通常两者同名)如果该远程分支不存在,则会被新建
- 如果当前分支只有一个追踪分支:git push
版本回退,撤销修改
当提交到暂存区时或者提交到本地仓库时,想要撤回并还原:
- 当提交到版本库时(commit)想回到上一个版本:git reset --hard HEAD,HEAD表示当前版本,上一个版本就是HEAD,上上一个版本就是HEAD^^,N的话就是HEAD~N
- 当目前只是提交到暂存区(git add)时需要撤回:git reset HEAD “文件名”
- 当对一个文件改动后,想撤回修改,使其与最近的一次提交的内容相同时:git checkout -- “文件名”
- git reset --soft HEAD : 回退到git commit之前,此时处在暂存区。(即执行git add 命令后)
切换版本
- 当我们想要切换某个提交的版本(commit)的时候,可以先用git log来查看版本的提交历史记录,(git log命令显示从最近到最远的提交日志)。
从中可以看到本次commit时的记录时间及注释,还有版本编号。拿到版本编号即可回到对应的版本:git reset --hard "版本号"
分支操作
- 查看所有分支:git branch
- 创建并切换分支:git checkout -b '分支名'
- 删除分支:git branch -d '分支名'
- 合并分支:git merge '分支名'
- 当我们从远端克隆一份代码时,只能看到当前的分支,如果想在另一个分支开发,需要创建远程的分支到本地:git checkout -b 分支名 origin/远程分支名
标签的操作
每个版本(commit)都有一个版本号,但是都是嘻哈值,不容易记录使用,这时可以用标签来标识某个版本
- 创建标签:git tag -a '标签名' -m '标签描述'
- 查看标签列表: git tag
- 查看标签详情: git show '标签名'
- 删除标签:git tag -d '标签名'