1.创建项目(本地项目)
2.在github新建仓库
3.打开项目所在文件夹, 在文件夹上右键运行: git bash here
4.使用命令
- git init
- git add src
- git commit -m “first commit”
- git remote add origin git@github.com:MuyanGit/MuyanGit.github.io.git
- git push -u origin master
- 最后一步失败之后 git pull –rebase origin master 执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 有如下几种解决方法:
1.使用强制push的方法:
git push -u origin master -f
这样会使远程修改丢失,一般是不可取的,尤其是多人协作开发的时候。
2.push前先将远程repository修改pull下来
git pull origin master
git push -u origin master
3.若不想merge远程和本地修改,可以先创建新的分支:
git branch [name]
然后push
git push -u origin [name]
|
常用Git命令清单
一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。
名次解释
下面是我整理的常用 Git 命令清单。
几个专用名词的译名如下: Workspace:
工作区 Index / Stage:
暂存区 Repository:
仓库区(或本地仓库) Remote:远程仓库
一、新建代码库
1 2 3 4 5 6
| # 在当前目录新建一个Git代码库 git init # 新建一个目录,将其初始化为Git代码库 git init [project-name] # 下载一个项目和它的整个代码历史 git clone [url]
|
二、配置
Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 显示当前的Git配置 git config --list # 编辑Git配置文件 git config -e [--global] # 设置提交代码时的用户信息 git config [--global] user.name "[name]" git config [--global] user.email "[email address]" # 颜色设置 git config --global color.ui true # git status等命令自动着色 git config --global color.status auto git config --global color.diff auto git config --global color.branch auto git config --global color.interactive auto git config --global --unset http.proxy # remove proxy configuration on git
|
三、增加/删除文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| git add [file1] [file2] ...
git add [dir]
git add .
git add -p
git rm [file1] [file2] ...
git rm --cached [file]
git mv [file-original] [file-renamed]
git init git remote add origin git@github.com:MuyanGit/muyangit.github.io.git 删除远程分支 git push origin --delete <branchName> 覆盖本地 git fetch --all git reset --hard origin/master git pull
|
四、代码提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # 提交暂存区到仓库区 git commit -m [message] # 提交暂存区的指定文件到仓库区 git commit [file1] [file2] ... -m [message] # 提交工作区自上次commit之后的变化,直接到仓库区 git commit -a # 提交时显示所有diff信息 git commit -v # 将add和commit合为一步 git commit -am 'message' # 使用一次新的commit,替代上一次提交 # 如果代码没有任何新变化,则用来改写上一次commit的提交信息 git commit --amend -m [message] # 重做上一次commit,并包括指定文件的新变化 git commit --amend [file1] [file2] ...
|
五、分支
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| git branch
git branch -r
git branch -a
git branch [branch-name]
git checkout -b [branch]
git branch [branch] [commit]
git branch --track [branch] [remote-branch]
git checkout [branch-name]
git checkout -
git branch --set-upstream [branch] [remote-branch]
git merge [branch]
git cherry-pick [commit]
git branch -d [branch-name]
git push origin --delete [branch-name] git branch -dr [remote/branch]
git checkout v2.0
git checkout -b devel origin/develop
git checkout -- README
|
六、标签
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| git tag # 新建一个tag在当前commit git tag [tag]
git tag [tag] [commit]
git tag -d [tag]
git push origin :refs/tags/[tagName]
git show [tag]
git push [remote] [tag]
git push [remote] --tags
git checkout -b [branch] [tag]
|
七、查看信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| # 显示有变更的文件 git status # 显示当前分支的版本历史 git log # 显示commit历史,以及每次commit发生变更的文件 git log --stat # 搜索提交历史,根据关键词 git log -S [keyword] # 显示某个commit之后的所有变动,每个commit占据一行 git log [tag] HEAD --pretty=format:%s # 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件 git log [tag] HEAD --grep feature # 显示某个文件的版本历史,包括文件改名 git log --follow [file] git whatchanged [file] # 显示指定文件相关的每一次diff git log -p [file] # 显示过去5次提交 git log -5 --pretty --oneline # 显示所有提交过的用户,按提交次数排序 git shortlog -sn # 显示指定文件是什么人在什么时间修改过 git blame [file] # 显示暂存区和工作区的差异 git diff # 显示暂存区和上一个commit的差异 git diff --cached [file] # 显示工作区与当前分支最新commit之间的差异 git diff HEAD # 显示两次提交之间的差异 git diff [first-branch]...[second-branch] # 显示今天你写了多少行代码 git diff --shortstat "@{0 day ago}" # 显示某次提交的元数据和内容变化 git show [commit] # 显示某次提交发生变化的文件 git show --name-only [commit] # 显示某次提交时,某个文件的内容 git show [commit]:[filename] # 显示当前分支的最近几次提交 git reflog
|
八、远程同步
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| git fetch [remote]
git remote -v
git remote show [remote]
git remote add [shortname] [url] git remote add origin git@github.com:MuyanGit/MuyanGit.github.io.git
git branch –set-upstream backup origin/backup git branch --set-upstream-to=origin/backup git remote add origin git@github.com:MuyanGit/muyangit.github.io.backup.git
git remote remove origin
git pull [remote] [branch] git pull git@github.com:MuyanGit/MuyanGit.github.io.git master
git push [remote] [branch]
git push [remote] --force
git push origin 分支名 --force 强行推送当前master分支到origin远程仓库,即使有冲突-覆盖 git push origin master --force
git push [remote] --all
|
九、撤销
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| git checkout [file]
git checkout [commit] [file]
git checkout .
git reset [file]
git reset --hard
git reset [commit]
git reset --hard [commit]
git reset --keep [commit]
git revert [commit]
git stash git stash pop
|
十、其他
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| git init git config --global user.name "xxx" git config --global user.email "xxx@xxx.com" git config --global color.ui true git config --global color.status auto git config --global color.diff auto git config --global color.branch auto git config --global color.interactive auto git config --global --unset http.proxy git clone git+ssh://git@192.168.53.168/VT.git git status git add xyz git add . git commit -m 'xxx' git commit --amend -m 'xxx' git commit -am 'xxx' git rm xxx git rm -r * git log git log -1 git log -5 git log --stat git log -p -m git show dfb02e6e4f2f7b573337763e5c0013802e392818 git show dfb02 git show HEAD git show HEAD^ git tag git tag -a v2.0 -m 'xxx' git show v2.0 git log v2.0 git diff git diff --cached git diff HEAD^ git diff HEAD -- ./lib git diff origin/master..master git diff origin/master..master --stat git remote add origin git+ssh://git@192.168.53.168/VT.git git branch git branch --contains 50089 git branch -a git branch -r git branch --merged git branch --no-merged git branch -m master master_copy git checkout -b master_copy git checkout -b master master_copy git checkout features/performance git checkout --track hotfixes/BJVEP933 git checkout v2.0 git checkout -b devel origin/develop git checkout -- README git merge origin/master git cherry-pick ff44785404a8e git push origin master git push origin :hotfixes/BJVEP933 git push --tags git fetch git fetch --prune git pull origin master git mv README README2 git reset --hard HEAD git rebase git branch -d hotfixes/BJVEP933 git branch -D hotfixes/BJVEP933 git ls-files git show-branch git show-branch --all git whatchanged git revert dfb02e6e4f2f7b573337763e5c0013802e392818 git ls-tree HEAD git rev-parse v2.0 git reflog git show HEAD@{5} git show master@{yesterday} git log --pretty=format:'%h %s' --graph git show HEAD~3 git show -s --pretty=raw 2be7fcb476 git stash git stash list git stash show -p stash@{0} git stash apply stash@{0} git grep "delete from" git grep -e '#define' --and -e SORT_DIRENT git gc git fsck
git archive
|
十一、回滚
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 1. 代码回退 git log #查看回到的版本,然后用以下命令,将本地代码回退到某个版本:
git reset --hard HEAD^ #回退到上个版本 git reset --hard commit_id #退到/进到 指定 commit_id
git push origin HEAD --force #如果需要将回退的某个版本提交远程,可执行以下命令:
回滚之后,想恢复到新的版本怎么办? git reflog #打印你记录你的每一次操作记录 git reflog 可以查看所有分支的所有操作记录(包括 commit 和 reset 的操作),包括已经被删除的 commit 记录, git log 则不能察看已经删除了的 commit 记录,而且跟进结果可以回退道某一个修改。 2. 返回主分支 git checkout master
|
常用
初始化操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| git config --global user.name <name>
git config --global user.email <email>
git config --global core.editor <editor>
git config --global merge.tool <tool>
git config --list
|
创建新版本库:
1 2
| git clone <url> git init
|
修改和提交:
1 2 3 4 5 6
| git add . git add <file>
git mv <old> <new> git rm <file> git rm --cached <file>
|
提交文件:
1 2 3 4
| git commit -m <file> 'msg' git commit -m 'msg' git commit -amend git commit -C HEAD -a -amend
|
查看提交历史:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| git log git log -p <file> git blame <file>
gitk gitk --all
git branch -v
git status
git diff git diff --cached git diff --staged git diff master
|
git checkout 用法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| git checkout git checkout --
git checkout <file> git checkout -- <file>
git checkout HEAD <file1> <file2> git checkout HEAD .
git checkout HEAD^^
|
撤销操作:
1 2 3 4
| git reset --hard HEAD git reset --hard HEAD^^ git reset --hard <hash> git revert <hash> 撤销指定的提交12345
|
分支与标签:
1 2 3 4 5 6 7 8 9 10 11
| git branch git checkout <branch/tagname> git checkout -b loaclName origin/remoteName git branch <name> git branch -d <name>
git tag git tag <tagname> git tag -d <tagname>
git push origin --delete <branchname>
|
合并与衍合
1 2
| git merge <branch> git rebase <branch>
|
远程操作:
1 2 3 4 5 6 7 8 9 10 11 12 13
| git remote -v git remote show <remote> <url> git remote add <remote> <url> 要添加遥控器: git remote add origin yourRemoteUrl 最后 git push -u origin master
git fetch <remote> git pull <remote> <branch>
git push <remote>:<branch>/<tagname> git push -tags
|
备忘:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| git push origin local-branch:remote-branch git push origin master:master
// 同步本地分支到远端
git fetch origin master // 拉取远端master数据
git log -p master origin/master // 比较本地master和远端master的差别
git merge origin/master // 合并远端master
git push origin localName:remoteName git push origin master:master // 推送本地分支到远端分支
git checkout -b localName origin/remoteName // 创建本地分支并与远端分支相关联1234567891011121314151617 git branch -m old-name new-name // 重命名分支名
git branch --set-upstream-to=origin/branch // 将本地分支与远端分支相关联
|
常见问题
1.Git 警告 LF will be replaced by CRLF
原创DreamLee0625 最后发布于2017-09-18 11:22:43 阅读数 5558 收藏
展开
在使用git add . 命令时,出现如下提示:
1
| warning: LF will be replaced by CRLF in .idea/vcs.xml. 1
|
ps:这里只是以这个文件名(vcs.xml)举个例子。
意思是在.idea/vcs.xml文件中,LF(换行,Line Feed)将会被CRLF(回车换行,CarriageReturn)替代。这是因为在windows中换行符为CRLF,而在linux下的换行符为LF。
1
| The file will have its original line endings in your working directory.1
|
当报这个警告时是由于文件夹远程不存在,我是直接选择无视他继续提交。目前没有发现什么不妥。
在网上查询后发现,是因为git有自动转换功能,如果想要禁止自动转换功能,则执行如下步骤:
1 2 3 4
| rm -rf .git git config --global core.autocrlf false git init git add .
|
githubgit
方案1:git commit -m “first commit”
使用git push是,采用以下步骤:
1 2 3 4 5
| git init git add README.md git commit -m "first commit" git remote add origin https: git push -u origin master
|
产生如下错误:
1
| error: src refspec master does not match any. error: failed to push some refs to "xxxxxxx"
|
然后用如下方法解决了:
1
| git add .git commit -m "write your meaaage"
|
之后push就成功了,具体原因是什么呢?
https://segmentfault.com/q/1010000004615080?sort=created#comment-area)
FullStackDeveloper
这种错误一般是因为push的时候暂存区没有文件,确认下add的README.md存不存在
赞 6
评论 赞赏 2016-03-16
也可能是你分支不正确
-
git add . 会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件.
方案2:touch README
Git常见错误与操作:error: src refspec master does not match any解决办法
转载su1573 最后发布于2017-10-19 11:31:09 阅读数 4089 收藏
展开
Git常见错误与操作:error: src refspec master does not match any解决办法
一、 出现错误 error:src refspec master does not match any
原因分析:
引起该错误的原因是目录中没有文件,空目录是不能提交上去的
解决办法:
[html] view plain copy
1
| touch README git add README git commit –m’first commit’ git push origin master 1234
|
(来自:http://www.open-open.com/lib/view/open1366080269265.html)
实际上
[html] view plain copy
这一步之后创建了一个名为.git的文件夹,不过它在默认状态下是隐藏的,系统将隐藏文件夹显示出来,可以看到有这样一个文件夹。
github上传项目方法:
http://www.oschina.net/question/159132_86728
在你的电脑上装好git
大致流程是:
[html] view plain copy
1
| 1、 在github上创建项目 2、 使用git clone https://github/xx账号/xx项目.git克隆到本地 3、 编辑项目 4、 git add .(将改动添加到暂存区) 5、 git commit –m”提交说明” 6、 git push origin 将本地更改推送到远程master分支 123456
|
这样你就完成了向远程仓库的推送
如果在github的remote上已经有了文件,会出现错误。此时应当先pull一下,即:
[html] view plain copy
1
| git pull origin master 1
|
然后再进行:
[html] view plain copy
1
| git push origin master 1
|
二、如果输入git remoteadd origin git@github.com:djqiang(github帐号名)/gitdemo(项目名).git
1
| 提示出错信息:fatal: remoteorigin already exists.解决办法如下:123
|
[html] view plain copy
三、如果输入ssh -T git@github.com
出现错误提示:Permissiondenied (publickey).因为新生成的key不能加入ssh就会导致连接不上github。
1
| 解决办法如下:1、先输入ssh-agent,再输入ssh-add ~/.ssh/id_key,这样就可以了。2、如果还是不行的话,输入ssh-add~/.ssh/id_key 命令后出现报错Could not open a connection toyour authentication agent.解决方法是key用Git Gui的ssh工具生成,这样生成的时候key就直接保存在ssh中了,不需要再ssh-add命令加入了,其它的user,token等配置都用命令行来做。3、最好检查一下在你复制id_rsa.pub文件的内容时有没有产生多余的空格或空行,有些编辑器会帮你添加这些的。1234567
|
四、如果输入git push origin master
1
| 提示出错信息:error:failedto push som refs to .......解决办法如下:123
|
[html] view plain copy
1
| 1、先输入git pullorigin master //先把远程服务器github上面的文件拉下来 2、再输入git pushorigin master 3、如果出现报错 fatal:Couldn't find remote ref master或者fatal: 'origin' doesnot appear to be a git repository以及fatal: Could notread from remote repository. 4、则需要重新输入git remoteadd origingit@github.com:djqiang/gitdemo.git 1234
|
五、Git常见操作
使用git在本地创建一个项目的过程
[html] view plain copy
1
| makdir ~/hello-world //创建一个项目hello-world cd~/hello-world //打开这个项目 git init //初始化 touch README git add README //更新README文件 git commit-m 'first commit' //提交更新,并注释信息“first commit” git remote add origin git@github.com:defnngj/hello-world.git //连接远程github项目 git push -u origin master //将本地项目更新到github项目上去 12345678
|
六、gitconfig配置文件
1
| Git有一个工具被称为git config,它允许你获得和设置配置变量;这些变量可以控制Git的外观和操作的各个方面。这些变量可以被存储在三个不同的位置: 1./etc/gitconfig 文件:包含了适用于系统所有用户和所有库的值。如果你传递参数选项’--system’ 给 git config,它将明确的读和写这个文件。 2.~/.gitconfig 文件 :具体到你的用户。你可以通过传递--global 选项使Git 读或写这个特定的文件。 3.位于git目录的config文件 (也就是.git/config) :无论你当前在用的库是什么,特定指向该单一的库。每个级别重写前一个级别的值。因此,在.git/config中的值覆盖了在/etc/gitconfig中的同一个值。 在Windows系统中,Git在$HOME目录中查找.gitconfig文件(对大多数人来说,位于C:\Documents and Settings\$USER下)。它也会查找/etc/gitconfig,尽管它是相对于Msys 根目录的。这可能是你在Windows中运行安装程序时决定安装Git的任何地方。12345
|
七、配置相关信息:
1
| 1 当你安装Git后首先要做的事情是设置你的用户名称和e-mail地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中:1
|
[html] view plain copy
1
| git config --global user.name "John Doe" git config --global user.email johndoe@example.com 2 你的编辑器(Your Editor)123456
|
现在,你的标识已经设置,你可以配置你的缺省文本编辑器,Git在需要你输入一些消息时会使用该文本编辑器。缺省情况下,Git使用你的系统的缺省编辑器,这通常可能是vi 或者 vim。如果你想使用一个不同的文本编辑器,例如Emacs,你可以做如下操作:
[html] view plain copy
3 检查你的设置(Checking YourSettings)
如果你想检查你的设置,你可以使用 git config –list 命令来列出Git可以在该处找到的所有的设置:
[html] view plain copy
1
| git config --list 你也可以查看Git认为的一个特定的关键字目前的值,使用如下命令 git config {key}:12345
|
[html] view plain copy
1
| git config user.name 4 获取帮助(Getting help)12345
|
如果当你在使用Git时需要帮助,有三种方法可以获得任何git命令的手册页(manpage)帮助信息:
[html] view plain copy
1
| git help <verb> git <verb> --help man git-<verb> 123
|
例如,你可以运行如下命令获取对config命令的手册页帮助:
[html] view plain copy
转载来源:http://blog.csdn.net/s164828378/article/details/52425208