GIT指令学习笔记

使用Git的操做流程

1.Git的下载与安装

首先去 https://git-scm.com/downloads 这个网站下载与本身电脑相匹配的Git的安装文件下载完毕后点击运行,一路点击next便可完成安装.git

2.建立版本库

首先选择一个合适的地方,建立一个空目录,而后进入当前目录,在当前目录下右键,点击Git Bush,可使用 pwd 命令来显示当前目录,接着使用 git init 命令把这个目录变成Git 能够管理的仓库而后你就会看到这个目录下多了一个.git的目录,这个目录就是 Git 来追踪和管理版本库的,若是系统默认隐藏了这类后缀名的文件你可能就会看不到,使用 ls-ah 命令就能够看见.缓存

3.配置你的git仓库的用户邮箱和用户名

git config --global user.email "your email"
git config --global user.email "your name"服务器

4.添加远程仓库

经常使用的git操做命令app

(1) git clone <版本库的网址> <本地目录名> 克隆远程仓库到本地
我比较推荐: 去GitHub网站上建立一个项目仓库,复制仓库地址,而后再本地选择一个你想要存放这个项目的地方,新建一个空的文件夹,在这个文件夹下面右键选择git Bush,而后使用git clone <你复制的地址>,这里本地目录名省略则默认时当前目录,就能够把你的项目克隆到本地了.测试

(2) git add 添加文件到暂存区fetch

  • git add <filepath>

添加你新建的文件到暂存区.网站

  • git add .

把工做时的全部变化提交到暂存区,包括文件内容修改(modified)以及新(new)文件,但不包括删除的文件("."是匹配符,这里能够代指匹配全部).版本控制

  • git add -u

u(update的缩写),该命令仅监控已经被add的文件,它会将被修改的文件(即tracked file)提交到暂存区. 不会提交新文件(untracked file)指针

  • git add -A

是 git add . 和 git add -u 这两个命令功能的合集,提交全部修改的(modified)文件到暂存区,包括新文件(new).日志

  • git add -i

咱们能够经过git add -i [<path>]命令查看<path>中被全部修改过或已删除文件但没有提交的文件,
补充: 经过git add <匹配符>的方式你能够添加符合特定条件的文件,例如hello* 表示添加以hello开头的文件的修改添加到暂存区,具体的写法你们能够自行百度下^_^^_^
git push -u origin master //把本地库的全部内容推送到远程库上

(3)git commit 提交修改的文件到工做区

  • git commit -m "<modify message>"

提交全部暂存区的文件

  • git commit -am | -a -m "<modify message>"

提交全部被跟踪的修改过的文件,包括没有进入暂存区的文件

  • git commit --amend

取消上一次的提交

(4) git pull //从远程仓库拉取数据同步到本地

(5) git push //从本地仓库推送(同步)修改到远程仓库

关于git push 的几个扩展的用法

  • git push -u origin master

若是当前分支与多个主机存在追踪关系,则可使用 -u 参数指定一个默认主机,这样后面就能够不加任何参数使用git push,不带任何参数的git push,默认只推送当前分支,这叫作simple方式,还有一种matching方式,会推送全部有对应的远程分支的本地分支, Git 2.0以前默认使用matching,如今改成simple方式若是想更改设置,可使用git config命令。git config --global push.default matching OR git config --global push.default simple;可使用git config -l 查看配置

  • git push --all origin

当遇到这种状况就是不论是否存在对应的远程分支,将本地的全部分支都推送到远程主机,这时须要 -all 选项

  • git push --force origin git

push的时候须要本地先git pull更新到跟服务器版本一致,若是本地版本库比远程服务器上的低,那么通常会提示你git pull更新,若是必定要提交,那么可使用这个命令。

5.查看仓库文件的状态

使用 git status 命令可让咱们时刻掌握仓库当前的状态,好比那些文件被修改,那些文件须要提交等等.

6.比对版本间某文件的差别

使用 git diff "filename" 就能够查看某个文件修改先后的版本的不一样

7.查看版本日志

使用 git log 命令咱们能够查看某个项目从最近到最远的提交日志.若是内容太多,能够试试加上 --pretty=online 来进行筛选.

8. 查看历史操记录 git reflog

git reflog 能够记录你的每一次命令,方便你随时查看历史操做记录

9. git checkout -- filename

git checkout -- filename 这一指令能够将修改过但还未commit的文件版本返回至最近一次commit或者add的状态.

10. 关于版本控制的小结

场景1:当你改乱了工做区某个文件的内容,想直接丢弃工做区的修改时,用命令git checkout -- file。git checkout -- file 还能够一键还原误删的文件.
场景2:当你不但改乱了工做区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操做。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

11.删除文件

git rm filename
git commit -m "remove a file"

12.Git 分支

Git鼓励大量使用分支:
查看分支:git branch
建立分支:git branch <name>
切换分支:git checkout <name>
建立+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>

git merge --no-ff feature-x: 默认状况下,git执行"快进式合并",使用--no-ff参数后,会执行正常合并,当删除eature-x分支后,从分支历史上还能够看到给分支信息,可是若是是快进式合并,删除分支后,会丢掉分支信息.

删除分支:git branch -d <name>
强制删除没有被合并的分支: git branch -D <name>

13. 提交日志

git log: 打印版本提交日志.

14. 回退以前的版本Git reset

git reset(HEAD默认指向当前版本,也就是最新提交的版本,HEAD^表示当前版本的上一个版本, HEAD^^表示当前版本的上上个版本, ~n表示当前版本的上n个版本):
* git reset HEAD filename: 将某个文件从暂存区回退到工做区.
* git reset --soft HEAD~n: 意为将版本软回退n个版本,所谓软回退表示将本地版本库的头指针所有重置到指定版本,且将此次提交以后的全部变动都移动到暂存区.
* git reset --mixed HEAD 8306e6eb46a(version code): 意为将版本硬回退到某一指定版本号对应的版本,将本地版本库的头指针所有重置到指定版本,且会重置缓存区,即本次提交以后的全部更改都会被移动到未暂存阶段.若是想要的工做区的代码也回退到这个版本,须要git pull一下,由于当前的HEAD指向了想要回退的那个版本,因此此时的更新就是相对于制定版本的更新.
* git reset --hard HEAD 8306e6eb46a(version code): 意为将版本硬回退到某一指定版本号对应的版本,可是不只仅是将本地版本库的头指针所有重置到指定版本,也会重置暂存区,并将工做代码回退到这个版本,就是比--mixed多了一个git pull.
* git reset --help  查看帮助
* git reset --hard  撤销本地修改,包括已经被提交到暂存区的修改撤回,干净的会退到上次提交以后的状态
* git clean -df  这个命令是撤销没有被提交到暂存区的本地修改

这里讲一讲多分支开发的合并,在正规的项目中,咱们常常会采用多分支开发,主分支master, 开发分支develop(开发者们开发合并代码的分支),热更新分支hotFix(临时的用于解决上线项目运行时候的bug的分支),切分支的方法git branch <branchName>,提交的方式是向管理员提交pull request,步骤以下:

15. pull request

  • 第一步: git fetch --all: 拉取下来upstream,也就是拉取线上版本的代码,并将线上版本的代码和本地合并,并解决冲突.
  • 第二步: 合并之后测试,没有问题后push本地代码.
  • 第三步: 请求管理员把本身仓库的分支合并到原仓库的分支下,这就是pull request.

点击New Merge Request,选择要合并的源分支和目标分支,并添加合并的相关信息,能够
在description中@某个项目成员,也能够设置Assignee指定某个项目成员,这样他们能够会收到邮件要求进行Code review.

  • 第四步: Code Review阶段,收到邮件的成员能够针对更新的代码提出本身的意见,确认代码没有问题,就能够Accept Merge Request了,这时候你的代码就会被合并到master这个线上版本代码的分支上了.

16. 隐藏当前工做现场

当你正在写一个功能,这个时候你又须要切一个分支去修复bug,可是当前功能未写完,不想提交,就可使用git stash命令,把当前工做区"隐藏"起来,等之后恢复现场后继续工做.
那么git stash帮咱们把代码隐藏在哪里了呢? 经过指令git stash list能够查看全部暂存的stash工做区.
当你想要回来继续工做的时候,切回以前工做的分支,而后回复以前的状态有两个方法:

  • git stash apply: 恢复,恢复后,stash内容并不删除,你须要git stash drop来删除

;

  • git stash pop: 恢复的同事吧stash的内容也删了.

也能够屡次stash,而后恢复指定的stash.

补充:
git rebase操做能够把本地未push的分叉提交历史整理成直线;

git rebase的目的是使得咱们在查看历史提交的变化时更容易,由于分叉的提交须要三方对比。**

说明: 记得养成良好的习惯,每次添加修改和删除文件的时候都要先添加到暂存区再提交,每一次提交的时候要写说明,修改了哪些地方,方便往后查看.

推荐阅读

廖雪峰的Git教程

相关文章
相关标签/搜索