配置
设置用户名和邮件地址,每次Git提交都会使用这些信息
$ git config --global user.name "John Doe"
$ git config --global user.email [email protected]
检查配置,列出所有Git当时能找到的配置
$ git config --list
查找特定配置git config <key>
,查找用户名
$ git config user.name
获取帮助
查找Git命令的综合手册
$ git help <verb>
$ git <verb> --help
$ man git-<verb>
如果不需要全面的手册,只需要可用选项,可使用-h
替代help
。
获取Git仓库
- 本地未版本控制的目录可使用
git init
命令创建,目录会创建一个.git
的子目录,然后可以通过git add
来指定所需的文件来进行追踪,然后执行git commit
。 - 克隆已版本控制的仓库可使用
git clone
命令创建Git仓库的拷贝
# 克隆远程仓库,并自定义mylibgit本地仓库名
$ git clone https://github.com/libgit2/libgit2 mylibgit
更新到仓库
状态
git status
命令查看哪些文件处于什么状态
追踪文件
git add
开始追踪一个文件,使用文件或目录的路径作为参数,如果参数是目录则追踪目录下所有文件
忽略文件
一般项目中有些文件无需纳入Git的管理,也不希望它们出现在未跟踪文件列表,通常是自动生成的文件,比如日志文件、编译的临时文件等。这种情况可以创建一个.gitignore
文件,列出要忽略的文件模式,如:
$ cat .gitignore
*.[oa] #忽略以.o或.a结尾的文件
*~ #忽略~结尾的文件
查看修改
git diff
能通过文件补丁的格式具体显示哪些行发生了变化
查看未暂存的文件更新了什么直接使用上面命令,要查看已暂存的文件需要加上-staged
或-cache
参数
提交更新
git commit
提交已暂存的文件,-m
参数指定提交信息
跳过暂存区域
git commit -a -m 'add new file'
使用-a
参数会自动把所有已经跟踪的文件暂存并提交,跳过git add
步骤。
移除文件
git rm
命令从Git中移除某个文件,从已跟踪文件清单移除并删除工作目录下指定文件
如果要删除之前修改过或已放到暂存区的文件,需使用强制删除选项-f
如果想把文件从Git中移除但保留在当前工作目录中,但忘记添加到.gitignore
文件,可使用-cached
选项:
$ git rm --cached README
移动文件
Git不显式跟踪文件移动操作,要在Git中对文件改名可以:
$ git mv file_from file_to
查看历史版本
git log
命令灰暗实现先后顺序列出所有提交
-p
或--patch
选项会显示每次提交所引入的差异,也可限制显示的日志条目数量,如-2
选项只显示最近的两次提交
--stat
查看每次提交的简略统计信息
pretty
使用不同的默认格式展示提交历史,如oneline
会将每个提交放在一行显示;还有short
、full
、fuller
,还有format
可以定制记录的显示格式
--graph
添加一些ASCII字符串来形象展示分支、合并历史
--since
和--until
按照时间作输出限制
$ git log --since=2.weeks #列出最近两周的所有提交
撤销操作
提交后漏掉一些文件或提交信息写错了,可以带--amend
选项重新提交,这个命令会将暂存区中的文件提交。
$ git commit --amend
取消暂存
$ git reset HEAD filename
撤销对文件的修改
$ git checkout -- filename
远程仓库使用
- 查看远程仓库
git remote
可以查看已经配置的远程仓库服务器,-v
会显示需要读写远程仓库使用的Git保存的简写与其对应的URL - 添加远程仓库
$ git remote add <shortname> <url>
- 远程拉取
# 只将数据下载到本地仓库,并不会合并或修改你当前的工作
$ git fetch <remote>
如果当前分支设置了跟踪远程分支,可以用git pull
来自动拉取后合并该远程分支到当前分支。
4. 推送到远程
# git push <remote> <branch>
$ git push origin master
- 查看某个远程仓库
# git remote show <remote>
- 远程仓库重命令
$ git remote rename oldName newName
- 移除远程仓库
# git remote remove <remote>
分支
- 分支创建
$ git branch branchName
# 不带任何参数则得到当前所有分支的一个列表
$ git branch
# -v 选项可以查看每个分支最后一次提交
# --merged 和 --no-merged 显示已合并和未合并的分支列表
- 分支切换
$ git checkout branchName
查看项目分叉历史,会输出提交历史、各个分支的指向以及项目的分支分叉情况
$ git log --oneline --decorate --graph --all
新建一个分支并同时切换到该分支上可使用-b
选项
$ git checkout -b branchName
- 分支合并
# 先切到主分支
$ git merge branchName
- 删除分支
在分支已经合并后可以删除对应分支,使用-d
选项
$ git branch -d branchName
分支合并时冲突
在两个不同分支中,对同一文件的统一部份进行了不同的修改,Git就会产生合并冲突,此时并不会创建一个新的合并提交,而是等待用户解决,此时可以使用git status
命令查看哪些包含合并冲突而处于未合并状态(unmerged)的文件。
远程分支
git ls-remote <remote>
显式获得远程引用的完整列表
git remote show <remote>
获得远程分支的更多信息