Git Essential 系列教程看完后的笔记,非常零乱,Just for Reference

###Lesson 1: config

  • homebrew

进入http://brew.sh/ 参考git essential视频1

此时与系统自带的git版本冲突,开始安装vim

  • vim
    brew search vim -> brew install macvim

###Lesson 2: config git config —global user.name/emai = “XXX” 命令

###Lesson 3: init git init

###☆Lesson 4: add git status & git add
理解add的含义:一个文件三个不同的状态:

  1. Changes to be committed
  2. Changes not staged for commit
  3. Untracked files (原始创建文件的状态)

trick: git add . (加一个. 表示当前文件夹下所有文件全部add)

###☆Lesson 5: commit git commit
git commit -a (-a表示追加 add+commit 一同完成)
git commit -m ‘commit message’
git commit -am ‘commit message’

###Lesson 6: ignore vim .gitignore (在project的根目录下使用)
.gitignore文件下文件命名法则:
.DS_Store
tmp
.swp~
test/
.txt (不追踪test下的txt文件)
!test/master.txt (在上一条的规则下,追踪master.txt)

###Lesson 7: Theory

  1. Working Directory (project文件夹)
  2. Staging Area(index) (一次次的add) (: 每修改一个地方之后是add,而完成一个整个有意义的修改之后再是commit -> commit message 才能有意义)
  3. Git Repository (核心是project下的 .git文件夹)

###☆Lesson 8: Theory —— Internals

  1. Blob : How git stores file contents
  2. Tree : How git stores Directory list
    ①Header information
    ②For each file and directory in the directory:
    file permissions
    object type(blob or tree)
    sha-1
    filename
  3. Commit : How git stores “snapshot!”
    author information
    committer information
    commit message
    sha-1 of any parent commits
    sha-1 of the tree that the commit points 两个图片的例子
  4. Git Reference:
    两个例子: ①branch / head ②merge影响

###Lesson 9: diff git diff filename 比对文件修改处
git diff –staged filename 和目前staged状态的文件对比
git diff HEAD filename 和目前commit状态的文件对比
不加filename 对比整个project目录下得修改

###Lesson 10: log git log
git log –oneline
git log –graph
git log –pretty=“%h, %cn, %cr “ 修饰符参考: http://git-scm.com/docs/git-log
gitk 图形化页面
之后使用:q 退出

###☆Lesson 11: branch git branch : 查看所有branch以及目前所在的branch
git branch experimental-1 : 创建一个branch叫做branch,但目前不在这个branch
git checkout experimental-1 : 切换到这个branch

注意理解commit与branch的关系
如果仅仅修改contents而不commit,在所有的branch上都会显示files被modified
直到在某个branch上修改被commit之后,才会在对应的branch上显示出来。

git checkout -b bug-fix-1 : 创建branch: bug-fix-1 与此同时切换到这个branch上
git log –online –graph –all:显示所有branch上得commit
git log –online –graph –all –decorate:

###Lesson 12: merge git alias gl= “git log –oneline –graph –all –decorate”
git merge branch_name : 把branch_name代表的branch合并到目前所在的branch,这个merge操作相当于一个commit.
git branch -d branch_name: 删除branch
git rebase branch_name: 含义见5:30处

###Lesson 13: github 配置ssh链接github的教程

###Lesson 14: github-tour 简介github功能

###☆Lesson 15: remote-push-pull // 把本地的repository提交到github
①git remote add “name of remote” “link”
e.g: git remote add origin git@github…
git remote
②git push
e.g:git push origin master

//把github的内容拉到本地repository
git pull
上述做法缺点是会自动完成merge工序,覆盖掉了本地未提交的修改。改进如下:
①git fetch
②切换到master分支
③git merge origin/master

###Lesson 16: github-page 两种建立pages的方法——非UI
建立UI的页面——参考pages.github.com

###Lesson 17: interactive-add git add -i //切出一个页面,控制更详细的add
特别注意其中的patch方法,可以把文件中的一处处修改分开来add,而非add一整个文件
git add -p //上述方法的缩写
进入git add -p之后,y/n表示是否stage某处修改,s表示split此处修改(使之细分)

###Lesson 18:git-stash stash:藏匿
git stash会把目前没有add的修改存放到一边,
git stash list: 查看目前stash的内容
git stash save “stash message” (stash的过程中提交stash message)
git stash apply 还原最近的一次stash (但不会删掉这个stash)
git stash apply 后面加一个index,apply指定的一次stash
git stash pop 还原最近的一次stash (同时删掉这个stash)
git stash drop 扔掉最近的一次stash

###Lesson 19: aliases ① 利用git的bulid-in功能
git config –global alias.(short command) (original command)
e.g. git config –global alias.s status
查看 cat ~/.gitconfig
② 利用bash的功能
命令行里:vim .bash_profile
输入:alias ga=“git add”
alias gst=“git status”
alias gi=“git add -i”
命令行里:source ~/.bash_profile

###Lesson 20: merge-conflict conflict的产生:在两个branch上对同一处进行了无法合并的修改并且commit了,当merge时会出现conflict

解决方法:根据git的反馈结果去自行修改冲突,选择留下来的版本

复习branch:
git branch:查看branch
git branch XXX: 创建branch(但停留在当前branch)
git checkout XXX: 切换到XXX_branch
git checkout -b XXX: 创建branch_XXX,同时切换到这个branch
git merge XXX: 把XXX_branch合并到当前所在的branch

###Lesson 21: guis 介绍了图形化的git页面,介绍了github:mac

###Lesson 22:vcprompt 快速查看目前的git状态
使用第三方插件: https://github.com/djl/vcprompt

###Lesson 23: conclusion 提供了一些深度学习git的资源链接

##总结

  • 了解git的底层推荐使用命令行,
  • 简单使用git推荐使用UI界面,
  • 在项目工作中学习Git,了解Git的重要性.

###Small notes git reset –hard