文章目录
本文值讲 Git 的使用,至于安装和SSH秘钥的配置一概不涉及。
1. Git 基本命令
Git Bash 的使用与 Linux命令相似。
cd
:改变目录cd..
:回退到上一个目录,直接cd
进入默认目录pwd
:显示当前所在的目录路径ls(ll)
:都是列出当前目录中的所有文件,只不过ll
列出的内容更详细touch
:新建一个文件,例如:touch index.js
就会在当前目录新建一个index.js的文件rm
:删除一个文件,rm index.js
就会把index.js删除mkdir
:新建一个目录rm -r
:删除一个文件夹,rm -r src
就是删除src文件夹(不要在Linux里轻易尝试rm -rf /
,我试过哈哈哈哈哈,突然啥都没了,根目录都没了)mv
:移动文件 例如:mv index.js src
就表示要把index.js文件移动到src文件夹里reset
:表示重新初始化终端、清屏clear
:清屏history
:查看历史命令help
:帮助exit
:退出
2. Git 配置
git config --system --list
:查看系统config
git config --global --list
:查看当前用户配置
git config --global user.name "gty"
:设置用户名
git config --global user.email 1157836448mr@163.com
:设置用户邮箱
3. Git基本原理
Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。
- workspace:工作区,就是你平时存放项目代码的地方
- stage:暂存区,用于临时存放你的改动,事实上他只是一个文件,保存即将提交到文件列表信息
- repository:本地仓库区,就是安全存放数据的地方,这里面有你提交到所有版本的数据,其中head指向最新放入仓库的版本
- remote:远程仓库区,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
4. 项目搭建
4.1 搭建本地仓库
使用 git init
命令。
4.2 克隆远程仓库
git clone [url]
:克隆远程仓库。
5. 文件状态
使用 git status [filename]
:指定参数时查看指定文件状态,否则查看全部文件状态。
- Untracked:未跟踪,此文件在文件夹中,但没有加入到git库,不参与版本控制,通过Git add状态变为Staged
- Unmodify:文件已入库,未修改,即版本库中的文件快照内容与文件夹中完全一致,这种类型的文件有两种去处,如果他被修改而变为Modified,如果使用git rm移出版本库,则成为Untracked文件
- Modified:文件已修改,仅仅是修改,并没有进行其他操作,这个文件也有两个去处,通过git add可进入暂存staged状态,使用git checkout则丢弃修改过,返回到unmodify状态,这个git checkout即从库中取出文件,覆盖当前修改
- Staged:暂存状态,执行了git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodified状态,执行git reset HEAD filename取消暂存,文件状态为Modified
6. 提交时忽略一些文件
在主目录下建立 ”.gitignore” 文件,此文件有如下规则:
- 忽略文件中的空号或以#开始的行将会被忽略
- 可以使用Linux通配符,例如“*”代表任意多个字符,“?”代表一个字符,“[abc]”代表可选字符范围,“{string1,string2,….}”代表可选的字符串
- 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略
- 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录的文件不忽略
- 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)
形式 | 含义 |
---|---|
*.txt | 忽略所有.txt结尾的文件 |
!lib.txt | lib.txt不被忽略 |
/temp | 仅忽略项目根目录下的TODO文件,不包括其他目录temp |
build/ | 忽略build/目录下的所有文件 |
doc/*.txt | 忽略 doc/notes.txt 但不包括 doc/server/arch.txt |
doc/**.txt | 忽略 doc/notes.txt,doc/server/arch.txt,doc/s/b/arch.txt |
7. SSH配置
配置的 ssh 私钥公钥都会存放在 C:\Users\ASUS\.ssh
目录下,生成时需要删除目录下的内容。
ssh-keygen -t rsa -C '邮箱'
,一直按Enter,生成密钥;- 将公钥文件
id_rsa.pub
中的内容复制到 GitHub或者gitee的ssh配置那里。
8. 分支操作
命令 | 含义 |
---|---|
git branch | 列出所有本地分支 |
git branch -r | 列出所有远程仓库的分支 |
git checkout [branch-name] | 切换分支 |
git checkout -b [branch-name] | 新建一个分支,并切换到该分支 |
git merge [brach] | 合并分支到当前分支 |
git branch -d [branch-name] | 删除分支 |
git push origin --delete [branch-name] | 删除远程分支 |
master 分支应该是非常稳定,是用来发不新版本的,一般不在上面进行工作。
9. 推送拉取
git remote add name [url]
:为仓库的URL取一个别名,别名为 name
git remote -v
:查看当前别名
9.1 推送步骤
git init
git add .
,如果是添加全部文件,就是后面加.
,单个文件就加文件名git commit -m "message"
git remote add nick-name [仓库]
给仓库取别名git push -u nick-name master
将本地的 master 分支推送到 origin 主机的 master 分支。
9.2 拉取步骤
git pull nick-name master
将远程主机nick-name的分支master拉取过来
如果之前有文件,则必须pull才能push
9.3 删除文件
- 在本地中输入
git rm [文件名]
对本地仓库的文件进行删除,文件夹的话使用git rm -f [文件夹名]
- 使用
git commit -m "message"
进行提交 - 使用
git push -u nick-name master
进行提交