在这里记录一些GIt相关的东西
-
关于分布式
分布式 VCS (Distributed VCS / DVCS)和中央式的区别在于,分布式 VCS 除了中央仓库之外,还有本地仓库:团队中每一个成员的机器上都有一份本地仓库,这个仓库里包含了所有的版本历史,或者换句话说,每个人在自己的机器上就可以提交代码、查看历史,而无需联网和中央仓库交互——当然,取而代之的,你需要和本地仓库交互。
-
常用命令
下面的命令都是省略了git
命令 | 操作 |
---|---|
clone url | 克隆远程仓库的代码 |
clone url dirName | 克隆远程仓库的代码,并重新制定工作目录文件夹的名字 |
status | 查看本地暂存区的状态 |
add fileName | 添加文件到暂存区,加入到管理,fileName无需引号 |
add . | 一次性添加所有的文件到暂存区 |
log | 查看提交记录 |
commit | 将暂存区的修改提交到本地仓库,会进入到vim的normal模式,输入commit信息 |
commit -m xxxx | 将暂存区的修改提交到本地仓库,并附带commit信息 |
push | 将本地当前分支的commit推送到远程仓库所对应的分支 |
push remote branch | 将本地当前分支的commit推送到指定远程仓库所对应的分支 |
pull | 从远程仓库上同步当前分支代码 |
pull remote branch | 从指定远程仓库上的某分支上同步当前分支代码 |
pull remote branch:branch | 从指定远程仓库的分支的创建一个本地分支 |
branch | 查看本地分支 |
branch xxx | 创建分支(仅仅创建而已) |
checkout branchName | 切换分支 |
checkout -b branchName | 创建一个新的分支并切换到该分支,是上面两个的合体 |
merge branch | 将某分支的commit合并过来 |
merge --abort | 合并代码出现冲突待解决时,取消当前的merge,恢复到merge前的状态 |
reset HEAD filename | 将文件从暂存区回退到工作区 |
diff | 查看工作区与暂存区文件的差异 |
-
一些应该知道的知识点
about HEAD
关于工作区(working stree),暂存区(stage),版本库(Repository)
add命令添加的是对文件的修改,而不是之前自己想的将某个文件管理起来。git跟踪并管理的是对文件的修改,而不是文件
使用场景
- 将一个已存在的工程推送到远程仓库
1. 添加一个名字为 mayun 的远程仓库
git remote add mayun https://gitee.com/zhengyouhong/git_practise.git
2. 直接push的话会提示本地版本落后于远程仓库,请pull再试,而pull的话需要将本地仓库的分支与远程仓库的分支建立联系
git branch --set-upstream-to=origin/remote_branch your_branch
3. 建立联系之后,git pull 可能会提示“refusing to merge unrelated histories”,意思是拒绝合并不相关的历史。可以使用下面的命令pull代码。
git pull --allow-unrelated-histories
4. 之后只需要将自己的工程push上去就可以了,其他用户只需要使用clone命令就可以将工程检出到自己本地
- 远程仓库相关 Remote
命令 | 操作 |
---|---|
git remote | 查看远程仓库 |
git remote -v | 查看远程仓库读写对应的地址 |
git remote add shortname url | 增加远程仓库 |
git remote | 查看远程仓库 |
git branch -a | 查看所有分支 包含本地,远程仓库 |
git branch -r | 查看远程仓库分支 |
git checkout -b dev origin/dev | 切换到一个从远程仓库分支为基础创建的分支 |
- tag相关
命令 | 操作 |
---|---|
git tag tagName | 添加tag |
git tag | 查看tag |
git tag |
忽略不需要追踪的文件或文件夹
在项目的根目录下创建 .gitignore文件,git在处理一些add操作的时候,会先根据 .gitignore的配置读取需要过滤的文件,然后再做处理。
配置规则:
#全局忽略某个文件 直接写下这个文件就行
.DS_Store
#全局忽略某个文件夹
.gradle/
这样就会忽略所有的 .gradle 文件夹
#只忽略当前目录下的文件或文件夹,子目录下的不忽略。( / 在前面)
/.gradle
**tip: / 在最前面表示只忽略当前目录下的文件夹,/ 在最后面表示忽略此目录下的所有子目录文件**
#!表示不忽略某文件或文件夹,一般是例外处理
!build.gradle
那build.gradle不会被忽略
#如果误将某文件添加暂存区了,使用git rm --cached fileaNmae, 可以将其移除
git rm -r --cached . 可以一次性移除所有