Git常用命令
写在前面
这是廖雪峰的git教程和阮一峰的git博客的学习笔记,作为备忘。
Git 原理入门
Git 工作流程
常用Git命令清单
Git远程操作详解
廖雪峰Git教程
配置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
几个概念
- 工作区:
- 暂存区:
常用命令
- git init: 初始化一个Git仓库,创建完会生成一个.git文件夹。
- 添加文件到Git仓库,分两步:
git add file,注意,可反复多次使用,添加多个文件;
git commit -m message,完成。
每次修改,如果不用git add到暂存区,那就不会加入到commit中 - git status掌握工作区的状态,如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
- 关于版本回退。HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
- 案例
- 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
- 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。
- 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
- git rm file用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
- Git远程操作
-
git clone
- 克隆版本库的时候,所使用的远程主机自动被Git命名为origin。如果想用其他的主机名,需要用git clone命令的-o选项指定
-
git remote
- git remote命令列出所有远程主机
- 使用-v选项,可以参看远程主机的网址。
- git remote show命令加上主机名,可以查看该主机的详细信息。
$ git remote show <主机名> - git remote add命令用于添加远程主机。
$ git remote add <主机名> <网址> - git remote rm命令用于删除远程主机。
$ git remote rm <主机名> - git remote rename命令用于远程主机的改名。
$ git remote rename <原主机名> <新主机名>
-
git fetch
一旦远程主机的版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令。
$ git fetch <远程主机名>
认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。
$ git fetch <远程主机名> <分支名> -
git pull
git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。等同于先做git fetch,再做git merge.
$ git pull <远程主机名> <远程分支名>:<本地分支名> -
git push
git push命令用于将本地分支的更新,推送到远程主机.
$ git push <远程主机名> <本地分支名>:<远程分支名>.如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
- git remote add origin git@server-name:path/repo-name.git 关联一个远程库。关联后,使用命令git push -u origin master第一次推送master分支的所有内容;此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改。
- 分支管理
- 查看分支:git branch
- 创建分支:git branch name
- 切换分支:git checkout name
- 创建+切换分支:git checkout -b name
- 合并某分支到当前分支:git merge name
- 删除分支:git branch -d name
- git log --graph命令可以看到分支合并图
- Bug分支。修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
- 开发一个新feature,最好新建一个分支;如果要丢弃一个没有被合并过的分支,可以通过git branch -D 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,如果有冲突,要先处理冲突。
- 创建标签。
- git tag tagname用于新建一个标签,默认为HEAD,也可以指定一个commit id;
- **git tag -a tagname -m “blablabla…”**可以指定标签信息;
- git tag可以查看所有标签。
- git tag tagname用于新建一个标签,默认为HEAD,也可以指定一个commit id;
- **git tag -a tagname -m “blablabla…”**可以指定标签信息;
- git tag可以查看所有标签。
- 操作标签。
- git push origin tagname可以推送一个本地标签;
- git push origin --tags可以推送全部未推送过的本地标签;
- git tag -d tagname可以删除一个本地标签;
- git push origin :refs/tags/tagname可以删除一个远程标签。
- 忽略某些文件时,需要编写.gitignore