Git的官方网站:http://git-scm.com
学习廖雪峰的Git教程所做笔记。
外国网友制作的Git Cheat Sheet
Git是目前世界上最先进的分布式版本控制系统。由Linus使用C写成。
版本库又名仓库,英文名repository。
初始化一个Git仓库,使用git init
命令。
添加文件到Git仓库,分两步:
git add <file>
,注意,可反复多次使用,添加多个文件;git commit -m "<message>"
,完成。(-m后面输入的是本次提交的说明)注意:
.git
目录是Git来跟踪管理版本库的,尽量不要去改动。git status
命令。git status
告诉你有文件被修改过,用git diff
可以查看修改内容。HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard <commit_id>
。git log
可以查看提交历史,以便确定要回退到哪个版本。git reflog
查看命令历史,以便确定要回到未来的哪个版本。工作区(Working Directory):在电脑里能看到的目录。
版本库(Repository):隐藏目录.git
。
其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master
,以及指向master
的一个指针叫HEAD
。
文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add
把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。
需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。
每次修改,如果不用git add
到暂存区,那就不会加入到commit
中。
git checkout -- <file>
。git reset HEAD <file>
,就回到了场景1,第二步按场景1操作。git reset --hard <commit_id>
,不过前提是没有推送到远程库。git checkout -- <file>
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
命令git rm <file>
用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:
$ ssh-keygen -t rsa -C "youremail@example.com"
为什么GitHub需要SSH Key呢?
因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
git remote add origin git@github.com:<server-name>/<repo-name>.git
;git push -u origin master
第一次推送master分支的所有内容;git push origin master
推送最新修改;(远程库的名字就是origin,这是Git默认的叫法)git clone
命令克隆。https
,但通过ssh
支持的原生git
协议速度最快。git branch
git branch <name>
git checkout <name>
或者git switch <name>
git checkout -b <name>
或者git switch -c <name>
git merge <name>
git branch -d <name>
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
用git log --graph
命令可以看到分支合并图。
Git分支十分强大,在团队开发中应该充分应用。
合并分支时,加上--no-ff
参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward
合并就看不出来曾经做过合并。
git remote -v
;,如果推送失败,先用
git pull`抓取远程的新提交;git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致;git branch --set-upstream branch-name origin/branch-name
;git pull
,如果有冲突,要先处理冲突。点“Fork”就在自己的账号下克隆了一个bootstrap仓库,然后,从自己的账号下clone:
git clone git@github.com:<username>/bootstrap.git
一定要从自己的账号下clone仓库,这样你才能推送修改。如果从bootstrap的作者的仓库地址git@github.com:twbs/bootstrap.git克隆,因为没有权限,你将不能推送修改。
$ git config --global color.ui true
让Git显示颜色
.gitignore
;.gitignore
文件本身要放到版本库里,并且可以对.gitignore
做版本管理!用st表示status:$ git config --global alias.st status
很多人都用co表示checkout,ci表示commit,br表示branch:
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
配置一个git last,让其显示最后一次提交信息:
$ git config --global alias.last ‘log -1‘
--global
参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。
使用Source Tree
原文:https://www.cnblogs.com/oeong/p/12309587.html