Git_基本操作以及思考

发布时间 2023-11-09 09:43:44作者: 辰令

git 重新理解

工作区域--执行状态
 工作区、暂存区(也可称为索引区)和版本区
    工作目录 / The working directory
    暂存索引 / Staging Index   查看命令:git ls-files
     git status 的结果就是作区和暂存区两者的差别即内容不一致的地方。
 状态:
   已修改(modified)、已暂存(staged)、已提交(committed)
  git checkout--文件名  撤销工作区改动
 0. .gitignore 中的文件会被忽略git status 命令,列出被忽略的文件,具体命令如下:git status --ignored
 1.untracked
   没有被追踪的文件,现在,我们使用 git add 命令,追踪修改的文件
   执行 git add 命令将文件从工作区添加到暂存区里面,
     Git 会把帮助我们生成一些 Git 的对象,它存储的是文件的内容和文件类型并不存储文件名称
	<<<----- (use "git reset HEAD ..." to unstage)  
 2.将其提交到代码仓库(本地),而其命令就是 git commit
  查看历史-- 交历史 / Commit history--  执行 git log 将显示 Commit History	
   <<<----- git reset 和 git checkout

 3.多次提交会形成一个线性节点链
  C2节点包含C1提交内容,同样C3节点包含C1、C2提交内容

 4.推送


 5.分支整合
    merge 与 rebase 都是非常强大的分支整合命令
   :合并(merge)以及变基(rebase
      交互式变基 (git rebase -i)、
      合并提交 (git merge --squash) 和重写提交 (git commit --amend) 	 
  
  merge 遇见冲突后会直接停止,等待手动解决冲突并重新提交 commit 后,才能再次 merge
  rebase 遇见冲突后会暂停当前操作,开发者可以选择手动解决冲突,
     然后 git rebase --continue 继续,
	      或者 --skip 跳过(注意此操作中当前分支的修改会直接覆盖目标分支的冲突部分),
		  亦或者 --abort 直接停止该次 rebase 操作


 6.其他
 .Branch 和 HEAD 
    HEAD分离的状态 (detached HEAD)
    HEAD引用和当前分支的引用		
  untracked   unmodified modified
  added       deleted renamed copied
  updated but unmerged ignored


pull 的本质就是fetch+merge
  git  merge 和

git 背后

Git 仓库中有五个对象:
    三个 blob 对象(保存着文件快照)、
    一个 树 对象 (记录着目录结构和 blob 对象索引)
     以及一个 提交 对象(包含着指向前述树对象的指针和所有提交信息
	 
 创建新分支的呢?即创建了一个可以移动的新的指针
 一个名为 HEAD 的特殊指针--》HEAD 指向当前所在的分支
 
 压扁提交(squash commits)--git-squash
 命令是 git rebase  ,该命令能将所有提交最终合并为一个提交

git

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET https://example.com/api/users?query={"name":"John","age":"30"}

# 指定克隆远程分支 `/develop/branch_1## 标题`
> git clone -b /develop/branch_1 git@www.gitee.com/ghimi/hello.git

>> git  check out	 
  git checkout -t origin/develop/branch_1 在本地创建分支并追踪同名的远程分支