首先需要进行git六行配置
git config --global user.name 你的英文名
git config --global user.email 你的邮箱
git config --global push.default simple
git config --global core.quotepath false
git config --global core.editor "code --wait"
git config --global core.autocrlf input
配置好之后可以通过以下代码查看配置
git config -l
初始化创建本地仓库
git init
输入git init会创建.git目录,用作本地仓库,本地仓库主要是用来作为代码版本管理,可以方便的记录和查看不同版本的代码,大致原理如下图所示
![e39ac1039a1cf370b03d7a2dab56e146.png](https://img-blog.csdnimg.cn/img_convert/e39ac1039a1cf370b03d7a2dab56e146.png)
操作指令
git add 路径
选中哪些变动是需要提交的,路径可以是绝对路径,相对路径和“ . ”," * "
可以创建.gitignore文件,在文件中添加描述,描述哪些变动是不需要提交的,常见的有node_modules,.DS_Store,.idea,.vscode
git status
查询提交文件
git commit -m 字符串
提交,并说明理由,字符串里如果有空格,就要用引号包起来
git commit -v
-v = --verbose,可以帮忙回顾改了什么东西,可以迫使自己把提交理由写的更详细一些
git reset --hard XXXXXX
XXXXXX是提交号的前6位,操作前先确保代码已经commit,因为这个操作会使未commit的改动消失
git log
查看提交版本记录,如有版本1,2,3,从3回滚到1,则查看不了版本2,3
git reflog
查看所以提交变动过的版本记录
git branch x 创建分支
git checkout x 切换到分支X
git checkout master 切换回主分支
git branch -d x 删除分支
关于分支的操作
下图是关于git分支原理示意图
![6c114dc9526b0ab57f20c53451749e71.png](https://img-blog.csdnimg.cn/img_convert/6c114dc9526b0ab57f20c53451749e71.png)
合并分支
首先 git checkout master 回到主分支,然后 git merge x 合并分支,合并分支后可能会出现冲突。关于冲突:
发现冲突:
- 在合并分支时,会得到 conglict 提示
- 使用 git status -sb 查看哪个文件冲突了
解决冲突:
- 依次打开冲突的文件
- 搜索====四个等于号,找到冲突的位置
- 在上下部分中选择要保留的代码
- 删除不需要的代码
- git add 对应文件
- 再次 git status -sb ,解决下一个文件的冲突
- 知道没有冲突,运行 git commit 提交代码
一些细节:
git add 处理的是文件变化,而不是文件,比如你删除一个文件后,依然要用 git add 来添加到待提交去。
主要使用 git add. 和 git commit -v 即可,其他命令很少使用。
git远程仓库
首先需要 SSH key 验证身份
生成 ssh key 步骤
- 运行 ssh -keygen-t rsa -b 4096 -C 你的邮箱
- 然后一直回车,知道没有提示
- cat ~/.ssh/id_ras.pub 得到公钥内容,粘贴到Github
- 打开Github,在设置界面填入公钥
如何测试配对成功
- ssh-T git@github.com
- 如果问你 yes/no,回答yes并回车
上传代码
完成上诉操作就可以上传代码了
- 新建Github Repo(远程仓库),复制其ssh地址
- 复制页面里面的代码,输入git remote add origin git@xxxxxxxxxx
- 在本地添加远程仓库地址(origin是远程仓库的默认名字,可以换,建议不要换,不要使用https://地址,因为每次都需要换密码)
git push -u origin master
推送本地master分支到远程 origin 的 master 分支
如果提示你应该 git pull ,就 git pull一下
git pull 是先把远程分支合并到本地对应的分支
如果远程分支没有更新过,才可以省略 git pull
-u origin master 的意思是设置上游分支
之后就不用再设置上游分支了,直接 git pull;fit push;
如何上传其他分支
方法一: git push origin x:x
方法二: git checkout x
git push -u origin x
下载别人的代码
如何下载代码
- git clone git@xxxxxx[目标路径]
- 如果是不同机器,要写上传新的 ssh key (一机一key)
- cd目标路径
- 然后就可以git add/git commit/[git pull]/git push 四连操作
如何下载某个分支
- 先下载整个仓库,然后git checkout分支名
- 或者自己去搜一些难记的命令
git clone git@?/xxx.git
- 会在当前目录下创建一个xxx目录
- xxx/.git 是本地仓库
- 一般你需要接一句 cd xxx
git clone git@?/xxx.git yyy
- 会在本地新建yyy目录
- git clone git@?/xxx.git .
- 最后一个字符是点,注意空格
- 不会新建目录,使用当前目录容纳代码和 .git
- 当前目录一开始最好是个空目录
可以上传到两个远程仓库吗
只需要两句话
git remote add repo2 git @xxxxxx
git push -u repo2 master
如果提示 git pull
- 说明新建项目时创建了一些文件
- 只需要运行 git pull 之后再运行刚才的命令
国内Github的代替品
- http://coding.net (腾讯战略投资)
- gitlab.com
- 码云 gitee.com (开源中国)
- 还是推荐 Github,因为大牛多
Git高级操作
使用bash alias简化命令(gst/ga/gc/gl/gp)
运行以下命令即可
touch ~/.bashrc
echo 'alias ga="git add"'>> ~/.bashrc
echo 'alias gc="git commit -v"'>> ~/.bashrc
echo 'alias gl="git pull"'>> ~/.bashrc
echo 'alias gp="git push"'>> ~/.bashrc
echo 'alias gco="git checkout"'>> ~/.bashrc
echo 'alias gst="git status -sb"'>> ~/.bashrc
然后重启命令行,或者运行source ~/.bashrc就可以使用了
美化 gitlog
code 编辑 ~/.bashrc中加入
alias glog="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit -- | less"
git rebase -i xxxx 美化历史命令
隐藏恢复文件
git stash 隐藏代码
git stash pop 恢复代码