您的位置:首页 > 其它

git快速上手

2021-06-08 16:51 99 查看

官方教程

如果觉没有目录得看得难受,可以在这看: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]



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: