Git入门与开发

从头开始复习git,熟悉git常见指令,安装,操做等node

参考廖雪峰的教程git

廖雪峰git教程

安装

Mac

有两种方法github

  • brew安装git
brew官网

brew使用教程app

  • Xcode安装git
Xcode7.0后的版本默认安装了git,在终端直接输入git,看是否已安装。

Windows

git官网

命令

建立版本库

git init 建立仓库ssh

git add file 添加到git中(放入暂存区)ui

git add . 一次性所有添加到暂存区this

git commit -m 'commit description' 提交修改好的文件到本地加密

git log 打印提交日志.net

git log —oneline 打印提交日志的简写版日志

git diff --name-only HEAD~1 查看最近一次提交修改的文件

版本管理

git reset —hard HEAD^ 回滚到上一个版本(HEAD表明当前版本,HEAD^表明上一个版本,HEAD^^表明上两个版本,依次类推)

git reflog 查看用户全部的提交记录

git reset —hard 1231234(提交id)回滚到1231234的提交版本

git checkout — file.txt 放弃工做区中对file文件的修改,不论暂存区是否有该文件的修改记录,即该命令不会放弃暂存区的修改,只放弃工做区的修改

git reset HEAD file.txt 放弃暂存区的内容(即放弃上一次add的内容),退回到工做区,此时的工做区并非最新版本,而是在最新版本的基础上用户修改过的内容

关联远程仓库

已github为例,假设有两种状况:

1.本地已有git仓库或项目文件,想在github进行关联

  • 在github新建项目,不要勾选Initialize this repository with a README,默认建立便可
  • 关联github,在本地仓库终端输入git remote add origin git@github.com:dwfrost/GitStudy.git ,注意origin后的内容(SSH)能够从github上复制
  • 推送内容到github git push -u origin master

2.本地是空文件,想从已有的github项目克隆

  • 打开github项目,复制SSH
  • 在本地仓库终端输入git clone git@github.com:dwfrost/GitStudy.git
  • 若是是加入已有的项目,须要检出目标分支到本地,以便推送时本地分支和远程分支同名

git remote rm origin 删除已关联的远程仓库(通常用不到)

git remote 查看关联的远程仓库

一个本地库能够同时关联github和码云:

git remote add github git@github.com:dwfrost/GitStudy.git

git remote add gitee git@gitee.com:dwfrost/GitStudy.git

注意,远程仓库名称不是origin

而后分别推送

git push github dev

git push gitee dev

分支管理

git branch 查看当前所在的分支

建立

git branch dev 建立dev分支

切换

git checkout dev 切到dev分支

git checkout -b dev 建立并切换到dev分支

合并

git merge dev 将dev分支合并到当前分支

删除

git branch -d dev 删除dev分支(合并后才能删除,且当前分支不能为dev)

git branch -D dev 没有合并时,强制删除dev分支

暂存

git stash 将修改内容(stash)移到贮藏区
git stash pop 还原并删除最新的暂存

git stash list 查看贮藏区的内容(stash)

恢复贮藏区有2种办法:

1.git stash apply恢复贮藏区,但贮藏区依旧保留修改内容(stash),若是想删除,使用git stash drop

2.git stash pop恢复贮藏区的同时删除修改内容(stash)

推送

git push origin dev 将dev分支推送到远程仓库(origin)的dev分支上

标签管理

git tag v1.0 新建标签

git tag 查看标签

git show v1.0 查看标签信息

git tag v0.9 7ff4f56 给某次提交打上标签

git tag -a v0.9 -m "version 0.9 released" 7ff4f56 -a后面是标签名,-m后面是标签说明

git tag -d v1.0删除标签

git push origin v1.0 推送标签到远程

git push origin --tags 一次性推送所有标签

git push origin :refs/tags/v1.0 删除远程标签(要先删本地)

添加SSH

常见的远程仓库有github,码云等,为了方便本地和远程提交代码,须要配置SSH加密,以下:

1.建立SSH key。

建立前,看一下有没有。在用户目录下(mac),终端输入ls -ah查看隐藏文件,发现存在.ssh文件夹,cd .ssh->open .,看到存在id_rsaid_rsa.pub两个文件,说明已经有了SSH key。

若是没有,就须要建立。

$ ssh-keygen -t rsa -C "youremail@example.com"

一路回车,建立成功。

2.添加公钥

id_rsa:密钥是用户保管的

id_rsa.pub:公钥是放在远程仓库,用于和密钥配对使用。

复制id_rsa.pub文件中的内容,打开github,在帐户管理选项中添加SSH key。

概念

工做区

工做区就是git可以管理到的工做区域,也就是该仓库下的全部文件,包括正在修改的和已经存在的文件。

暂存区

暂存区是git记录的修改状态,用户在工做区修改文件后,能够用git add file将文件修改放入暂存区。

注意,若是用户没有把修改操做放入暂存区,而后直接提交,那git是不会提交用户的操做的,git只提交暂存区中的修改操做。因此在开发过程当中,咱们一般以下操做:

* 写代码,写代码……

 * 一个小功能或模块完成,直接提交

 * 若是代码很少,先放入暂存区,而后接着写代码
 * 以为ok了,放入暂存区,不ok千万别放

* 全部的改动一次性提交

另外,若是暂存区存在文件,是不能直接pull的。若是工做区存在修改文件,能够pull代码。

配置

.gitignore

有些文件的变更或者信息是不须要提交的,好比node_modulesdist以及系统产生的垃圾文件等。示例以下:

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini

# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build

# My configurations:
db.ini
deploy_key_rsa

如何让系统记住密码(https方式)

git config --global credential.helper store 在用户主目录下.gitconfig文件生成下面的配置

[credential]
    helper = store

之后就不用每次都输入帐号密码了

配置别名

git config --global alias.st status 全局配置,用st代替status

去掉--global,那配置别名的文件存在于本仓库的.git/config中。

全局配置的文件在用户主目录下的隐藏文件.gitconfig中。

若是想删除别名,直接删除[alias]下对应的行便可。

举个栗子

删除文件

  • git rm file 至关于 rm file,而后git add file
  • 是否真的删除?
  • 是,git commit -m 'delete file'
  • 否,git reset HEAD file + git checkout -- file

多人协做

  • 查看远程库信息,使用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;若是使用sourcetree,右键origin,选择检出分支,便可在本地复制远程分支。
  • 从远程抓取分支,使用git pull,若是有冲突,要先处理冲突。

提交规范

每次代码的提交是有意义的,常见的提交标记以下:

  • fea:新特性,新功能
  • fix:修改bug
  • doc:修改文档
  • prod:构建
相关文章
相关标签/搜索