小册子之Git

Git 是一个分布式版本控制系统(Distributed Version Control System - DVCS)

版本控制系统:
版本控制、主动提交、中央仓库这三个要素,共同构成了版本控制系统(VCS)的核心:开发团队中的每个人向中央仓库主动提交自己的改动和同步别人的改动,并在需要的时候查看和操作历史版本,这就是版本控制系统。

保存github帐号密码:

https://help.github.com/articles/caching-your-github-password-in-git/
命令:
git config --global credential.helper wincred
git config credential.helper store

复制仓库到本地并命名:

git clone git地址 本地仓库名字

Git 中的一些「引用」:HEAD、master、branch。这里总结一下:

  • HEAD 是指向当前 commit 的引用,它具有唯一性,每个仓库中只有一个 HEAD。在每次提交时它都会自动向前移动到最新的 commit 。
  • branch 是一类引用。HEAD 除了直接指向 commit,也可以通过指向某个 branch 来间接指向 commit。当 HEAD 指向一个 branch 时,commit 发生时,HEAD 会带着它所指向的 branch 一起移动。
  • master 是 Git 中的默认 branch,它和其它 branch 的区别在于:
    新建的仓库中的第一个 commit 会被 master 自动指向;
    在 git clone 时,会自动 checkout 出 master。
  • branch 的创建、切换和删除:
    创建 branch 的方式是 git branch 名称 或 git checkout -b 名称(创建后自动切换);
    切换的方式是 git checkout 名称;
    删除的方式是 git branch -d 名称。...

push 的本质

push 是把当前的分支上传到远程仓库,并把这个 branch 的路径上的所有 commits 也一并上传。
push 的时候,如果当前分支是一个本地创建的分支,需要指定远程仓库名和分支名,用 git push origin branch_name 的格式,而不能只用 git push;或者可以通过 git config 修改 push.default 来改变 push 时的行为逻辑。
push 的时候之后上传当前分支,并不会上传 HEAD;远程仓库的 HEAD 是永远指向默认分支(即 master)的。...

Git merge

merge 的含义:从两个 commit「分叉」的位置起,把目标 commit 的内容应用到当前 commit(HEAD 所指向的 commit),并生成一个新的 commit;
merge 的适用场景:
单独开发的 branch 用完了以后,合并回原先的 branch;
git pull 的内部自动操作。
merge 的三种特殊情况:
冲突
原因:当前分支和目标分支修改了同一部分内容,Git 无法确定应该怎样合并;
应对方法:解决冲突后手动 commit。
HEAD 领先于目标 commit:Git 什么也不做,空操作;
HEAD 落后于目标 commit:fast-forward。...

Git log

  • 查看历史中的多个 commit:log
    查看详细改动: git log -p
    查看大致改动:git log --stat
  • 查看具体某个 commit:show
    要看最新 commit ,直接输入 git show ;要看指定 commit ,输入 git show commit的引用或SHA-1
    如果还要指定文件,在 git show 的最后加上文件名
  • 查看未提交的内容:diff
    查看暂存区和上一条 commit 的区别:git diff --staged(或 --cached)
    查看工作目录和暂存区的区别:git diff 不加选项参数
    查看工作目录和上一条 commit 的区别:git diff HEAD...

写错的不是最新的提交,而是倒数第二个?

git rebase -i HEAD^^

说明:在 Git 中,有两个「偏移符号」: ^ 和 ~。
^ 的用法:在 commit 的后面加一个或多个 ^ 号,可以把 commit 往回偏移,偏移的数量是 ^ 的数量。例如:master^ 表示 master 指向的 commit 之前的那个 commit; HEAD^^ 表示 HEAD 所指向的 commit 往前数两个 commit。
~ 的用法:在 commit 的后面加上 ~ 号和一个数,可以把 commit 往回偏移,偏移的数量是 ~ 号后面的数。例如:HEAD~5 表示 HEAD 指向的 commit往前数 5 个 commit。

上面这行代码表示,把当前 commit ( HEAD 所指向的 commit) rebase 到 HEAD 之前 2 个的 commit 上:...

比错还错,想直接丢弃刚写的提交

你可以用 reset --hard 来撤销一条 commit
git reset --hard HEAD^

HEAD 表示 HEAD^ 往回数一个位置的 commit

git reset --hard 目标commit

想丢弃的也不是最新的提交

git rebase -i HEAD^^
撤销倒数第二条 commit

配置代理

git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080

撤销代理:

git config --global --unset http.proxy
git config --global --unset https.proxy

查看当前代理

git config --global --get http.proxy
git config --global --get https.proxy

你可能感兴趣的:(小册子之Git)