git使用记录

摘自廖雪峰论坛整理:https://www.liaoxuefeng.com/wiki/896043488029600

git

【安装后配置用户信息】

全局配置,存储在~/.gitconfig
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

针对本项目,存储在.git/config
$ git config user.name "Your Name"
$ git config user.email "[email protected]"

$git config --list:查看所有配置信息

【创建版本库】
--初始化一个Git仓库,在指定目录下使用git init命令;

【添加/提交文件】
--添加文件到Git仓库,分两步:
  使用命令git add ,注意,可反复多次使用,添加多个文件;
  使用命令git commit -m ,完成(-m 附加说明)


【暂存区】
--unstage:git add添加的内容会放到暂存区,commit之后的放入当前分支版本库中。
它存放的是“修改”,也就是说当增加/删除/修改文件内容、增加/删除文件,都需要add,
然后commit之后才会提交到版本库,这个是和SVN区别很大的一个地方。(SVN修改内容后即
可commit)
【工作区】
--当前实际目录即为工作区。

【当前状态】
--查看当前状态 git status

【历史查看】
--历史包括的内容:
  git commit操作
  git branch xxx添加分支
  git merge xxx合并分支
  ……(待补充)
--查看提交历史git log
--简化查看的历史git log --pretty=oneline
--查看命令的历史记录:git reflog

【commit回退】
--目前已知可回退的操作(也就是git log中记录的东西)
--HEAD指向的版本就是当前版本,HEAD^上个版本,HEAD^^上上个版本...;
--回退方法一:git reset --hard commit_id
--回退方法二:git reset --hard HEAD^

【工作区修改内容回退】
--可以撤销当前工作区某个文件修改的内容:git checkout -- xxx。git chechout   恢复某个提交版本的文件
可以让这个文件回到最近一次git commit或git add时的状态。

【暂存区内容撤销】
--可以用git reset HEAD 把暂存区修改的文件操作撤销。

【删除版本库已提交的文件】
--当本地文件删除后,如何删除版本库中对应的文件呢?
利用git rm xxx 然后 git commit -m ""

【分支管理】-【创建与合并分支】
1、HEAD指向的就是当前分支
2、创建并切换到分支 git checkout -b dev ,等同于git branch dev,git checkout dev
3、查看分支 git branch
4、git checkout master 切换到master分支(fast-forward模式)
5、git merge dev 将dev分支合并到当前分支上
6、删除分支 git branch -d dev
【分支管理】-【解决冲突】
当合并分支时merge,可能会产生冲突
修改后,add 然后commit
【分支管理】-【查看分支合并历史】
git log --graph --pretty=oneline --abbrev-commit
它会以图形化的方式,显示分支、合并的情况、
【分支管理】-【分支合并禁用Fast forward模式】
git merge --no-ff -m "merge with no-ff" dev 
这样做的好处是可以在git log --graph --pretty=oneline --abbrev-commit结果中,显示
本条合并的信息,不然不会出现该merge的历史记录!!建议使用

【保留工作现场】
$ git stash 可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作。现在,用
git status查看工作区,就是干净的(除非有没有被Git管理的文件),因此可以放心地创
建分支来修复bug。
$ git stash list 查看当前保留的所有工作现场。
$ git stash pop 恢复现场的同时把stash内容也删了

【强行删除分支】
如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除

【多人协作相关】
--查看远程库信息-- git remote -v
--推送分支-- git push origin master
--推送其他分支-- git push origin dev
--拉取远程dev分支-- (默认git clone的是master分支),git checkout -b dev
origin/dev
--推送远程dev分支-- git push origin dev
--推送远程分支dev冲突(别人已经推送过)-- 拉取下来后解决冲突,首先指定本地dev分支与
远程origin/dev分支的链接:git branch --set-upstream-to=origin/dev dev,然后拉取
git pull 解决完成后 git push origin dev 

【rebase】git rebase【不太理解】
rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比

【标签管理】-【创建标签】
$git tag v1.0  --在当前分支上打标签,默认是打在最新commit上
$git tag --查看所有标签
--给以前提交的某个历史打标签:$git tag v0.9 f521521
$git show v1.0 --查看标签的详细信息
$git tag -a v1.2 -m "version v1.2 released" f545454 --创建带说明的标签
【标签管理】-【操作标签】
$git tag -d v1.0 --删除标签
$git push origin v1.2 --推送某个标签到远程
$git push origin --tags --推送所有未推送的标签
--删除远程标签:$git tag -d v1.2 删除本地标签 $git push origin :refs/tags/v1.2

【忽略文件列表】
在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去即
可。这个不需要自己手动写,可以从https://github.com/github/gitignore下载。

【git指令配置别名】
$ git config --global alias.st status --将status简写为st
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.last 'log -1' -- 显示最后一次提交信息
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h
%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --
abbrev-commit" --各种颜色区分,合并提交历史信息!!

【配置文件】
$ cat .git/config
 

github相关操作

【创建SSH Key】
1、用户目录下,查看有没有.ssh目录,如果有查看是否有id_rsa和id_rsa.pub这两个文件
2、没有则创建:ssh-keygen -t rsa -C "[email protected]"
3、id_ras.pub是公钥
4、打开github,settings,SSH Keys相关页面,点击add SSH Key,填上公钥文件中的内容

【推送本地库到github】
0、github上建立一个空的repository
1、本地repository仓库目录下,执行 git remote add origin [email protected]:haoboli/xxx.git
2、第一次推送 git push -u origin master,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
3、后续推送git push origin master

【远程仓库克隆】
1、git clone [email protected]:haoboli/xxx.git
 

你可能感兴趣的:(git)