通过个人使用Git时候的遇到的使用场景,熟悉了解相关命令,也记录一下场景的使用方法。
所有场景均在Ubuntu16.04(Linux)操作系统下,其他操作系统有差异的地方自行查阅相关资料。
安装Git:
sudo apt-get install git
设置及查看Git配置:
user.name和user.email仅为提交到仓库时,记录为此次提交的提交者,以便日后查看。
global和当前仓库都有配置user.name和user.email时,遵循就近原则,使用当前仓库的。
git配置文件所在位置:~/.gitconfig
git config user.name 秦斌 //设置当前仓库用户名
git config user.email [email protected] //设置当前仓库用户邮箱
git config --global user.name 秦斌 //设置电脑当前用户的git全局用户名
git config --global user.email [email protected] //设置电脑当前用户的git全局用户邮箱
git config -l //查看全局git配置及当前仓库git配置
git config --global -l //查看全局git配置
git config user.name //查看当前仓库用户名
git config --unset user.name 秦斌 //删除当前仓库值为秦斌的用户名
git config --global --unset user.name 秦斌 //删除电脑当前用户值为秦斌的git全局用户名
初始化本地仓库:
初始化本地仓库分为两种情况。一种是从本地新建一个git仓库;另一种是通过克隆远程仓库(伴随着本地仓库的创建)。
git init //在当前路径创建本地git仓库
git clone <远程仓库https路径或者ssh路径> //克隆远程仓库到当前路径
git clone <远程仓库https路径或者ssh路径> <新建文件夹名> //克隆远程仓库到当前路径的一个新建文件夹中
生成SSH密钥
执行命令会生成两个密钥。id_rsa为私钥;id_rsa.pub为公钥(用于添加到服务器中)。生成密钥的路径:~/.ssh/
ssh-keygen -t rsa -C "<邮箱地址>" //执行命令后一直回车即可
添加文件
添加文件就是把文件从未跟踪状态或者已修改状态转换为已暂存状态,暂存区中存放文件变更信息。
git add [file1] [file2] ... //使文件进入暂存区
git add [dir] //使文件夹进入暂存区
git add . //使当前目录所有文件进入暂存区(如果在项目的根目录,则把项目所有文件放入暂存区)
git add -A //把项目所有文件放入暂存区
git add -u //他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。不会提交新文件(untracked file)。(git add --update的缩写)
git add --ignore-removal . //使当前目录除了移除的(即deleted file)所有文件进入暂存区(如果在项目的根目录,则把项目除了移除的(即deleted file)所有文件放入暂存区)
查看文件状态
git status //查看所有文件状态
git status [FileName] //查看指定文件状态
git diff [FileName] //工作区于本地库的指定文件进行差异对比
文件放弃暂存区(工作区内容保留)
git reset HEAD //不带参数则为mixed(默认),重置位置的同时,只保留Working Tree工作目录的內容,但会将Index暂存区 和Repository中的內容更改和reset目标节点一致。
git reset HEAD [file1] //后面跟文件名则为单独操作文件,取消暂存
放弃工作区单个文件所有修改
git checkout [file] //从暂存区将文件恢复到工作区,如果工作区已经有该文件,则会选择覆盖
放弃工作区所有文件修改
git checkout . //从暂存区将当前路径所有文件恢复到工作区,如果工作区已经有该文件,则会选择覆盖
放弃工作区所有新增文件和文件夹
git clean -xdf
提交修改
git commit -a -m "此次提交的说明" //提交所有修改
git commit [file1] [file2] ... -m "此次提交的说明" //选择性地提交文件
提交修改之后后悔了
git reset [commit id] //可以通过git log进行查看
分支操作
git branch [new branch name] //创建本地分支
git branch -d [branch name] //删除本地分支
git branch -D [branch name] //强制删除本地分支
git branch -v //查看本地分支
git branch -a //查看本地及远程分支
git merge [branch name] //指定分支合并到当前分支
git checkout [branch name] //切换本地分支
git checkout -t [remote name]/[branch name] //检出远程分支并创建本地分支进行关联
git diff [branch name] //当前分支工作区与指定分支对比差异,可以是远端分支,也可以是本地分支
git diff [branch name] [file name] //当前分支工作区的单个文件于与指定分支对比差异
远程仓库操作
git fetch //获取远程仓库信息
git push [remote name] :[branch name] //删除远程仓库分支(谨慎使用)
git remote prune [remote name] //删除远程仓库已经不存在的分支
git push [remote name] [branch name] //推送到指定远程库的指定分支
git fetch [remote name] [branch name] //拉取指定远程库的指定分支到本地库
git merge [remote name]/[branch name] //例子:git merge origin/master 注意左斜杠不是代表或,是代表指定远程库的指定分支
git pull [remote name] [branch name] //相当于fetch和merge
查看日志
git log //查看当前分支提交记录(记录过多分页显示时,“space”下一页,“b”上一页,“q”退出)
git log --pretty=oneline //只显示commit id和commit message,不显示author和date
git log --oneline //只显示commit id的前8个字符(可以代表这个commit)和commit message,不显示author和date
其他操作
git reflog //显示HEAD指针移动的轨迹
git rebase -i [commit id] //合并指定commit以后的所有commit,合并为同一个commit