2017-10-13
Git
Git重要概念(工作区、暂存区、仓库)
Git仓库创建,git init gitRepository
在GitLab账号中添加ssh key 步骤如下:
在用户主目录下,查看有没有.ssh文件夹,若有,查看里面是否包含id_rsa(私钥)和id_rsa.pub(公钥)文件,若有直接跳第三步
若没有上述文件夹,执行
ssh-keygen -t rsa -C "[email protected]"
创建ssh key上述命令执行成功后,会找到.ssh文件,然后登入GitLab账户,点击
profile setting -> ssh keys -> add ssh key
输入title,将id_rsa.pub文件里的内容复制粘贴到key区域,点击save
git 常用命令:
将修改的内容添加至索引(实际上是将内容修改添加到暂存区),进入本地仓库的根目录,输入:
git add .
将修改提交到仓库中,此时远程仓库还未更新(实际上是将暂存区的所有内容提交到当前分支):
git commmit -m "decription"
(当我们创建Git仓库的时候,Git自动为我们创建了唯一一个master
分支,所以现在,git commit
就是往master
分支上提交更改。)把本地仓库与远程仓库进行关联:
git remote add origin [email protected]:yuyantao/ios_static_analysis.git
将修改推送至远程分支,此时如果对该远程分支有写入权限,那么服务器端就会显示更新:
git push -u origin master
(默认情况下,表示推送到origin主机上的master分支) (由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。) ()获取仓库当前状态:git status
查看仓库中的某个文件做了哪些修改:git diff 文件名
查看仓库最近到最远的提交日志,以便确定回退到哪个版本:git log
查看命令历史,以便确定要回到未来的哪个版本:git reflog
在文件的版本历史间穿梭:git reset --hard commit_id(Git用HEAD表示当前版本,HEAD^表示上一个版本,...往上100个版本,HEAD~100)
丢弃工作区的修改:git checkout -- file(用版本库的版本代替工作区的版本)
删除文件:git rm file ; 并且git commit
创建并切换分支:git checkout -b dev 相当于两条命令:git branch dev ; git checkout dev
查看当前分支:git branch 会输出所有分支,在当前分支前面会加上*
将指定分支合并到当前分支:git merge dev
删除分支:git branch -d dev
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。用
git log --graph
命令可以看到分支合并图。合并分支时,加上
--no-ff
参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward
合并就看不出来曾经做过合并
2017-11-2
从远程仓库中抓取与拉取:
$ git fetch [remote-name]
这个命令会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
使用clone
命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写;所以,git fetch origin
会抓取克隆(或上一次抓取)后新推送的所有工作。 必须注意git fetch
命令会将数据拉取到你的本地仓库 - 它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。如果你有一个分支设置为跟踪一个远程分支,可以使用git pull
命令来自动的抓取然后合并远程分支到当前分支。默认情况下,git clone
命令会自动设置本地 master 分支跟踪克隆的远程仓库的 master 分支(或不管是什么名字的默认分支)。 运行git pull
通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。
推送到远程仓库
当你想分享你的项目时,必须将其推送到上游。 这个命令很简单:git push [remote-name] [branch-name]
。 当你想要将 master 分支推送到origin
服务器时(再次说明,克隆时通常会自动帮你设置好那两个名字),那么运行这个命令就可以将你所做的备份到服务器:
$ git push origin master
只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。 当你和其他人在同一时间克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。 你必须先将他们的工作拉取下来并将其合并进你的工作后才能推送。
查看远程仓库
如果想要查看某一个远程仓库的更多信息,可以使用git remote show [remote-name]
命令