git常见命令:
- status
- add
- rm
- commit
- diff
基本概念:工作目录、对象库和索引
- 工作目录就是你当前git本地使用的目录,编辑改动来实现一些新的功能
- 对象库是git实现的核心,每一次文件的提交,已提交文件的类型等。基础的数据结构有:块(每一个版本,不包含任何元数据)、目录树(块的目录等)、提交和标签(如498a5603,指定一次提交)。
- 索引是临时、动态的目录结构的索引。比如add之后,本地的索引就会更新
如何区分改动:
git对每一个对象计算SHA1的160位的散列值,可以认为一个SHA1的散列值对应唯一的一个对象,这样就可以通过160位SHA1的比较来确定对象是否被改动过,例如一个大的文件A包含两个文件B和C,C在另一个版本库中被改为D,在比较的时候可以发现A的SHA1不同知道A被改动过,但是B的SHA1是相同的代表改动不在B文件内
结构:
工作目录 --- 索引 --- 版本库,索引成为当前工作目录和版本库的缓冲,当你add,rm之后,索引会立即进行更新,但是版本库只有在你commit之后才会进行更新
分支:分支=隔离版本、阶段、开发者...
diff:
-- 改动前
++ 改动后
@@ -(改动前部分) 1 (从第一行开始) ,4 (共4行被改动) +(改动后部分) 1(同理), 5 @@
git diff:这里比较的是 已经更改未add(也就是比较 工作目录和索引)
git diff HEAD:工作目录和版本库diff
git diff --cached:索引和版本库diff
合并:递归合并
示例:
bitbicket git pull request
:
git clone
cd path
-
git checkout -b
+ 分支名字:分支名字可以自己起,pull 的时候显示 -
git add
+ 添加的文件名 -
git commit -m +
"提交备注" -
git push origin
+你的分支名字 -
bitbicket
网站上,去添加一个pull request
- 从你的分支 到
master
:添加title 、reviewer
git rm :
- git rm 或 git rm -r
- 可选【git add】
- git status
- git commit -m "desc"
- git push origin yourname
- 有时候会出现reject,需要重新git pull origin yourname
拉取特定的分支(未PUSH到远程仓库的):
git remove add < name > < url >
然后git fetch < name >
IDEA中可以在branches中选择checkout还是merge into 当前目录
如果在pull request的时候发现当前分支需要update,
先使用git stash list暂存,然后pull最新代码到本地,再恢复
如果是JB系列IDE的话,使用IDE附带的比较方便,尤其是在git diff和企业版GitHub使用的时候