Git笔记

293 阅读4分钟

本地Git仓库

配置

在命令行中输入一下六行配置

1. git config --global user.name 你的英文名
2. git config --global user.email 你的邮箱
3. git config --global push.default simple
4. git config --global core.quotepath false
5. git config --global core.editor "code --wait"
6. git config --global core.autocrlf input

名字和邮箱和你的GitHub没有关系

git有什么用?

版本控制:主要实现可以让你的代码回退到之前的某一个版本。

.git的文件

用来容纳你每次提交代码的快照。

.gitignore文件

存放不需要提交的文件

操作如下:

在git仓库中创建一个.gitignore文件在文件中写入不需要提交的文件名即可。

常见的不需要提交的文件有:

  1. node_modules
  2. .DS_Store
  3. .idea
  4. .vscode

git分区

工作区

文件在本地修改

暂存区

文件add之后

版本库

文件commit之后

git基本操作

建议使用-v提交版本,好处是迫使你将描述写的更详细

版本控制

  1. git reset 将暂存区的文件退回到工作区
  2. git reset --herd 回到上一个版本(清空工作区)
  3. git reset --hard <版本id> 回到某一个(清空工作区)
  4. git reflog 查看所有的版本
  5. git log 查看之前的版本历史
  6. git log --pretty=oneline 使版本历史一行显示 git log --graph --pretty=oneline --abbrev-commit
  7. git checkout -- readme.txt 丢弃工作区文件的修改
  8. git reset HEAD readme.txt 把暂存区的修改撤销掉
  9. git revert <版本号> 撤销提交,撤销提交的代码会被记录下来
  10. history 查看历史记录
  11. git rm -r --cached dist 将dist从git中删除,不删除本地文件

在使用 git reset --hard进行版本回退的时候一定要注意当前在add中的文件以及被提交,否则你将永远无法找到该文件

分支

  1. git branch 创建分支
  2. git branch -d 删除分支
  3. git checkout 切换分支
  4. git merge <分支> 合并分支

合并分支冲突解决方法:先使用 git status -sb查看哪里出了问题,然后打开问题文件进行修改,使用git add添加解决冲突的文件,最后使用git commit直接提交不需要使用任何的参数。

高级操作

rebase

在版本历史记录中,可将多条分支历史合并为一条

git rebase <branch>

branch 对应需要merge的分支。rebase之后再再merge,查看提交记录时就不会出现多条分支并行的情况

优化提交的历史记录,将多条提交的历史记录合并为一条

git rebase -i HEAD~2

上面命令用于 rebase 过去的两条记录,执行后会出现以下编辑面板 将pick改为squash,第一个pick不需要改动 添加提交信息

途中如果发生冲突就先合并冲突。再使用 git rebase --continue 继续 rebase

也可以使用 git rebase --abort 取消 rebase

rebase 到指定的提交,不包括该提交

git rebase -i commit_id

cherry-pick

用于将其他分支的部分提及捡到当前分支

(master)$ git cherry-pick f001

为f001的commitID会被pick到当前分支

(master)$ git cherry-pick f001..k092

从f001到k092的commit会被pick到当前分支(不包括f001)

这里的f001必须要比k092早提交才行。 如果想要包含f001,可以使用如下命令

(master)$ git cherry-pick f001^..k092

stash

用于包当前工作进度

git stash

对部分文件进行stash操作

git stash -p

解决冲突

查看哪些文件发生了冲突

git status -sb
通过肉眼观察改留下和应该删除的代码
《《《《branch1
xxx
=======
yyy
》》》》branch2

远程仓库

下载秘钥

https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

进入上面链接之后找到一些命令并运行

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

上传代码

git remote add origin git@xxxxxx

git push -u origin master

第一次提交代码的时候需要使用 -u 参数之后只需要

git push

拉取代码

git pull 

拉取某个远程的分支到本地的某个分支

git pull <远程库名> <远程分支名>:<本地分支名> 

如何上传其他分支

方法一指定分支后上传将本地的x分支上传到远程的x分支

git push origin x:x

方法二切换分支后上传

git checkout x
git push -u origin x

下载人家的代码

git clone git@xxxxxx

git clone git@xxxxxx fileName //克隆一個仓库名字为fileName


git clone git@xxxxxx . //将克隆的文件灌到当前目录(注意当前目录应该为一个空的目录)

自己的代码使用ssh下载 人家的代码只能用https下载。

小技巧

amend

commit 之后又修改了一个小瑕疵,这是你想要将小瑕疵的提交与上一条commit记录合并,可以在commit时使用 --amend option

git commit -m '...' --amend

最终的 commit message 以最后一次amend为准

其他问题

误删除分支

git reflog // 查看所有分支
git branch <new-branch-name> <commit-id>

报错

pre-commit hook failed (add --no-verify to bypass) 问题

git commit --no-verify -m