likes
comments
collection
share

git从配置到工作中的使用(详细)

作者站长头像
站长
· 阅读数 51

一、配置git账户

配置账户信息

git config --global user.name "XXX" 
git config --global user.email "XXX"

查看账户信息

git config user.name 
git config user.email

二、建立git仓库

项目所在的目录不能有中文

git init

项目根目录下新建.gitignore,配置不需要git管理的文件夹

/node_modules 
/dist

三、提交到本地仓库

1. 单个文件增加到缓存区

git add readme.txt

2. 添加当前更改的所有文件到暂存区

git add .

3. 提交到本地仓库

git commit -m "Describing the content"

四、远程仓库

1. 创建SSH Key

ssh-keygen -t rsa -C "XXX@qq.com"

需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可

然后在C盘用户目录下(根据git上提示信息),可以找到 id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人

2. 设置 SSH Key

登陆GitHub,打开“Account settings”,“SSH Keys”页面:

然后,点“Add SSH Key”,在Key文本框里粘贴 id_rsa.pub(公匙)文件的内容,并保存

3. 添加远程仓库

git remote add origin https://github.com/xxx/xxx.git

4. 创建远程分支

git push -u origin master

加上-u,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令

之后可直接通过简化命令更新远程分支:

git push

5. 使用token

2021年8月13号,git将密码换成了token,使用密码登录已经上传不了代码

  1. 生成token

选择GitHub个人主页的Setting

选择Developer setting

选择Personal access tokens,选择Generate new token

设置token有效期,访问权限等。要使用token从命令行访问仓库,选择repo,从命令行删除仓库,选择delete_repo

选择Generate token,生成token(将token拷贝下来,token只生成一次)

把token添加到远程仓库链接中,这样就避免同一个仓库每次提交都要输入token

git remote set-url origin https://<your_token>@github.com/<USERNAME>/<REPO>.git

<your_token>:token

USERNAME:用户名

REPO:仓库名称

例如:

git remote set-url origin https://XXX@github.com/cwjbjy/react-ssr.git

五、修改commit

修改最后一次commit信息,新的commit原位替换旧的commit

git commit --amend

使用场景:想修改commit备注信息,或者将几个新的改动合并到最近的一次提交

六、合并多个commit

为了避免太多的commit造成版本控制的混乱,可将多个commit合成一个commit

git rebase -i f1f92b

以此commit为基础,在这之后的commit都需要合并

git从配置到工作中的使用(详细)

pick 的意思是要会执行这个 commit

squash 的意思是这个 commit 会被合并到前一个commit ,也可写成 s

通过编辑模式将新的commit合并到前一个commit,修改第二条 commit 改为 squash 或 s

git从配置到工作中的使用(详细)

pick ... ... 
s ... ... 
s ... ... 
s ... ...

然后按Esc,再输入 :wq 保存并退出

然后修改commit message信息,再输入 :wq 保存并退出,合并成功

如果过程有错误,可以使用 git rebase --abort 来撤销修改,回到没有开始操作合并之前的状态

七、查看修改记录

如果使用vscode的开发的话,可以安装 Git History 与 GitLens-Git supercharged两个插件。这样关于查看修改记录git了解即可,使用vscode开发工具去看git历史记录更方便

1. 掌握仓库当前的状态

git status

2. 查看文件修改前后的不同之处

git diff readme.txt

3. 查看最近提交日志

git log

4. 查看最近的4个commit

git log -n4

八、撤销修改

1. reset

回退到上一个commit提交

git reset --hard HEAD^

上上个版本就是HEAD^^

退回到某一个commit提交

git reset --hard 1094a

hard后面跟的是commit id不必输全,四五位就行

2. reset --soft

回退已提交的commit,并将commit的修改内容放回暂存区

git reset --soft HEAD^

在reset --soft指定commit号时,会将该commit到最近一次commit的所有修改内容全部恢复

例如:a->b->c

git reset --soft a

此时的HEAD到了a,而b、c的修改内容都回到了暂存区

3. revert

回退某个commit提交

情景:比如commit了三个版本(一,二,三),此时想撤销版本二,并且不想影响版本三的提交,可以用git revert命令回退版本二,生成新的版本四,这个版本四会保留版本三的东西,但撤销了版本二的东西

针对普通的commit

git revert -n 版本号

当想回退merge合并时,需添加-m 1参数,即保留master主分支

git revert -n aa20f8 -m 1

然后通过git add . 与 git revert --continue的方式,重新提交去掉这个commit的提交

4. 远程仓库回退

git push origin HEAD --force

九、增加到暂存区

如果在一个分支上改了代码,又想拉远程代码,又不想多创建一个commit,可以将代码先缓存起来

git stash

然后把远程代码拉下来后,将暂存区的代码还原

git stash pop

十、移除文件

情景:在开发中常常通过配置.gittignore文件来忽略不需要上传的代码,比如unpackage文件夹。但是由于之前没有设置的原因,这些文件已经被纳入了版本管理中,这是修改.gittignore是无效的。

解决办法:

git rm --cached -r unpackage

然后配置.gittignore

/unpackage/

十一、从远程拉到本地

git clone https://github.com/cwjbjy/react-management.git

十二、合并

1. git rebase

提交记录会非常清晰,没有分叉

2. git merge

不同于 git rebase 的是,git merge 在不是 fast-forward(快速合并)的情况下,会产生一条额外的合并记录,类似 Merge branch 'xxx' into 'xxx' 的一条提交信息

另外,在解决冲突的时候,用 merge 只需要解决一次冲突即可,简单粗暴,而用 rebase 的时候 ,需要依次解决每次的冲突,才可以提交

3. git cherry-pick

(1)合并不连续提交

合并 id 为 395 4e47 两个commit

git cherry-pick 395 4e47

(2)合并连续提交

git cherry-pick 395b^..4e47

(3)取消cherry-pick

git cherry-pick --abort

十三、从远程更新到本地

1. git pull

将本地库更新至远程库的最新状态

等价于:

git fetch + git merge

拉取远程dev分支

git pull origin dev

2. git fetch

与 git pull 不同的是 git fetch 操作仅仅只会拉取远程的更改,不会自动进行 merge 操作。对你当前的代码没有影响

使用 git fetch拉取代码步骤:

git fetch //将与本地库所关联的远程库的commit id 更新至最新 

git diff origin/xx //对比差异 

git merge //将远程库的代码合并到本地

十四、分支

1. 创建并切换分支

创建dev分支,然后切换到dev分支

git checkout -b dev

2. 切换分支

git checkout dev

3. 查看本地所有分支

git branch

4. 查看远程所有分支

git branch -r

5. 查看分支与远程的关联关系

git branch -vv

6. 删除分支

(1)删除本地分支

$ git branch -D dev

(2)删除远程分支

git push origin --delete dev

7. 拉取远程分支并创建本地分支

先更新本地库

git pull

拉取远程分支并创建本地分支

git checkout -b 本地分支名x origin/远程分支名x
  1. 重新命名分支
git branch -m

十五、tag

(1)打tag

git tag -a v0.0.0 -m "tag的描述"

(2)推送tag

git push origin v0.0.0

(3)本地删除tag

git tag -d v0.0.0

(4)远端删除

git push origin :refs/tags/v0.0.0

十六、强制推送和更新

(1)强制推送

git push -f

(2)强制更新到本地

git fetch --all //将远程主机的最新内容拉到本地
git reset --hard origin/master //强制更新覆盖本地
git pull

十七、误操作git导致代码丢失

(1)获取所有历史操作日志

git reflog

(2)恢复到某个操作id

git cherry-pick [reflog-id]

十八、查找哪次代码提交引入了错误

原理:将代码提交的历史,按照两分法不断缩小定位。

(1)查看历史提交

git log --pretty=online

(2)启动查错

第一个参数是最近一次的提交,第二个参数要搜索的commit id

git bisect start [终点][起点]

git bisect start HEAD 4d83cf

(3)没有问题,继续查找

如果二分位的commit Id 并没有影响出错,则继续查找(说明二分位之后的commit id没有造成bug)

git bisect good

(4)有问题,继续查找

如果有问题,说明二分位和终点之间有错误提交

git bisect bad

(5)不断重复步骤三、步骤四,直到查找到具体的commit id

(6)退出查找

git bisect reset

十九、结尾

git在工作中还是很重要的,希望这篇文章对大家有所帮助

码字不易,点赞支持!!!