本地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文件在文件中写入不需要提交的文件名即可。
常见的不需要提交的文件有:
- node_modules
- .DS_Store
- .idea
- .vscode
git分区
工作区
文件在本地修改
暂存区
文件add之后
版本库
文件commit之后
git基本操作
建议使用-v提交版本,好处是迫使你将描述写的更详细
版本控制
- git reset 将暂存区的文件退回到工作区
- git reset --herd 回到上一个版本(清空工作区)
- git reset --hard <版本id> 回到某一个(清空工作区)
- git reflog 查看所有的版本
- git log 查看之前的版本历史
- git log --pretty=oneline 使版本历史一行显示 git log --graph --pretty=oneline --abbrev-commit
- git checkout -- readme.txt 丢弃工作区文件的修改
- git reset HEAD readme.txt 把暂存区的修改撤销掉
- git revert <版本号> 撤销提交,撤销提交的代码会被记录下来
- history 查看历史记录
- git rm -r --cached dist 将dist从git中删除,不删除本地文件
在使用
git reset --hard进行版本回退的时候一定要注意当前在add中的文件以及被提交,否则你将永远无法找到该文件
分支
- git branch 创建分支
- git branch -d 删除分支
- git checkout 切换分支
- 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