实习技术总结(一)git 应用总结

202 阅读3分钟

总结 git 指令应用场景

  • 工作区:workspace,电脑里能看到的目录
  • 暂存区:stage,也叫索引 index。一般存放在.git目录下的 index 文件。
  • 本地仓库:local repository
  • 远程仓库:remote repository,例如 github 上的 git 仓库 image.png
  • 工作区 —> 暂存区 git add filename
  • 暂存区 —> 本地仓库 git commit -m message
  • 本地仓库 <—> 远程仓库 git remote add origin
  • 本地仓库 —> 远程仓库 git push
  • 远程仓库区 —> 本地仓库区 git clone url
  • 远程仓库 —> 工作区 git pull
  • 本地仓库 —> 工作区 git checkout

初始化项目文件

git init

回退版本 git reset

git log            查看提交历史版本(发布给别人看),有一串commit-id
git reflog         查看历史所有版本(私有,包括回滚)
git reset --hard <commit-id>   切回之前的版本 

注意:

  1. add仅仅是选择了要提交的版本,commit才是正式的提交
  2. reflog是我们私有的日记,log是发布给别人看的日记,都是记录commit的历史
  3. 提交是基于当前分支的快照

查看区别 git diff

git diff 

创建新的分支 git branch

一个分支代表一个独立的开发线 image.png

git branch    查看当前有多少分支
git branch X  创建新的分支X
git checkout X  切换到分支X
git checkout -b X 创建并切换到分支X
git branch -d X 删除当前分支

分支合并 git merge

git checkout master  到达你想要保留的分支 
git merge x  合并另一条分支
git merge --no-ff X 合并分支(禁用fast-forward模式)
git commit   不需要选择-m -v合并完分支的提交

通常合并分支时,直接使用 git merge 会优先以  fast-forward 模式合并,这种模式下看不出曾经做过合并,在删除分支之后,会丢掉分支信息。

因此,实际运用时,常加上 --no-ff  参数来禁用  fast-forward 模式,这样就会用递归(recursive)方式合并,会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

解决冲突 git status

git status -sb  发现哪个文件产生冲突
依次打开这些冲突文件,手动选择要保留代码
git add 文件a       
git status -sb  查看解决下一个冲突
全部解决完
git commit  不需要选择-m -v

保存现场 git stash

当手头工作没有完成时,先把工作现场 git stash 一下,然后去修复bug,修复后,再 git stash pop,回到工作现场。

git stash 保存工作现场
...
git stash pop 恢复工作现场

git 工作开发注意事项

  1. 经常git status查看自己本地分支的状态。
  2. 经常git fetch查看是否有远端可以拉取。git pull = git fetch + git merge
  3. 合并分支前要先git pull,注意合并的是哪个分支,如无特别情况使用git merge --no-ff
  4. 每次提交之前(add 和 commit 之前)先git diff去 review 自己的代码,确保自己只改了该改的部分,不要改多余的东西。
  5. push 之前需要先 pull 拉取最新代码。