git快速上手
如果觉没有目录得看得难受,可以在这看:Pro git 2
一、git介绍
从个人角度上来说,git可以干嘛?
管理github等代码托管平台上的仓库,如果要做开源项目,必须要用到git,公司项目代码保存也是git或svn
下载github代码,还是觉得下zip方便...
版本控制,这才是git的正确用途,也是其初衷。比如你写代码,写着写着觉得写错了,想回到以前的某个状态,你再ctrl+Z得多麻烦,git就能帮你解决此问题
二、git安装&获取仓库
- 安装好git第一步,设置自己的身份信息。Win10右键文件资源管理器即可调出git bash,使用的linux shell习惯
git config --global user.name "John Doe" git config --global user.email johndoe@example.com # 查看信息 git config --list
- 第二步,有代理就设置代理
# 设置 git config --global http.proxy http://127.0.0.1:7890 git config --global https.proxy https://127.0.0.1:7890 # 查看 git config --global http.proxy git config --global https.proxy # 取消 git config --unset http.proxy git config --unset https.proxy
- 获取git仓库
# 本地建立仓库: 进入一个文件夹 git init # 此文件夹就会被存放仓库 # 克隆(下载)远程仓库,会新建目录,后面可以再追加一个目录名用于重命名 git clone https://github.com/*/* # https git clone git@github.com:*/* # ssh
linux建议使用SSH,方便 push,而Windows使用https比较方便,后面<a href="#五、远程仓库">远程仓库时</a>会说
三、记录每次更新到仓库
3.1 追踪文件
git的文件有三种状态(位置): 已修改、暂存区、仓库
一个新文件或一个仓库中的文件被修改,那它就处于已修改状态;
使用
git add
命令可以追踪新文件、添加已修改文件到暂存区;最后使用
git commit -m “”
命令提交暂存区的文件到仓库,他默认需要一个注释,可以帮助你回忆你这次修改的内容,github也会显示此注释
3.2 查看文件状态
git status
status 能显示未追踪的文件、新追踪还没commit的文件、已修改的文件等, -s 选项能查看简况
git diff
diff 只能查看仓库中 被修改后 还未add的文件,它能查看文件内容做了哪些修改
3.3 提交文件到仓库
常规入库流程: add ——> commit -m
优点是能分批,把不同的文件打上不同的注释
如果不想多打一行
add *命令,又没有新追踪文件,可以使用
commit -a -m ""
能提交所有被修改过的被追踪(仓库中)的文件,但是不推荐使用 -a,因为当你想要撤销操作的时候很麻烦
3.4 移除文件、取消跟踪、重命名和移动
删除文件的两种办法:
git rm
,再 commit如果直接在文件管理器删除了文件,又修改了被追踪的文件,最后 add ——> commit -m
你会发现,用 status 查看,删除文件的这一步还是没被提交,解决方法是:
文件资源管理器删除文件,再
commit -a -m ""
取消跟踪,即从仓库中删除记录,但仍将文件保留在硬盘上,后续记得加入.gitignore
git rm --cached
重命名和移动:
git mv
,不要使用文件资源管理器移动或重命名,git无法跟踪。git mv 其实是 rm + add
3.5 忽略追踪某些文件
如果不希望某些文件被追踪,可以新建
.gitignore文件,用于存放忽略规则,当你将此文件追踪、提交后,规则就生效
当规则生效后,你不应当使用
add *,它无法追踪任何文件。而应该使用
add .
忽略追踪规则的格式如下
所有空行或者以#开头的行都会被 Git 忽略。
可以使用标准的 glob 模式匹配,它会递归地应用在整个工作区中。
匹配模式可以以(/)开头防止递归。
匹配模式可以以(/)结尾指定目录。
要忽略指定模式以外的文件或目录,可以在模式前加上叹号(!)取反。
glob即简化的正则表达式,让我们看看一些例子以方便理解:
# 忽略所有的 .a 文件 *.a # 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件 !lib.a # 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO /TODO # 忽略任何目录下名为 build 的文件夹 build/ # 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt doc/*.txt # 忽略 doc/ 目录及其所有子目录下的 .pdf 文件 doc/**/*.pdf
四、撤销操作、日志与版本回退
除非要回退某个文件到之前的某个版本,否则无需撤销操作,继续修改继续提交即可
4.1 回滚已修改文件
当你的某个文件处于工作区时,如果你修改后觉得不妥,想撤销操作,回到最近一次提交的版本
git checkout -- <file>
当你的文件被add到暂存区,想要将其退回到工作区时
git reset HEAD <file>
git restore --staged <file>
文档里说的是reset,但是status提示的是restore 。参考没必要将文件退回到工作区,不commit,继续修改和add即可。除非要checkout
4.2 commit后的回滚
查看git日志、提交历史
git log
commit后面一段很长的字符串为索引,(HEAD -> master)意思是HEAD是一个指针,他总指向最近一次提交用 -p 参数可以查看更仔细的日志,包含每次提交的改动细节
用 -3 等数字可以限制只输出最近几次提交的日志,q 退出
当你commit提交文件时遗漏了某些文件,或者注释有误
git commit --amend
$ git commit -m 'initial commit' $ git add forgotten_file $ git commit --amend -m "" # 会将暂存区文件提交,且两次提交只有一次记录,采用后者的注释
当你commit、push提交的文件有误,你想撤销commit操作时
简单安全的做法是修改后再次提交
如果要回到上一次提交的版本,可以撤销commit操作,但这可能存在风险
git revert HEAD # HEAD 指向最近一次提交,你也可以通过log获取索引来撤销之前的某次commit # 会生成一次 commit 日志 # :q 返回终端 git push origin master
git reset
撤销编辑、撤销提交首先我们要了解Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照。如下图
此时本地仓库对应的是commit4,git reset 可以让本地仓库对应的指针变为commit3或是commit1等之前的版本,当然,也可以变为commit4之后的某个commit,如commit5
Git 的分支,其实本质上仅仅是指向提交对象的可变指针。参考
git reset --hard HEAD
将暂存区、工作区中的内容恢复成上一次提交的版本(快照),换句话说你没commit的内容都会被擦除。如果你刚commit,想撤销这次commit,那么可以把HEAD换成其它索引(危险!会丢失工作内容,建议采取下面的--soft)git reset --soft <index>
将HEAD指向指定的索引,即回退到某个版本,假设从4回到3,那么3往后的操作会被放到暂存区。参考
reset和分支有关,如果操作后无法push,可以使用 -f 强制push
五、远程仓库
创建仓库后,使用clone即可将仓库克隆到本地,后续还能使用pull
但是push需要身份验证
Windows会直接跳转网页要求认证,后续无需认证。使用https比较方便,而且Windows挂梯子扶墙也比较容易
Linux建议使用SSH链接,使用https链接每次都需要输入账号密码,或需要配置文件,而且https会被墙,相比之下ssh就能流畅访问
linux使用ssh连接github步骤
- 生成ssh密钥
ssh-keygen # 生成ssh key,默认即可,一直回车,最后会生成一对公钥和私钥文件 # -t 指定密钥类型,默认是 rsa ,可以省略。 # -C 设置注释文字,比如邮箱。 cat /root/.ssh/id_rsa.pub # 将公钥内容复制
github添加公钥
登录 GitHub,打开 Personal settings 页面,选择 SSH and GPG keys 选项添加
测试
ssh -T git@github.com
如果之前 clone 了 https 的链接,导致origin是https的,更改origin的方法是:
# 查看远程仓库地址 git remote -v # 删除 git remote rm origin # 添加 git remote add origin [url]
- git使用快速上手
- git 快速上手备忘录
- 学一点Git--20分钟git快速上手
- Git快速上手(1)
- Git快速上手
- 学一点Git–20分钟git快速上手
- Git 快速上手
- 学一点Git–20分钟git快速上手
- Git与Github快速学习上手
- 学一点Git--20分钟git快速上手
- 学一点Git--20分钟git快速上手
- 【转】学一点Git--20分钟git快速上手
- 学一点Git--20分钟git快速上手
- Git快速上手
- 不懂Git,别说自己是程序猿–20分钟git快速上手
- 学习Git---20分钟git快速上手
- 学一点Git--20分钟git快速上手 [Neil]
- Git教程 快速上手
- Git精简教程,快速上手
- Git ===> git 快速上手