git常用命令
1、配置全局注释用户名称、关联邮件地址
git config --global user.name "junge8618"
git config --global user.email "513851613@qq.com"
说明:
如果要配置指定仓库,直接切换到该仓库目录,执行不带--global目录;
查看已经设置的值,使用命令:
git config --global user.name
git config --global user.email
查看所有已有的配置
git config --list
2.初始化本地仓库
进入目录,执行命令git init
3.添加文件或者目录
git add .
4.提交修改至本地仓库
git commit -m "Initial commit"
5.查看状态
git status
6.创建分支
git checkout -b comic_sans
7.使用-a同时增加和提交
git commit -am "Make header font comic sans"
8.分支合入主干分支
切换到主干分支git checkout master
合并分支到主干分支git merge comic_sans
查看日志git log
9.获取命令帮助信息
git help <verb>
git <verb> --help
man git-<verb>
10.克隆项目
git clone git://github.com/schacon/grit.git
git clone git://github.com/schacon/grit.git mygrit
11.删除文件
git rm -rf <file>... 已提交的文件删除,物理删除(暂存和本地目录都删除),需要使用命令git commit提交删除的文件
git rm --cached readme.txt 从暂存中删除
git reset HEAD <file>... 已标记的文件且未暂存的文件,通过该命令回滚
12.文件改名
git mv file_from file_to
13.查看历史提交记录
git log
git log --stat 只显示摘要
14.重新提交
git commit --amend
15.远程仓库
查看当前的远程库 git remote -v
添加远程仓库 git remote add [shortname] [url]
git remote add junge https://github.com/apache/rocketmq.git
从远程仓库抓取数据 git fetch [remote-name]
git fetch origin 会抓取从你上次克隆以来别人上传到此远程仓库中的所有更新(或是上次 fetch 以来别人提交的更新)。有一点很重要,需要记住,fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。
如果设置了某个分支用于跟踪某个远端仓库的分支(参见下节及第三章的内容),可以使用 git pull 命令自动抓取数据下来,然后将远端分支自动合并到本地仓库中当前分支。在日常工作中我们经常这么用,既快且好。实际上,默认情况下 git clone 命令本质上就是自动创建了本地的 master 分支用于跟踪远程仓库中的 master 分支(假设远程仓库确实有 master 分支)。所以一般我们运行 git pull,目的都是要从原始克隆的远端仓库中抓取数据后,合并到工作目录中的当前分支。
推送数据到远程仓库 git push [remote-name] [branch-name]
查看远程仓库信息 git remote show origin
远程仓库的重命名 git remote rename 例子:git remote rename pb paul
远程仓库的删除 git remote rm 例子:git remote rm paul
16.打标签
列显已有的标签 git tag 或者git tag -l "v1.4.2.*"
新建含附注的标签 git tag -a v1.4 -m 'my version 1.4'
查看相应标签的版本信息git show v1.4
后期加注标签 git tag -a v1.2 9fceb02
分享标签 git push origin v1.5 或者git push origin --tags(一次推送所有本地新增的标签上去)
17.分支
创建新分支 git branch testing
新创建分支时,不会自动切换,需要手工切换分支 git checkout testing
可以使用命令创建并切换分支 git checkout -b iss53 (切换分支前,保证本地的代码已经提交完全)
删除分支 git branch -d hotfix
合并分支(切换到主干,把iss53分支中的代码合并到主干)
git checkout master
git merge iss53
查看有冲突的合并文件 git status
冲突解决后,运行命令git add 将把它们标记为已解决状态
当前所有分支的清单(其中前面显示星号的是当前分支)
git branch
查看各个分支最后一个提交对象的信息
git branch -v
查看哪些分支已被并入当前分支(译注:也就是说哪些分支是当前分支的直接上游。)
git branch --merged
查看尚未合并的工作
git branch --no-merged
删除分支(没有合入主干则会提示)
git branch -d testing
强制删除分支(没有合入主干则会提示)
git branch -D testing
18.推送本地仓库到远程仓库
新增远程仓库
git remote add origin https://github.com/junge8618/git-demo.git
设置本地仓库为远程仓库的跟踪分支
git branch --set-upstream-to=origin/master master
git branch --set-upstream dev origin/dev
更新远程仓库到本地
git fetch
推送本地仓库到远程仓库
git push
19.查看历史记录的版本号id
git reflog
20.恢复到某个版本
git reset --hard 259e941
git reset --hard HEAD^ 恢复到上个版本
git reset --hard HEAD^^恢复到上2个版本
git reset --hard HEAD~100 恢复到上100个版本
21.命令 git checkout -- readme.txt 意思就是,把readme.txt文件在工作区做的修改全部撤销,这里有2种情况,如下:
readme.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态。
另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态。
22.合并分支禁止Fast forward(该模式下,删除分支后,会丢掉分支信息)
git merge --no-ff -m "merge with no-ff" dev
23.隐藏与还原工作现场
隐藏现场
git stash
查看隐藏列表
git stash list
恢复现场
git stash apply
git stash apply 0 #按序号恢复
删除
git stash drop
恢复并删除
git stash pop
常见问题:
1.我在Github新建一个仓库,写了License,然后把本地一个写了很久仓库上传。
先pull,因为两个仓库不同,发现refusing to merge unrelated histories
,无法pull
因为他们是两个不同的项目,要把两个不同的项目合并,git需要添加一句代码,在git pull
,这句代码是在git 2.9.2版本发生的,最新的版本需要添加--allow-unrelated-histories
假如我们的源是origin,分支是master,那么我们 需要这样写git pull origin master ----allow-unrelated-histories
如果合并后有冲突,需要先解决冲突,冲突解决后使用命令提交本地修改的文件git commit -am "解决冲突提示"
第一次推送远程仓库,需要使用如下命令:
git push --set-upstream origin master
参考博客:https://blog.csdn.net/andylauren/article/category/6860541