从头开始复习git,熟悉git常见指令,安装,操做等node
参考廖雪峰的教程git
廖雪峰git教程
有两种方法github
brew官网brew使用教程app
Xcode7.0后的版本默认安装了git,在终端直接输入git,看是否已安装。
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进行关联
Initialize this repository with a README
,默认建立便可git remote add origin git@github.com:dwfrost/GitStudy.git
,注意origin后的内容(SSH)能够从github上复制git push -u origin master
2.本地是空文件,想从已有的github项目克隆
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
删除远程标签(要先删本地)
常见的远程仓库有github,码云等,为了方便本地和远程提交代码,须要配置SSH加密,以下:
1.建立SSH key。
建立前,看一下有没有。在用户目录下(mac),终端输入ls -ah
查看隐藏文件,发现存在.ssh
文件夹,cd .ssh
->open .
,看到存在id_rsa
和id_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
代码。
有些文件的变更或者信息是不须要提交的,好比node_modules
、dist
以及系统产生的垃圾文件等。示例以下:
# Windows: Thumbs.db ehthumbs.db Desktop.ini # Python: *.py[cod] *.so *.egg *.egg-info dist build # My configurations: db.ini deploy_key_rsa
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
,若是有冲突,要先处理冲突。每次代码的提交是有意义的,常见的提交标记以下: