Git命令使用
简介
版本管理基本上是多人协作开发中必不可少的工具,常用的版本管理工具有:svn和git。虽然都有可视化的工具帮助我们使用这些工具,然而当你用上命令行之后,我想你会选择抛弃这些可视化工具。下面是我整理的一些常用的Git命令。
一个比较全面很好的Git书: Git Pro 第二版
一些概念:
- 工作区与暂存区
Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。
工作区就是你在电脑里能看到的目录,比如我的testgit文件夹就是一个工作区,但不包括.git这个隐藏目录.
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
我们把文件往 Git 版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以现在git commit就是往master分支上提交更改。
可以简单理解为,git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后执行git commit就可以一次性把暂存区的所有修改提交到分支。
一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的。
- global选项
配置Git的时候,加上–global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用
1. 配置Git邮箱和用户名, 因为每一次提交都需要这些信息
|
|
注意:
如果用了 –global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。
如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 –global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。
2. 查看git配置信息
|
|
3. 在本地保存github帐号的用户名和密码,不用每次输入用户名和密码
使用https协议时,在向远程仓库push提交内容时,总是每次要求输入你的github用户名和密码
解决办法:
设置记住密码(默认15分钟)
1git config --global credential.helper cache自己设置记住密码时间,比如一小时
1git config credential.helper ‘cache --timeout=3600’长期存储密码
1git config --global credential.helper store
配置好后在 .gitconfig 文件中可以看到.
4. 配置github上ssh密匙,不用每次输入用户名和密码
使用ssh协议时,也要输入用户名和密码,要想不用每次输入用户名和密码,则在你的本地机器生成ssh的私匙和公匙,
私匙保存在本地机器,公匙保存在你的github网站上的帐号设置上.
创建SSH Key
在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,
如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:1$ ssh-keygen -t rsa -C "youremail@example.com"登陆GitHub,打开“Settings”,“SSH and GPG Keys”页面
- 点击“New SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容
5. 移除跟踪但不删除文件,以便稍后在 .gitignore 文件中补上,用 –cached 选项即可
|
|
6. 修改.gitignore并更新本地和远程仓库
- 在.gitignore修改过滤规则,并保存.
- 更新本地和远程仓库1234# 注意有个点“.”git rm -r --cached .git add -Agit commit -m "update .gitignore"
配置.gitignore
所有配置文件可以直接在线浏览:https://github.com/github/gitignore
当然也可以配置全局忽略的文件,这样就不用每个项目都加gitignore了:git config --global core.excludesfile '~/.gitignore'
7. 丢弃本地修改,使用远程仓库的内容
|
|
8. 本地仓库首次推送到github远程仓库
- 在github上建立一个和本地同名的仓库名称
- 在本地命令行输入:
git remote add origin 远程仓库地址
- 将本地仓库同步到github远程仓库:
git push -u origin master
9. 恢复本地删除的文件
恢复已commit的文件:Git checkout commit_id -- file_name
恢复未commit的文件:git checkout -- file_name
10. 打标签
|
|
11. git将本地仓库上传到远程仓库
本地新建了一个文件夹,并执行了git init,初始化为一个git仓库了, 然后add,再commit后,想要把本地仓库内容上传到github上去,但此时github上没有这个仓库.
因此先到github上创建与你本地仓库同名的仓库,此时还是一个空仓库,需要把本地的内容上传到github上
12. 版本回退
在 Git中,用HEAD表示当前版本,也就是最新的提交commit id,
上一个版本就是HEAD^,上上一个版本就是HEAD^^,
往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
撤销修改
|
|
Git显示颜色,会让命令输出看起来更醒目
|
|
fatal: remote origin already exists
如果输入$ Git remote add origin git@github.com:djqiang(github帐号名)/gitdemo(项目名).git
提示出错信息:fatal: remote origin already exists.
解决办法如下:
1.先输入$ git remote rm origin
2.再输入$ git remote add origin git@github.com:djqiang/gitdemo.git 就不会报错了!
3.如果输入$ git remote rm origin 还是报错的话,error: Could not remove config section ‘remote.origin’. 我们需要修改gitconfig文件的内容
4.找到你的github的安装路径,我的是C:\Users\ASUS\AppData\Local\GitHub\PortableGit_ca477551eeb4aea0e4ae9fcd3358bd96720bb5c8\etc
5.找到一个名为gitconfig的文件,打开它把里面的[remote “origin”]那一行删掉就好了!
使用git在本地创建一个项目的过程
|
|
如果输入$ git push origin master
提示出错信息:error:failed to push som refs to …
解决办法如下:
- 先输入$ git pull origin master //先把远程服务器github上面的文件拉下来
- 再输入$ git push origin master
- 如果出现报错 fatal: Couldn’t find remote ref master或者fatal: ‘origin’ does not appear to be a git repository以及fatal: Could not read from remote repository.
- 则需要重新输入$ git remote add origin git@github.com:djqiang/gitdemo.git