语雀不支持公开分享了,打算将博客转移阵地,目前先把以前的博客转录进来
1.介绍
git cmd 类似Windows的cmd操作
git Bash 类似Linux下的操作
git Gui 图形化操作,操作太慢了,一般不使用
2.基本命令(Linux)
cd
..回退到上一个目录pwd
显示当前所在的目录ls
显示当前目录的所有文件touch
新建一个文件 例如:touch index.jsrm
删除一个文件夹rm
删除一个目录 例如:rm -r src 删除src目录mv
移动文件 例如:mv index.html src index.htmlreset
初始化终端clear
清屏history
查看历史命令exit
退出#
号表示注释
3.配置Git
git config -l
查看所有配置git config --system --list
查看系统配置git config --global --list
查看用户全局配置
4.环境变量
安装时自动放入环境变量,无需配置
5.基本理论
5.1.分为四个工作区域:
- workspace 工作目录(本地)
- index/stage 暂存区(暂存)
- repository 资源库(本地仓库)
- remote 远程区(git远程仓库)
5.2.核心命令
git add
本地放入暂存区git commit -m
'备注备注' 暂存区放入本地仓库git push
本地仓库提交到远程仓库git clone/fetch
将文件复制到本地-
git clone <版本库的url>
git pull
将文件拉取并合并到本地-
git pull <远程主机名> <远程分支名>:<本地分支名>
5.3.分支
- master 主分支
除了主分支 还有其他个人的分支 -
删除分支 git branch -d 分支名字
-
创建分支 git branch 分支名字
-
切换分支 git checkout 分支名字
-
合并到主分支 git merge 分支名字
-
查看合并后的分支 git branch --merged
-
查看未合并的分支 git branch --no-merged
-
查看状态 git status
-
打开文件查看冲突,确定保留什么内容,修改内容后,删除<<<<<<< , ======= , 和 >>>>>>>这些标记。保存文件。
-
将文件保持到暂存区 git add .
-
提交文件到本地仓库 git commit -m '文件'
-
提交到远程仓库 git push
5.4.文件操作
5.4.1.理论
- untracked 未跟踪(在文件夹中,未加入git,未参与版本控制) 通过git add 将状态变为staged;
- unmodify 文件已经入库,未修改
-
有两种去处:被修改变为`modify`,使用`git rm`移除版本库,则变为`untracked`文件;
- modified 文件已修改,仅修改,未作其他操作
-
也有两个去处:通过`git add` 可进入暂存staged状态,使用`git checkeout`则丢弃修改过,返回到`unmodify`状态,这个`git checkout`即从库这种取出文件,覆盖当前修改;
- staged 暂存状态
-
执行`git commit`则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为`unmodify`状态,执行`git reset HEAD filename`取消暂存,文件状态为`modify `
5.4.2.文件提交操作
查看文件状态
git status
添加本地工作区
git add .
提交到本地
git commit -m '文件'
5.4.3.文件忽略操作
*.txt
忽略所有以.txt结尾的文件,这样的话上传不会被选中!666.txt
忽略666.txt这个文件/temp
忽略temp文件的上一级的文件夹的内容,但不会忽略其他目录下的tempbuild/
忽略build/文件夹下面的所有文件doc/* .txt
会忽略doc子目录下的.txt文件 例如: 会忽略doc/notes.txt,但不包括doc/server/arch.txt
5.5.使用gitee
- 设置本机免密码登录
- 本机访问C:\Users\用户\ssh目录
- 输入命令ssh-keygen -t rsa
- 访问ssh/id_rsa.pub文件,记事本打开复制ssh公钥
- 登录gitee->设置->ssh公钥->粘贴刚刚复制的ssh公钥
6.使用场景以及使用出现的问题
6.1.如何强制覆盖本地文件
错误命令:
error: Untracked working tree file 'public/images/icon.gif' would be overwritten by merge.
使用git reset
命令(注:所有未被推送的本地提交都将丢失)
点击查看代码
在重置之前可以通过从master创建一个分支来维护当前的本地提交:
git checkout master
git branch new-branch-to-save-current-commits
从远程下载最新的,而不尝试合并或rebase任何东西
git fetch --all
将主分支重置为您刚刚获取的内容
git reset --hard origin/<branch_name>
6.2.如何同时删除本地分支和远程分支
点击查看代码
删除分支使用--delete(-d)选项,命令如下:
git push --delete <remote_name> <branch_name>
git branch -d <branch_name>
只删除本地分支
git branch -d branch_name
git branch -D branch_name
6.3.如何撤销最近一次提交
点击查看代码
1.如果你只是在本地进行提交commit,还没有推送push到远程,可以使用它来撤销
git reset HEAD~
保留提交之后的本地文件修改(soft 保留)
git reset --soft HEAD~
不保留提交之后的本地文件修改(hard 不保留)
git reset --hard HEAD~
弄错了一次错误提交
git commit -m '错误提交'
撤销本地提交
git reset HEAD~
修改文件后继续提交
git add ...
git commit -c ORIG_HEAD
2.如果你已经把提交推送到远程,只能本地回滚然后再次提交
回滚到上一次的命令使用
git revert HEAD
对文件重新修改后提交到远程即可
6.4.如何在提交之前撤销
点击查看代码
1. git add错了一个配置文件
git add db.conf
2. 撤销上一次git add
git reset db.conf
6.5.提交代码时发生冲突不能合入
发生场景:Web端对分支进行了操作,但是本地端没有git pull同步代码就修改提交,导致两部分代码冲突。
点击查看代码
1. 在本地仓库中, 更新并合并代码
git fetch origin
git rebase origin/uusama
2. 依据提示分别打开冲突的文件, 逐一修改冲突代码
3. 所有冲突都修改完毕后, 提交修改的代码
git add -u
git rebase --continue
4. 提交代码到远程分支 uusama
git push origin HEAD:refs/for/uusama
6.6.两个分支之间出现冲突如何解决
发生场景:比如当前有一个共有的开发分支dev(基准分支),个人分支uusama两个分支出现冲突。
点击查看代码
1. 拉取分支需要解决冲突的分支
git checkout uusama
2. 从基准分支合并
git merge --no-ff origin/dev
git add .
git commit -m "合并分支解决冲突"
3. 提交代码到远程分支 uusama
git push origin HEAD:refs/for/uusama
6.7.解决代理问题
发生场景:遇到了Failed to connect to www.google.com port 80: Timed out
点击查看代码
1.查询到当前设置的代理
git config -l
2.关闭http代理
git config --global --unset http.proxy
3.关闭https代理
git config --global --unset https.proxy