1. git最小配置 name && email

git config --global user.name 'your_name'

git config --global user.email 'youer_email@qq.com'


--global 当前用户的所有仓库   (个人home目录下的.gitconfig里面,例如:C:\Users\74986)

--local  本地仓库    (在.git/config里面)

--system 本系统的所有仓库(基本不用)


查看配置:

git config --list --global

git config --list --local

git config --list --system

2. git add  添加内容到暂存区

// 添加到暂存区

git add index.html   // 添加index.html

git add index.html images  //可以多个,也可以是文件夹

git add -u  // 将文件的修改、文件的删除,添加到暂存区

git add .  // 将文件的修改,文件的新建,添加到暂存区

git add -A / git add -all   // 将文件的修改,文件的删除,文件的新建,添加到暂存区

3. git log 看历史记录

git log  // 获取提交的记录(当前分支)

git log --oneline  // 一行展示记录

git log --graph  // 有线条连接的记录

git log --all // 所有分支的记录

4.文件的重命名

git mv 旧文件名称 修改的名称

例如:

git mv README.md readme.md

5. 图形化界面

gitk

6.commit tree blob的关系

一次commit对应一个tree(可以理解是一次快照),这个大tree可能包含文件和文件夹

大tree文件夹对应的是一个新的tree,里面有自己的文件,这些文件对应blob

大tree文件对应的就是blob

blob不是以文件名来区别,是以文件的内容来区分是否是同一个blob

 

7.commit 提交

git commit -m '描述' //将暂存区的提交到本地

git commit -am '描述' 

// a表示是add,就是git add和git commit一起执行,就没有啥暂存区的概念了

// 这个不太推荐,对于新建的文件也不好处理

 

8.分支

git branch // 查看本地分支

git branch -r // 查看远程的分支

git branch -a // 查看本地和远程的

git branch -av // 查看所有分支信息

git branch -d branch_name // 删除本地分支, -D强制删除(分支有修改的提交,没有被合并)

git branch -d -r branch_name // 删除远程分支

git branch -m oldbranch newbranch // 重命名分支

git checkout (-b) branch_name (base_branch_name/commit)

// 新建分支,并切换到此分支
// 最后一项是新建分支是以哪个分支或者是哪次提交为基础的
// ()里面表示是可选
// -b是切换到分支

git branch --no-merged  // 查看没有合并的分支

9. 比较diff

git diff commit1 commit2  // 两次提交进行比较

git diff HEAD HEAD~1

// HEAD表示当前的提交,最新的
// HEAD~1表示是上一级提交,就是HEAD的父级,以此类推,HEAD~2,HEAD~3


git diff --cached (文件组)  // 暂存区和HEAD的比较

git diff (文件组) // 工作区和暂存区的比较

git diff HEAD (文件组) // 工作区和HEAD的比较

10. git commit --amend

代替(或这说修改)上一次提交,不只是修改message。

比如上一次提交时有几个文件没有add以及commit,可以重新进行add之后再commit --amend提交。

但这次提交之后不会增加一次新的commit,而是相当于在上一次commit的基础上进行修改。

修改成功后,输入:,然后加上wq就可以退出,w是write写入意思,q是quit退出

11. 恢复之前版本 git reset (暂存区恢复到HEAD/commitId)

描述:  修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本

场景:如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要

此时如果用“git push”会报错,因为我们本地库HEAD指向的版本比远程库的要旧,所以我们要用“git push -f”强制推上去

git reset commitid(HEAD) --soft

// 把 HEAD 指向的 commit 恢复到你指定的 commit,暂存区 工作区不变

git reset commitid(HEAD) --hard

// 把 HEAD, 暂存区, 工作区 都修改为 你指定的 commit 的时候的文件状态

git reset commitid(HEAD) --mixed   // 这是默认的,等价 git diff (文件组)

// 把 HEAD,暂存区 修改为 你指定的 commit 的时候的文件状态,工作区保持不变

git reset commitid(HEAD) -- (文件组) // 撤销具体文件

12.  恢复之前版本 git revert

描述:  git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。

比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),
想要撤销版本二,但又不想影响撤销版本三的提交,
就可以用 git revert 命令来反做版本二,生成新的版本四,
这个版本四里会保留版本三的东西,但撤销了版本二的东西

场景:如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程

git revert -n 8b89621019c9adc6fc4d242cd41daeb13aeb9861

// -n 表示不强制合并(冲突)

然后再 git add,git commit即可

13.删除文件

git rm 文件组

14. git stash

场景:正在开发过程中,忽然有bug需要修复,此时又不好提交,所以暂时保存,先去修复bug,完成后回来再恢复之前的开发状态

git stash save 'msg'  // 保存

git stash apply // 恢复之前的保存, 不删除stash的记录

git stash pop //恢复之前的保存,且删除stash的记录

git stash list  // 查看stash记录

git stash pop stash@{2} //恢复具体stash记录的状态

git stash pop = git stash pop stash@{0} // 默认是0

15. ssh的配置 (github为例)

// 本地建立私秘钥

ssh-keygen -t rsa -b 4096 -C 'xxxxxxx@qq.com'

// -t 种类 rsa
// -b 字节长度
// -C 描述 comment


默认不断enter,会产生 id_rsa(私钥) id_rsa.pub(公钥,内容要加到github上面)

github默认也是找id_rsa,如果不用默认的,用其他名字,要另外配置

// github添加公钥

settings --> ssh and gpg keys --> new ssh keys

将id_rsa.pub的内容复制到内容去,title可以不管,保存即可

如果不使用默认的名字id_rsa:

// 生成私秘钥没有变化,命令行里名字自己编写,例如 mine_rsa

// 由于不是默认需要加到ssh

ssh -T git@github.com ~/.ssh/mine_rsa.pub

// 另外要在 ~/.ssh/ 配置config

cd ~/.ssh

touch config

修改config文件的内容,加入:

Host github.com
  IdentityFile ~/.ssh/mine_rsa

测试是否连接成功:

ssh -T git@github.com


// 如果出现 Hi lujie-hybrid!(这是username) You've successfully authenticated, but GitHub does not provide shell access.

// 就表示成功连接了

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐