git学习1

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

image-20201014163646907.png

合并:递归合并

示例:

bitbicket git pull request

  1. git clone
  2. cd path
  3. git checkout -b + 分支名字:分支名字可以自己起,pull 的时候显示
  4. git add + 添加的文件名
  5. git commit -m + "提交备注"
  6. git push origin+你的分支名字
  7. bitbicket 网站上,去添加一个pull request
  8. 从你的分支 到 master :添加 title 、reviewer

git rm :

  1. git rm 或 git rm -r
  2. 可选【git add】
  3. git status
  4. git commit -m "desc"
  5. git push origin yourname
  6. 有时候会出现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使用的时候

你可能感兴趣的:(git学习1)