Git小白入门常用命令
2017-06-04 16:27
302 查看
感谢廖雪峰老师官网上的Git教程,让我学习了相关的知识,现在对上一阶段的学习做一些总结(强烈建议学习廖雪峰老师的教程),更多细节参考其网站上的git教程。
在安装后需要先设置相关配置:
然后我们需要把这个test文件放入Git仓库中
注意:
1.add 可以添加多个文件,例如 git add test1.txt test2.txt
2.commit 一次就可以提交多个文件
输入上述命令,显示的信息很好理解,其中的commit 后面的一大串字符串就是版本号
git中HEAD表示当前版本,上一个版本是HEAD^,上上一个版本是HEAD^^,往上10个版本是HEAD~10
于是你又可以通过以下命令回到上一个版本
问题来了,今天提交了一次最新版本v3.0,然后回到了以前的v1.0,通过git log已经找不到v3.0版本的commit_id了,怎么办呢?
1.在终端中找到v3.0的commit_id然后reset,这是你终端没有关闭的情况下。
2.通过以下命令你还是可以找到v3.0的commit_id的:
然后再reset即可。
上述作用在于把存在在此分支上的test.txt拷贝代替工作区对应文件,其直接作用就是撤销工作区的修改
已经添加到暂存区
上述命令可以把在暂存区的修改撤销掉,然后再重复上面checkout命令撤销工作区修改即可。
已经提交到此分支上
进行版本回退。
如果发现删除错误,可以用checkout重新拷贝一份。
删除此版本库的文件
如果发现删除错误,只需要进行版本回退。
在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。(引用廖雪峰老师教程原话)
2.添加SSH key到github:
github->setting->SSH and GPG keys->New SSH key->key框中的内容复制id_rsa.pub文件中的内容->add SSH key.
2.在本地的仓库里面运行下面命令:
远程库的默认名字就是origin
3.然后,就可以把本地库的内容全部push上去:
由于远程库是空的,加上 -u 参数,git不但会把本地分支master内容推送到远程的master分支,还会把两者联系起来,以后推送的时候就可以简化命令,如:
对应换掉Name和repository即可。
实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。
推送
克隆
但在默认情况下,克隆后只能看见本地的master分支,如果需要在dev分支上工作,必须创建远程的origin的dev分支到本地:
当然,每次工作结束后,都要push一下到origin 的dev分支:
pull解决冲突
由于你的小伙伴的最新提交和你试图提交的有冲突,于是你要用以下方式解决:
其实上面等价于:
查看当前分支:
你可以在此分支做修改,执行add和commit的命令。
在完事后,你又可以切换分支到master分支:
将dev分支合并到当前master分支上:
–no-ff模式(no fast forward)
再Fast forward模式中,删除了分支会丢掉分支信息,而–no-ff模式会在合并的同时生成一个新的commit,以后就可以通过查看历史就可以看到分支信息。
于是,你可以用:
查看分支历史
但是如果在不同分支修改了同一个文件并且都commit上去的了,而你试图将这两个分支合并,这是会产生冲突的,解决方法如下:
1.先执行:
查看冲突文件。
2.修改冲突文件,修改冲突部分,重新add和commit。
3.这个时候冲突已经解决了,你可以查看分支的合并情况。现在你可以删除分支了。
然后你可以切换分支,在其它分支干活了。
干完其它脏活后(- 。-),你重新回到dev分支,你需要重新在此工作:
你可以看到你保存的工作。
你怎么样取会特定的工作呢?
安装Git
略过。在安装后需要先设置相关配置:
$ git config--global user.name "YourName" $ git config--global user.email "YourEmailAddress"
创建版本库
$ mkdir learngit //在用户主目录下创建目录 $ cd learngit $ git init //把这个目录变成Git可以管理的目录 $ vim test.txt//写一个你需要放入git仓库的文件
然后我们需要把这个test文件放入Git仓库中
$ git add test.txt //把test.txt添加到暂存区 $ git commit -m "<本次提交你的说明>"//把暂存区所有文件提交到当前分支
注意:
1.add 可以添加多个文件,例如 git add test1.txt test2.txt
2.commit 一次就可以提交多个文件
查看仓库当前状态
$ git status
查看工作区文件和版本库文件的差异
例如你在提交了一次test.txt文件后,有对它做了修改,此时你可以用下面命令查看它们之间的差异$ git diff HEAD -- text.txt
查看版本库历史纪录
$ git log
输入上述命令,显示的信息很好理解,其中的commit 后面的一大串字符串就是版本号
版本回退
通过查看历史版本的commit_id,你可以轻松回到以前的版本(你只要输入commit_id的前几个字符)$ git reset --hard commit_id
git中HEAD表示当前版本,上一个版本是HEAD^,上上一个版本是HEAD^^,往上10个版本是HEAD~10
于是你又可以通过以下命令回到上一个版本
$ git reset --hard HEAD^
问题来了,今天提交了一次最新版本v3.0,然后回到了以前的v1.0,通过git log已经找不到v3.0版本的commit_id了,怎么办呢?
1.在终端中找到v3.0的commit_id然后reset,这是你终端没有关闭的情况下。
2.通过以下命令你还是可以找到v3.0的commit_id的:
$ git reflog
然后再reset即可。
撤销修改
修改文件还没有添加到暂存区$ git checkout -- test.txt
上述作用在于把存在在此分支上的test.txt拷贝代替工作区对应文件,其直接作用就是撤销工作区的修改
已经添加到暂存区
$ git reset HEAD -- test.txt
上述命令可以把在暂存区的修改撤销掉,然后再重复上面checkout命令撤销工作区修改即可。
已经提交到此分支上
进行版本回退。
删除文件
删除工作区的文件:$ rm test.txt
如果发现删除错误,可以用checkout重新拷贝一份。
删除此版本库的文件
$ git rm test.txt $ git commit -m "remove test.txt"
如果发现删除错误,只需要进行版本回退。
远程仓库使用前奏
1.创建SSH key:在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。(引用廖雪峰老师教程原话)
2.添加SSH key到github:
github->setting->SSH and GPG keys->New SSH key->key框中的内容复制id_rsa.pub文件中的内容->add SSH key.
上传到远程仓库
1.假设你想上传到github上的仓库的名字叫test。2.在本地的仓库里面运行下面命令:
$ git remote add origin git@github.com:YourName/test.git
远程库的默认名字就是origin
3.然后,就可以把本地库的内容全部push上去:
$ git push -u origin master
由于远程库是空的,加上 -u 参数,git不但会把本地分支master内容推送到远程的master分支,还会把两者联系起来,以后推送的时候就可以简化命令,如:
$ git push origin master
从远程库克隆
git clone git@github.com:Name/repository.git
对应换掉Name和repository即可。
实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。
远程库一般操作
查看远程库信息$ git remote (-v)//v参数显示更加详细的信息
推送
$ git push origin master $ git push origin dev
克隆
$ git clone git@github.com:Username/repository.git
但在默认情况下,克隆后只能看见本地的master分支,如果需要在dev分支上工作,必须创建远程的origin的dev分支到本地:
$ git checkout -b dev origin/dev
当然,每次工作结束后,都要push一下到origin 的dev分支:
$ git push origin dev
pull解决冲突
由于你的小伙伴的最新提交和你试图提交的有冲突,于是你要用以下方式解决:
$ git branch --set-upstream dev origin/dev //建立本地dev和远程origin的dev分支的链接 $ git pull //这时会出现合并冲突,你需要先解决冲突,然后再commit,再push
创建分支
$ git checkout -b dev
其实上面等价于:
$ git branch dev $ git checkout dev
查看当前分支:
$ git branch
你可以在此分支做修改,执行add和commit的命令。
在完事后,你又可以切换分支到master分支:
$ git checkout master
合并分支
Fast-forwars模式将dev分支合并到当前master分支上:
$ git merge dev
–no-ff模式(no fast forward)
再Fast forward模式中,删除了分支会丢掉分支信息,而–no-ff模式会在合并的同时生成一个新的commit,以后就可以通过查看历史就可以看到分支信息。
$ git merge --no-ff -m "..." dev
于是,你可以用:
$ git log --graph --pretty=oneline --abbrev-commit
查看分支历史
但是如果在不同分支修改了同一个文件并且都commit上去的了,而你试图将这两个分支合并,这是会产生冲突的,解决方法如下:
1.先执行:
$ git status
查看冲突文件。
2.修改冲突文件,修改冲突部分,重新add和commit。
3.这个时候冲突已经解决了,你可以查看分支的合并情况。现在你可以删除分支了。
删除分支
$ git branch -d dev $ git branch -D dev//强制删除分支,即使它没有被合并,删除后数据丢失
保存当前分支工作
假设你现在在dev分支,因为某种情况,你要在其它分支工作,所以你先要保存现在dev分支的工作:$ git stash
然后你可以切换分支,在其它分支干活了。
干完其它脏活后(- 。-),你重新回到dev分支,你需要重新在此工作:
$ git stash list
你可以看到你保存的工作。
你怎么样取会特定的工作呢?
$ git stash pop // 恢复的同时把stash也删除了 $ git stash apply stash@{n}//恢复指定的工作 $ git stash drop
创建标签
首先切换到需要打标签的分支上,然后:$ git tag <tagname> $ git tag <tagname> <commit id> //给特定的commit id 打上tag
查看标签
$ git tag
查看标签信息
$ git show <tagname>
删除标签
$ git tag -d <tagname> //删除本地标签 $ git push origin :refs/tags/<tagname> //如果还要删除远程上的标签,则要加上这一步
推送某个标签到远程
$ git push origin <tagname> $ git push origin -tags //push all
相关文章推荐
- Git常用命令速记与入门
- git基础入门之常用命令操作
- Git常用命令集教程指南-快速入门
- Git快速入门和常用命令
- git 入门常用命令
- git使用入门-常用命令
- git入门学习以及常用命令
- git入门-----其它的常用命令(config、cherry-pick)
- Git快速入门-常用命令之交响乐篇
- git入门及常用命令
- git入门常用命令
- (git入门 git常用命令)自己在公司的Git总结,以及找到的图,和入门须知的git命令
- git(一)-git入门,版本库初始化以及常用命令操作
- git入门-常用命令
- 快速入门---Git常用命令(一)
- Git 入门常用命令
- Git入门及常用命令(1)(window环境下)
- Git快速入门-常用命令之独奏篇
- Git常用命令及GitHub入门使用
- git常用命令,助你快速入门