Git 常用命令
说明
本文记录最常用到的git命令。
有用的学习资料:
Git 教程
浅显易懂的Git教程
GIT分支管理是一门艺术
创建版本库(repository)
安装完Git后,第一件事就是config。
每个机器都必须验证:你的名字和Email地址。
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
#--global参数,表示你这台机器上所有的Git仓库都会使用这个配置
初始化一个Git仓库,使用git init命令
先创建一个目录,在该目录下的所有文件都可以被Git管理起来。
需要注意的是:所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。二进制文件,如图片,word文档等均不可跟踪其更改的细节
#首先创建项目的目录
$ mkdir your_project_folder
$ cd your_project_folder
#在创建项目的目录下,使用git init命令把这个目录变成Git可以管理的仓库
$ git init
把文件添加到版本库
提交代码的更改一共分2个阶段。
1).从工作目录,提交到暂存区stage。
2).从stage提交到master。
从工作目录提交到stage,需要用add(添加)或者rm命令(删除),只提交到stage,而没有提交到master,是不会自动同步到master的。
从stage提交到master用commit命令。
以readme.txt为例子,这里readme.txt是在your_project_folder目录下(或者子文件夹里)。
首先把文件添加到仓库
$ git add readme.txt
然后,文件提交到仓库
#-m后面输入的是本次提交的说明,方便找改动记录。
$ git commit -m "wrote a readme file"
查看状态和修改
- 随时掌握工作区的状态,使用git status命令。
- 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。(git diff即查看difference)
版本回退
用git log可以查看提交历史,以便确定要回退到哪个版本。
HEAD指向的版本就是当前版本,使用命令git reset –hard commit_id版本回退
git reflog查看命令历史,以便确定要回到未来的哪个版本
撤销修改
对于文件 myfile.txt
① 修改后 未add(添加到暂存区) 需要撤销修改时:
git checkout – myfile.txt 或 手动删除工作区修改
工作区 : clean 暂存区: clean
② 修改后 add了(未commit) 再次修改文件 要撤销第二次修改时:
git checkout – myfile.txt (将暂存区恢复到工作区)
暂存区有第一次的修改需要commit
③ 修改后 add了(未commit),需要撤销修改时:
git reset HEAD myfile.txt (将暂存区修改删除)
此时工作区的修改还未撤销
git checkout – myfile.txt (撤销工作区修改)
④ 修改后 add并commit了,需要撤销修改时:
git reset –hard HEAD^ (版本回退)**
删除
对工作区的文件,进行删除(比如使用rm命令或者手动删除),然后又以下两种情况,一是打算在版本库repository里也删除她,或者是误删得还原。
删除文件
- 确实要从版本库repository中删除该文件,用命令git rm删掉,并且git commit。
撤销误删
- git checkout 其实是用版本库里的版本替换工作区的版本。
Git仓库托管
注册一个GitHub账号,就可以免费获得Git远程仓库。
创建SSH Key。
$ ssh-keygen -t rsa -C "youremail@example.com"
后面的youremail@example.com改为你在github上注册的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在~/下生成.ssh文件夹(而不是当前工作区的文件夹),打开id_rsa.pub,复制里面的key。
回到github上,进入 Account Settings,左边选择SSH Keys,Add SSH Key,title随便填,粘贴在你电脑上生成的key。
在开始安装了git后是设置了用户名和地址。
git config –global user.name “Your Name”
git config –global user.email “email@example.com”这里创建ssh key时又需要用到了邮箱地址。
这两个的邮箱地址不需要一致。config设置的只是代码提交者的信息。
使用下面命令将公钥打开
$ cat ~/.ssh/id_rsa.pub
为了验证是否成功,输入以下命令:
$ ssh -T git@github.com
Hi tianqixin! You've successfully authenticated, but GitHub does not provide shell access.
添加远程repository
要关联一个远程库,使用命令
$ git remote add origin git@github.com:yourName/yourRepo.git
#yourName和yourRepo表示你的github的用户名和新建的仓库
关联后,使用命令git push -u origin master
第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用下面命令推送最新修改
git push origin master;
从远程库克隆
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
git clone git@github.com:XXX/XX.git
分支管理
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d
多人协作
多人协作的工作模式通常是这样:
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch –set-upstream branch-name origin/branch-name。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
参考资料