Git常用命令备忘录

Git是分布式版本控制系统,相对于SVN等集中式版本控制系统,其特点是没有集中式版本控制系统的“中央服务器”,每台电脑保存有完整的版本库,这样在没有网络的情况下也能进行分支创建、切换等操作,同时也避免了中央服务器故障而导致的风险。

基本操作

创建仓库,即创建.git文件夹:

git init

 

文件添加到仓库,对应文件或目录生成快照索引,放入暂存区,后续此文件会被监控:

git add file.txt

git add -f app.class   //强制添加被gitignore的文件

 

文件提交,将已经在暂存区的索引信息提交到仓库:

git commit -m “some msg” file.txt

git commit -am //提交已跟踪文件到暂存区,并提交到仓库

 

提交日志:

git log --pretty=oneline   //pretty=onelne表示一行显示,graph分支合并图

git log中commit id表示唯一的版本,HEAD表示当前版本,HEAD^表示上一个版本,HEAD^^表示上上个版本,HEAD~100表示上100个版本,以此类推。

 

命令历史:

git reflog

 

比较版本差异:

git diff HEAD -- file.txt

 

查看工作区状态:

git status

 

撤销修改(直接丢弃工作区的文件):

git checkout -- file.txt

 

版本回退,也可以将暂存区的文件退到工作区:

git reset –hard <commit id>  //文件已修改,并保存到暂存区未commit

场景1:未保存到暂存区,直接替换工作区文件,用命令git checkout -- file。

场景2:保存到暂存区未commit,想要丢弃,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

保存到暂存区未commit(场景2)可以直接用:git reset –hard head

 

删除文件:

git rm  (需要commit)

远程仓库

创建SSH Key:

ssh-keygen -t rsa -C "youremail@example.com"

用户目录下游.ssh,其中id_rsa和id_rsa.pub分别代表私钥和公钥,公钥可以上传到github的SSH Keys页面

 

克隆远程仓库(默认clone最新分支,如果要切换其他分支,需要切换):

git clone

 

本地仓库和关联远程仓库(仅做关联):

git remote add origin git@server-name:path/repo-name.git

 

第一次推送远程仓库(-u关联本地master和远程mater):

git push -u origin master

 

后续推送远程仓库:

git push origin master

 

分支相关

查看分支:

git branch

 

创建分支:

git branch <name>

 

切换分支:

git checkout <name>

 

创建+切换分支:

git checkout -b <name>

 

合并分支到当前分支:

git merge <name>       //合并到当前分支

git merge --no-ff -m "merge with no-ff" dev  //禁止Fast forward,使用普通模式合并,合并后有历史分支,能看出来曾经做过合并,fast forward看不出来曾经做合并。

 

删除分支:

git branch -d <name>

git branch -D <name>  //-D表示强制删除分支,未合并分支内容会丢失

 

暂存工作区:

git stash

 

恢复工作区:

git stash pop

 

查看远程仓库信息:

git remote -v

 

从远程分支拉取:

git pull

 

本地分支推送远程:

git push origin branch-name

 

本地创建和远程对应的分支:

git checkout -b branch-name origin/branch-name

 

建立本地分支和远程分支关联:

git branch --set-upstream branch-name origin/branch-name

 

整理提交历史线:

git rebase

标签相关

标签是为了标记某些状态的版本,取标签就是取出对应打标签时刻的历史版本。

 

打标签:

git tag v1.0

 

查看所有标签:

git tag

 

对某次提交打标签:

git tag v0.9 f52c633

 

查看标签信息:

git show v0.9

 

指定标签信息:

git tag -a <tagname> -m "..."

 

推送本地标签到远程:

git push origin <tagname>

 

推送全部未推送的本地标签:

git push origin --tags

 

删除一个本地标签:

git tag -d <tagname>

 

删除一个远程标签:

git push origin :refs/tags/<tagname>

其他

配置别名:

git config –global alias.st status

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"

git lg

 

配置文件:

配置git时,加上—global针对当前用户起作用,如果不加,只对当前仓库起作用

每个git仓库配置文件都放在.git/config文件夹

 

.gitignore文件(要放到版本库):

github已经写好的gitignore文件:https://github.com/github/gitignore

 

Git Cheat Sheet:https://www.git-tower.com/blog/git-cheat-sheet/

 

posted @ 2018-08-28 16:57  bohaoist  阅读(128)  评论(0编辑  收藏  举报