sudo apt-get install git
$ git config --global user.name "runoob"
$ git config --global user.email [email protected]
git config --list --global
要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,命令格式如下:
git remote add [shortname] [url]
例如
git remote add origin [email protected]:DreamCats/git-testone.git
本例以 Github 为例作为远程仓库,如果你没有 Github 可以在官网 https://github.com/注册。
由于你的本地 Git 仓库和 GitHub 仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息:
使用以下命令生成 SSH Key:
$ ssh-keygen -t rsa -C "[email protected]"
后面的 [email protected] 改为你在 Github 上注册的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。
成功的话会在 ~/ 下生成 .ssh 文件夹,进去,打开公钥 id_rsa.pub
,复制里面的 key。
$ ssh-keygen -t rsa -C "[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/tianqixin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): # 直接回车
Enter same passphrase again: # 直接回车
Your identification has been saved in /Users/tianqixin/.ssh/id_rsa.
Your public key has been saved in /Users/tianqixin/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:MDKVidPTDXIQoJwoqUmI4LBAsg5XByBlrOEzkxrwARI [email protected]
The key’s randomart image is:
±–[RSA 3072]----+
|E*+.+=oo |
|%Oo+oo=o. . |
|%.o.o. |
|OO. o o |
|+o+ S |
|. |
| |
| |
| |
±—[SHA256]-----+
回到 github 上,进入 Account => Settings(账户配置)。
左边选择 SSH and GPG keys,然后点击 New SSH key 按钮,title 设置标题,可以随便填,粘贴在你电脑上生成的 key。
为了验证是否成功,输入以下命令:
$ ssh -T [email protected]
The authenticity of host ‘github.com (52.74.223.119)’ can’t be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes # 输入 yes
Warning: Permanently added ‘github.com,52.74.223.119’ (RSA) to the list of known hosts.
Hi tianqixin! You’ve successfully authenticated, but GitHub does not provide shell access. # 成功信息
以上命令说明我们已成功连上 Github。
之后登录后点击" New repository " 如下图所示:
之后在在Repository name 填入 runoob-git-test(远程仓库名) ,其他保持默认设置,点击"Create repository"按钮,就成功地创建了一个新的Git仓库:
创建成功后,显示如下信息:
以上信息告诉我们可以从这个仓库克隆出新的仓库,也可以把本地仓库的内容推送到GitHub仓库。
$ mkdir runoob-git-test # 创建测试目录
$ cd runoob-git-test/ # 进入测试目录
$ echo "# 菜鸟教程 Git 测试" >> README.md # 创建 README.md 文件并写入内容
$ ls # 查看目录下的文件
README
$ git init # 初始化
$ git add README.md # 添加文件
$ git commit -m "添加 README.md 文件" # 提交并备注信息
[master (root-commit) 0205aab] 添加 README.md 文件
1 file changed, 1 insertion(+)
create mode 100644 README.md
# 提交到 Github
$ git remote add origin [email protected]:tianqixin/runoob-git-test.git
$ git push -u origin master
git --help //查看相关git操作指令
添加推送内容
git add -A 表示添加所有内容;
git add . 表示添加新文件和编辑过的文件不包括删除的文件;
git add -u 表示添加编辑或者删除的文件,不包括新添加的文件。
git add -f /test/ 表示对test目录下的文件进行添加
查看内容缓存状态
git status 命令用于显示工作目录和暂存区的状态。使用此命令能看到上次提交之后是否有对文件进行再次修改;
git status不显示已经commit到项目历史中去的信息。看项目历史的信息要使用git log。
git status -s 简短输出修改文件有哪些
git diff 不加参数即默认比较工作区与暂存区差异
分支管理
1.创建分支命令:
git branch (branchname)
2.切换分支命令:
git checkout (branchname)
3.列出分支
git branch
内容管理
git pull 下载远程代码并合并
git push 上传远程代码并合并
git clone git://github.com/schacon/grit.git mygrit 拉取代码
git reset --hard origin/master //把HEAD指向最新下载的版本,强制使用远端覆盖本地内容
git checkout . && git clean -df
第一步: git log --pretty=oneline 查看当前提交的日志
第二步: git revert commitID revert你想回退的版本
第三步: 会进入一个新的编辑界面,编写commit的信息
第四步: git log --pretty=oneline 再次查看当前提交的日志
第五步: push 代码(git push或者用AS push)
例如
git log --pretty=oneline 查看当前提交的日志。
git reset --hard 提交id 撤销指定提交ID的commit文件。
git log --pretty=oneline 查看是否撤销成功。
1.新建分支
git branch xxx (xxx填写你的分支名称)
2.查看所有分支
git branch -a
3.切换到某一分支
git checkout xxx (xxx填写要切换的分支名称) git checkout . 则清除本地未添加到缓冲区的内容
4.添加修改代码到缓存(注意最后的"."前面有个空格)
git add .
5.添加提交代码的备注
git commit -m "xxx" (xxx为本次提交代码的备注)
6.提交代码到指定分支(提供本地分支—常用)
git push origin xxx (xxx为要提交代码的分支名称)
可以使用 git checkout – filepathname (比如: git checkout – readme.md ,不要忘记中间的 “–” ,不写就成了检出分支了!!)。
放弃所有的文件修改可以使用 git checkout .
命令。
此命令用来放弃掉所有还没有加入到缓存区(就是 git add 命令)的修改:内容修改与整个文件删除。
但是此命令不会删除掉刚新建的文件。因为刚新建的文件还没已有加入到 git 的管理系统中。所以对于git是未知的。自己手动删除就好了。
撤消之前未add的所有修改
git reset --hard HEAD
可以使用 git reset HEAD filepathname (比如: git reset HEAD readme.md)来放弃指定文件的缓存,
放弃所有的缓存可以使用 git reset HEAD .
命令。
此命令用来清除 git 对于文件修改的缓存。相当于撤销 git add 命令所在的工作。
在使用本命令后,本地的修改并不会消失,而是回到了如(一)所示的状态。继续用(一)中的操作,就可以放弃本地的修改。
可以使用 git reset --hard HEAD^
来回退到上一次commit的状态。
此命令可以用来回退到任意版本:git reset --hard commit_id
其中commit_id可以通过git log去查询。
https://git-scm.com/book/zh/v2
问题: error: failed to push some refs to。。。
原因:别人推送了代码。
git reset --soft HEAD^
git stash
git pull
git stash pop
git push -u origin master
git提交时报错:Updates were rejected because the tip of your current branch is behind
使用强制推送
git push -u origin master -f
error: Pulling is not possible because you have unmerged files.
git reset --hard FETCH_HEAD
git pull
ssh: connect to host port 22: Connection refused
原因:
远程服务器地址错误
或者
没有设置公私秘钥
解决:
1.远程服务器地址错误
git remote rm origin
git remote add origin [url]
2.如果没有设置公钥
则回到最开始设置公钥教程的地方
ssh-keygen -t rsa -C "[email protected]"
并打开公钥 id_rsa.pub,复制里面的 key,把内容拷贝到github,或者gitlab的设置密钥栏内。
我想把本地合并后的master push到远程master上,但是出现了master -> master (non-fast-forward)错误
解决办法:当代码提交的本地仓库,或者说只要本地仓库的代码已经是最新的时候,我们只需执行下面的指令:
这样就可以解决master -> master (non-fast-forward)的错误。
一定要记得:在执行push操作前,一定要有pull的操作,不管是那一分支都应该有pull的操作,所以,我在merge的时候,会将master pull下来,然后在执行git push --force 地址的操作