博客原文请参考:http://zhuqiuhui.space/Blogs/2017/03/git-usage.html
Git真是一个强大的工具,由于开发需要,本文特别总结了git的一些常用命令和基本配置,如Git与账户绑定、怎么新建项目和一些Git基本使用命令。
一、Git账户绑定
在使用Git前要首先进行账户绑定(配置一次就可以了,以后就不用配置了),绑定的时候需要key值,可使用下面命令生成key值:
|
|
|
|
二、Git下新建项目
建立项目与Git之间的联系步骤:
- 在自己Github主页上新建仓库,如取名:TestGit.git
- 进入要上传的本地代码主文件夹中(git初始化):
1git init
- 添加远程地址(你要推送到的远程仓库的地址):
1git remote add origin git@github.com:zhuqiuhui/TestGit.git
- ~ 开发 ~ 开发 ~ 开发 ~
- 把本地代码存到暂存区:
1git add .
- 把本地代码存到本地仓库(最好加上注释):
1git commit -m "注释"
- 把本地代码推送到远程仓库(本测试用例用的是master分支):
1git push origin master
备注:第一次push的话,可能会出现“reject”错误,那是因为远程仓库与本地仓库版本不一致的原因,所以你先执行“git pull origin master”(先拉一下,把远程代码拉到本地),但在拉的过程中还可能会出现“fatal: refusing to merge unrelated histories”错误,你重新执行下“git pull origin master --allow-unrelated-historie”就可以了,然后再push代码,这样就ok了。
三、常用Git命令
3.1 基本Git命令
- 查看远程分支:git branch -a
- 查看本地分支:git branch
- 从当前分支创建b1分支:git branch b1
- 从当前分支创建b1分支,并切换到b1分支:git checkout -b b1
- 从master分支创建b1分支,并切换到b1分支:git checkout -b b1 master
3.2 Git修改提交注释
- 修改最后一次提交的信息:git commit --amend
- 修改前三次历史提交注释信息:git rebase -i head~3
备注:显示后把你想要改的第几次前面“pick”改成“edit”,然后接着git commit --amend,改完的话执行git rebase --continue退出即可
3.3 git stash用法
- 保存当前的修改工作:git stash save "注释内容" (不加注释直接git stash)
备注:备份当前工作内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致,同时,将当前的工作区内容保存到Git栈中。
- 恢复最近修改的工作:git stash pop
备注: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。
- 显示Git栈内的所有备份:git stash list
- 进入指定的stash:git stash apply stash@{2}
- 移除指定的stash:git stash drop stash@{2}
- 清空Git栈:git stash clear
具体使用案例:我在develop分支中开发新功能,这时候master分支中有bug急需修改。
- git stash (备份当前工作内容)
- git checkout master (切换master)
- 修改提交完master中bug后, git checkout develop (切回develop)
- git stash pop (从Git栈中读取最近一次保存的内容,恢复工作区的相关内容)
3.4 git reset用法
首先理解几个概念:
- working directory:工作目录
- staging(或称为index) area:暂存区域
- git directory(repository):本地仓库
相关的reset命令:
- (1)git reflog:查看所有分支的所有操作记录(包括commit、reset的操作、已经被删除的commit记录)
- (2)git log:查看当前分支的提交日志,但不能察看已经删除了的commit记录
- (3)git reset --hard 0254ea7(对应的操作ID):reset到ID对应的时间点
- (4)git reset --hard head~1:reset到最新一次提交之前
-
备注:
- --hard参数:重设index和working directory,自从commit以来在working directory中的任何改变都被丢弃,并把HEAD指向commit。
- --soft参数:index和working directory中的内容不作任何改变,仅仅把HEAD指向commit。这个模式的效果是,执行完毕后,自从commit以来的所有改变都会显示在git status的"Changes to be committed"中(应用场景:当提交了之后,你又发现代码没有提交完整,或者你想重新编辑一下提交的commit)。
3.5 git给远程库添加多个url地址
场合:你可能想要把你的本地的git库,既push到github上,又push到开源中国的Git@OSC上或者coding net上,怎么解决呢?有人可能会用两个甚至多个远程库,即再添加一个远程库git remote add origin2;这个方法很低效,因为你要git push 两次才能完成push到两个库。
解答原理:git的一个远程库可以对应多个地址。
基本命令:
- 在本地仓库创建一个指向远程仓库url的链接别名name,可以任意命名:git remote add name url (name可以为origin、both等等自定义的名字)
- 增加一个远程库地址:git remote set-url --add --push origin url1
- 再增加一个远程库地址:git remote set-url --add --push origin url2
- 删除url链接别名name:git remote rm name (常见的为origin)
- 显示当前所有远程库的详细信息,显示格式为:远程库名字 url连接(类型),命令:git remote -v
- 查看config文件,里面可以看到添加的地址,位于当前工程.git/config中,可使用命令:git config -e
- 推送时只需要执行命令:git push name master,其中name就是url的链接别名,master是推送的分支,要保证几个推送仓库的分支命名是一样的。
3.6 查看改动的内容
改动的内容如果commit的话,可使用:
- git log -n 2 --stat :查看最后两次改动过的文件
- git log -n 1 -p :查看最后一次提交更改的细节
- 使用git diff来查看改动内容,其中HEAD代表commit版本,Index代表staged版本
- (1)git diff:比较工作目录(Working tree)和暂存区域快照(index)之间的差异,也就是修改之后还没有暂存起来的变化内容。(2)git diff --cached:查看已经暂存起来的文件(staged)和上次提交时的快照之间(HEAD)的差异
- (3)git diff --staged:显示的是下一次commit时会提交到HEAD的内容
- (4)git diff HEAD:查看workspace和local repository的差别
- (5)git diff b1 b2 或 git diff b1..b2:将b1和b2分支上的最新提交做diff
- (6)git diff test:查看当前目录和test分支的差别
- (7)git diff HEAD^ HEAD:比较上次提交commit和上上次提交