git config --global user.name "name"
设置你的用户名git
git config --global user.email "emil"
设置用户的email帐号github
ssh-keygen -t rsa -C "your email"
其中填的是你的注册的github
的帐号,输入以后若是不须要输入密码的话,连续输入三个回车便可,最后在你的在终端输入 cd ~/.ssh 进入到你的文件下能够看到有两个文件id_rsa
和id_rsa.pub
,最后复制你的id_rsa.pub
中的内容到github
中的帐号中便可app
ssh -T git@github.com
若是上面的步骤已经完成了,那么就是验证是否完成了,输入上述语句,若是出现信息,那么证实说明你已经成功了ssh
一般咱们在提交以后会想要修改,固然咱们是在文件上直接修改,可是修改后在
git
上输入git status
查看此时的工做区的状态,你会发现出现了出现了以下的语句:fetch
On branch master Your branch is ahead of 'origin/master' by 2 commits. (use "git push" to publish your local commits) Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: file.txt no changes added to commit (use "git add" and/or "git commit -a")
从上面的提示能够看出咱们有以下方案:code
首先执行->
git add file.txt
,而后从新提交git commit -m 'modified file.txt
rem
commit
])这里的撤销修改仅仅是对于没有提交的撤销(
git commit -m ''
),在下面会讲到如何撤销提交后的撤销get
git add
当咱们修改后会出现上面的提示,前面已经贴过了,这里就再也不贴代码了,根据提示,咱们能够
git checkout -- file.txt
来丢弃工做区的修改,以后就能够看见先前的修改已经不见了博客
git add
当咱们修改文件后而且
git add
添加到暂存区了,那么查看状态git status
,出现的提示以下it
On branch master Your branch is ahead of 'origin/master' by 2 commits. (use "git push" to publish your local commits) Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: file.txt
根据上面提示的方法:输入
git reset HEAD file.txt
,能够看到文件回到未git add
的状态了,这时若是你想要丢弃修改,使用git checkout -- file.txt
,以后就能够看到你的修改已经不见了
其实删除也是一种修改操做,咱们在文件管理器中直接使用
rm
删除文件,这时输入git status
能够看到以下的提示:
On branch master Your branch is ahead of 'origin/master' by 2 commits. (use "git push" to publish your local commits) Changes not staged for commit: (use "git add/rm <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) deleted: file.txt no changes added to commit (use "git add" and/or "git commit -a") PS G:\file> git checkout -- file.txt
若是你不想删除了,想要恢复原来的文件,使用
git checkout -- file.txt
这个命令可让撤销修改,也能够撤销删除,起到一键还原的做用若是你想要继续删除,那么有两种方法:
first:
git add file.txt
,second:git commit -m ''
first:
git rm file.txt
,second:git commit -m ''
注意:
git rm file
能够用来删除提交到版本库中的文件,通常删除要执行如下命令:git rm file.txt
,git commit -m 'delete'
,注意在git commit
以前仍是能够取消删除的,使用git checkout -- file.txt
,能够一键取消删除
git checkout -b dev
建立而且切换到dev
分支
git checkout dev
切换到dev
分支
git branch
查看全部的分支,带有*
的是当前所处的分支
git branch -d dev
删除dev
分支,通常在合并以后删除
git branch -D dev
:强制删除分支,通常在没有合并就删除分支会出现不能删除,这是就要使用强制删除这个分支的命令
git merge dev
将dev
分支合并到当前分支,使用到Fast forward
模式,但这种模式下,删除分支后,会丢掉分支信息。
git merge --no-ff -m "merge with no-ff" dev
强制禁用Fast forward
模式,Git
就会在merge
时生成一个新的commit
,这样,从分支历史上就能够看出分支信息。
git log --graph --pretty=oneline --abbrev-commit
查看分支历史
首先咱们建立一个
dev
分支,使用命令:git checkout -b dev
(建立一个dev
分支,而且切换到dev
分支上),咱们可使用git branch
查看全部的分支如今在改变以前
master
分支上的file.txt
文件内容,以后git add file.txt
,而且提交到版本库中了(git commit -m 'file.txt'
),此时使用git checkout master
切换到master
分支上,查看file.txt
的文件内容,能够看到里面的内容并没有改变,由此可知两个分支是独立的,若是你在一个分之上建立了文件而且提交到版本库中了,切换到另一个分支上,此时能够发现原来建立的文件不见了,由于那是另一个分支的文件,固然咱们能够合并分支,使用git merge dev
,这两个命令将dev
分支合并到当前分支
若是正在一个分支上工做,另一个分支上的程序有一个Bug须要立刻修改,可是此时这个分支上的东西还须要很长时间才能完成,这应该怎么办呢?难道要放弃当前分支上的修改吗?固然不是了,幸亏,Git还提供了一个stash功能,能够把当前工做现场“储藏”起来,等之后恢复现场后继续工做,具体步骤以下:
git stash 将当前的工做状态暂时存储在stash中,输出以下信息
Saved working directory and index state WIP on dev: 6224937 add merge HEAD is now at 6224937 add merge
此时可使用
git status
查看当前的分支上的状态,能够知道当前的的工做区就是干净的,所以能够放心的修复另一个分支上的的Bug
了
git checkout master
切换分支,修复Bug
git checkout dev
修复好Bug继续回到上一个分支干活
git stash list
能够看到工做现场还在,输出以下信息:
stash@{0}: WIP on dev: 6224937 add merge
若是有多个修改的内容,这里的信息确定不止一条
git stash apply
:恢复修改,可是这只是恢复stash
的内容并不会删除,这里建议使用git stash pop
既恢复了又删除了stash
中内容,注意这里只能恢复一条数据,此时使用git status
查看状态,能够看到已经出现修改的内容了
git stash list
:此时查看当前stash
中的内容能够看到已经什么都没了,固然这只是清除一条,若是原本有多个,那么仍是会有其余内容的
git stash
将当前的分支上的工做暂存到stash
中
git stash list
列出stash
中的全部暂存的内容
git stash pop
恢复而且删除stash中的内容
git stash apply
恢复可是步删除stash
中的内容
git remote -v
查看远程仓库的详细信息
git remote add remote-name URL
添加远程仓库
git remote rename origin pb
将远程仓库的origin改成pb,此时使用git remote 查看能够知道这里已经没有origin了,变成了pb
git remote rm origin
将远程仓库origin删除
git push origin master
将内容提交到远程仓库origin的master上,固然这里亦可使用其余的分支
git clone URL
克隆一个远程仓库,这里的URL是远程仓库的地址
git pull origin
将远程仓库中更新的数据拉到本地
git checkout -b branch-name origin/branch-name
在本地建立和远程仓库对应的分支,最好分支的名字相同
git push origin branch-name
推送到远程仓库的分支
同一个文件夹中能够添加不少远程仓库,不过能够在提交的时候须要指定远程仓库的名字,好比在你的文件夹下有origin和pb两个远程仓库,可使用git remote -v查看详细的信息,此时你在版本库中已经有想要推送的文件了,那么使用git push origin master就能够指定推送到origin远程仓库中
假如你新建一个文件夹,此时要在里面添加远程仓库,具体实现以下:
git clone URL
将一个仓库克隆来的同时也具备推送的权限了,这时就可使用git remote add origin URL
来添加远程仓库了若是没有使用
clone
的方法建立一个版本库,那么先git init
而后git remote add origin URL
添加远程仓库,以后就是将本地仓库和远程仓库对应了,使用git pull origin master
来拉取远程仓库中内容,固然这也能够分两步,使用以下:
git fetch origin master
这是将远程仓库中的文件拉取到本地,可是没有与本地的master
合并,所以本地的master
分支不能追踪远程仓库中的分支
git merge origin/master
将远程仓库和本地的master
分支合并,那么就可使用本地的master
分支追踪远程仓库了,这就完成了
不管
clone
仍是pull
都只是拉取远程的master
分支,可是通常远程仓库中还有其余的分支,那么怎么办呢?拉取远程仓库的次分支步骤以下:
git checkout -b dev origin/dev
拉去远程仓库中的dev
仓库到本地的dev
分支