Git--- download网址:https://git-scm.com/downloadshtml
网上有不少Git安装教程,若是须要图形界面,windows下建议使用TortoiseGit,linux建议使用Git GUI或者GITK。linux
git config能够配置git的参数,能够使用git config --list
查看已经配置的git参数。其中有三个级别的保存位置,--system
、--global
、--local
,分别表示全部用户(本系统)、当前用户(全局)、本地配置(当前目录),默认使用--local
。git
在使用Git提交前,必须配置用户名和邮箱,这些信息会永久保存到历史记录中。sql
git config --global user.name "Tocy" git config --global user.email zyvj@qq.com
若是在windows下建议仍是配置下默认文本编辑器core.editor
和差别分析工具merge.tool
。docker
能够直接调用git init
初始化当前目录,即建立Git仓库。shell
若是须要克隆远程仓库,能够使用git clone
,好比:windows
git clone https://git.oschina.net/Tocy/SampleCode.git
在windows下的Git GUI中,提交很简单,右键-TortoiseGit-Commit。那么命令行下须要怎么处理?
Git中每一个文件都有三种状态:committed、staged、modified。它们之间关系以下:缓存
commit <-- stage <-- modify
commit --> --- --modifybash
咱们获取的Git仓库中的全部文件都是committed状态,若是你在本地修改了文件a,a的状态就变成modified的;若是使用git add a
,a的状态变成staged;若是使用git commit
,a的状态就变成commited。这种状态变化也说明复制代码是很方便的,可是提交更新请慎重。
固然还有一种文件状态,未跟踪状态(unversioned/untracked),经过使用git add
能够把未跟踪状态变动为staged;经过git rm
能够将staged或者committed状态变为未跟踪状态。编辑器
一般提交前先检查下修改了什么内容,当前Git目录下各文件的状态。
$ git status
On branch master
Initial commit Untracked files: (use "git add <file>..." to include in what will be committed) Readme.md nothing added to commit but untracked files present (use "git add" to track)
git add能够添加文件或者目录,也能够使用通配符。好比:
git add Readme.md # add file only git add *.cpp # add all cpp files git add /home/code/ # add all files in /home/code
git diff能够查看当前目录的全部修改。
提交以前,仍是单独确认下处于staged状态的文件有哪些,并保证修改正确。在实际应用中,可能还须要使用git diff
导出PATCH作代码走读。
能够使用git diff --staged
或git diff --cached
查看staged与上次提交快照之间的区别。
提交前需慎重。直接调用git commit
会弹出编辑器,输入提交日志(若是是多行日志,建议使用)。
针对单行日志提交的状况,能够使用以下命令:git commit -m "add readme"
。
还有一种快捷的提交方式,直接跳过stage缓存区,直接提交当前目录下的全部修改git commit -a
(使用这个命令前建议确认下当前目录的修改是否正确、必须)。
git rm会把文件从当前目录删除(不会保存删除的文件)。若是须要从Git仓库中删除,但保留在当前工做目录中,亦即从跟踪清单中删除,能够使用git rm --cached readme.md
。
能够使用git log
查看当前工程的全部提交的日志。
git log --stat # 仅显示摘要选项 git log --pretty=oneline # 定制记录格式 git log --graph # 图像化分支和版本更新
能够使用git remote
查看当前的远程库。git remote -v
能够显示对应的克隆地址。(对于多个远程仓库颇有用)
git remote add [short_name] [url]
能够添加新的远程仓库。
git fetch [remote-name]
能够从远程仓库抓取数据到本地。
也能够使用git pull
git push [remote_name] [branch_name]
默认使用origin和master。
git remote show origin
git remote rename [old_name] [new_name]
git remote rm [remote_name]
可以使用git tag
显示当前库中的标签。
git tag -a v0.1 -m "my version 0.1"
使用以下命令查看Tag日志信息(指定对应标签的名字)git show v0.1
也可以使用SHA-1的提交表示建立tag:git tag -a v0.2 [SHA-1] -m "my version 0.2"
默认的,git push不会推送标签信息到远程仓库,须要经过命令显式推送。git push origin v0.1
若是须要推送全部标签,使用git push origin --tags
git分支是轻量级的,速度很快,仅记录索引信息。
使用git branch
可显示当前全部分支。
能够使用--merged和--no-merged查看已经合并、未合并的分支。
能够使用下面命令直接切换并建立分支git checkout -b testing
等价于
$ git branch testing # 建立testing 分支 $ git checkout testing # 切换到testing分支
注意切换分支时请保持工做目录没有未提交的修改。Git鼓励使用分支,处理完问题以后合并分支便可。
将hotfix分支合并到master(主分支)上,须要经过下面命令:
$ git checkout master $ git merge hotfix
合并以后能够使用git branch -d hotfix
删除分支。
若是合并时存在冲突,须要手工修改。
转载自:https://www.cnblogs.com/tocy/p/git-command-line-manual.html