别说话,就是干。
安装:
- Mac:https://sourceforge.net/projects/git-osx-installer/
- Windows:https://git-for-windows.github.io/
- Linux:
apt-get install git
在任一地方右键git bash
即可开始操作。
环境变量好像默认是配置成功的,因此在cmd命令行也是可以敲git命令的。
命令:
- git config –global user.name “name”
- git config –global user.email “XX@example.com”
- git config -l # 显示配置详情
这里设置的姓名和邮件会显示在提交给仓库里的 log 等信息里,与认证等无关。--global
代表着表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
- 创建仓库和添加文件到仓库
- mk learngit # 创建文件夹
- cd learngit # 进入文件夹
- git init # 初始化,将本文件夹作为一个本地仓库
- git add a.txt # 将文件放入index(暂存)区
- git commit -m “wrote a readme file” # 提交
- git commit -a -m ‘added new benchmarks’ # 合并了add和commit两条命令
- git commit –amend # 附加提交,与上一次合成一次提交
上面这些命令就可以创建文件,提交文件了。注意运行了git add
之后又作了修订的文件,需要重新运行 git add 把最新版本重新暂存起来。
- 远程仓库的使用:
- git remote add origin git@github.com:yourname/your resposity.git #
git remote add [shortname] [url]
与一个github库关联,生成一个短名字,以便引用。 - git push -u oragin master #
git push
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。 由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。 - git fetch [shortname] # 从远程仓库抓取数据
- git merge origin/serverfix # fetch之后合并
- git pull <远程主机名> <远程分支名>:<本地分支名> #取回远程主机某个分支的更新,再与本地的指定分支合并。如果当是前分支,可省略本地分支
- git pull –rebase origin master #如果远程库中有些文件本地库没有,就会有冲突,所以在push之前先执行这句命令合并一下代码即可
- git remote rm origin #解除origin的绑定。
- git push [远程名] :[分支名] #删除远程分支
- git checkout –track origin/serverfix # 跟踪分支 同
git checkout -b serverfix origin/serverfix
- git remote add origin git@github.com:yourname/your resposity.git #
- branch管理:
- git branch #查看当前分支
- git branch a # 新建分支a
- git checkout a #切换到a分支
- git merge a #当前分支与a分支合并
- git branch -d a #删除a分支
- git branch –no-merged #未合并的分支
- git branch –merged
- git branch -v # 查看各个分支最后一个提交对象的信息
- 其它一些命令:
- git status # 查看工作区、暂存区状态
- git log # 查看历史提交信息 可以加上
--pretty=oneline
参数,然结果显示在一行。 - git diff a.txt #比较index和work directory中a.txt差异
- git reflog # 显示命令历史
- git reset –hard HEAD^ #回退到上一个版本
- git reset –hard HEAD~100 # 回退到上100个版本
- git reset –hard 4589 # 4589是版本号
- git checkout – a.txt #工作区做了修改没有add和commit可以丢弃修改
- git reset HEAD a.txt # 在add了之后,可以把暂存区的修改撤销掉(unstage),即,使上一条add命令失效,可以接着 git checkout – a.txt丢弃工作区的修改
- rm a.txt # 想删除工作区的文件,可以鼠标右键也可以用这条命令删除
- git rm a.txt # 删除暂存区和跟踪清单的文件
- git stash # 保存现场
- git stash pop # 恢复现场,或者
git stash apply
+git stash drop
.git diff [<path>...]
:这个命令最常用,在每次add进入index前会运行这个命令,查看即将add进入index时所做的内容修改,即working directory和index的差异。git diff --cached [<path>...]
:这个命令初学者不太常用,却非常有用,它表示查看已经add进入index但是尚未commit的内容同最后一次commit时的内容的差异。即index和git directory的差异.git diff --cached [<commit>] [<path>...]
:这个命令初学者用的更少,也非常有用,它表示查看已经add进入index但是尚未commit的内容同指定的<commit>
之间的差异,和上面一条很相似,差别仅仅<commit>
,即index和git directory中指定版本的差异。git diff <commit> [<path>...]
:这个命令用来查看工作目录和指定<commit>
的commit之间的差别,如果要和Git directory中最新版比较差别,则<commit>
=HEAD。如果要和某一个branch比较差别,<commit>
=分支名字。git diff <commit> <commit> [<path>...]
:这个命令用来比较git directory中任意两个<commit>
之间的差别,如果想比较任意一个<commit>
和最新版的差别,把其中一个<commit>
换成HEAD即可。
同时可以通过[<path>...]
参数将比较限定于特点的目录或文件
一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为.gitignore
的文件,列出要忽略的文件模式。比如.[oa]
是为.o或.a的文件忽略不管。
git 原理
refrence:
diff: http://blog.csdn.net/hudashi/article/details/7664385
http://stormzhang.com/github/2016/05/30/learn-github-from-zero3/
http://git.oschina.net/progit
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
分支: http://www.open-open.com/lib/view/open1328069889514.html#articleHeader3
http://www.ruanyifeng.com/blog/2014/06/git_remote.html
Written with StackEdit&sublime