git小白入门全攻略

git是什么(写在前边的叨叨,就是给一点不懂的小白打个比喻,大佬请自行跳过)

git在平时的开发中用的太频繁了,以致于我都不知道如何去形容它。囧。
假设咱们开发的工做相似于图书整理,写的代码就是不少人借书还书,假设我和你一块儿来整理这些书,有不少人来借书,你给A一本,我给B一本,这没有任何问题,可是,忽然来了C和D,他俩同时要借一本《时间简史》,并且这本书仅此一本,个人手伸向了这本书,你的手也伸向了这本书,而后,是书在咱们俩的争夺中被撕成两半了?仍是我和你打起来了?
咱们固然都不会这么蠢,咱们拿书的时候必定会看看对方有没有正在拿,若是你先伸手了我就让给你,没有必要打一架(笑)。
咱们多人开发的时候,维护一套代码,git这个工具就包含了咱们许多的行为,好比经常使用的git pull 就至关因而用眼睛去看一下,看看书架是否是有别人已经动过了,别人已经把书摆满了,本身还继续往这个地方放书,固然放不进去啦。php

git安装

  1. windows :https://git-scm.com/downloads
  2. linux:yum install git / apt-get install git
  3. MacOS: brew install git

git常规操做

1. 新建仓库,设置全局的我的信息,ssh-key的设置

  • 新建仓库
git init
  • 设置我的信息
git config --global user.name "yourname"
git config --global user.email test@runoob.com
git config --list  //查看当前配置信息
  • ssh-key的设置
    因为本地Git仓库和GitHub仓库之间的传输是经过SSH加密的,因此必需要让github仓库认证你SSH key,在此以前,必需要生成SSH key。
    首先在家目录下进入 .ssh 文件夹,若是没有这个文件夹或者文件夹下没有id_rsa、id_rsa.pub两个文件,就进行下边的生成过程。
ssh-keygen -t rsa -C "youremail@example.com"

以后一路回车,.ssh文件夹下就有了两个文件,私钥id_rsa和共钥id_rsa.pub,须要提供ssh密钥的都是要的共钥,id_rsa.pub。linux

2. 拉取远程仓库,设定远程仓库,分支和远程创建链接

  • 拉取远程仓库
git clone [git地址]

这个就是最经常使用的git拉取一个仓库的代码到本地的命令,会在当前的目录下新建一个仓库代码文件夹。若是你的ssh已经保存在这个仓库里了,那么你能够push,不然的话你只有pull的权限。git

  • 设定远程仓库
    好比如今你是在本地init了一个仓库,而后你在github上申请了一个仓库地址,你要把你的代码推到github上,就须要设定远程仓库了。
git remote add [名字] [地址]

好比git remote add origin git@github.com:gaopu1995/hiphp.git,就能够把本地仓库和远程创建链接。通常默认叫它 origin。
其余的几个远程仓库命令:github

git remote  //查看当前远程分支名字
git remote -v  //查看当前远程分支的url,有两个,一个fetch的,一个push的,通常会是同样的,就是你设置的那一个
git remote remove <name>  //移除远程分支
git remote -h  //其余的就本身看一下帮助吧
  • 当前分支和远程仓库的分支创建链接
git push --set-upstream origin master

若是你删除或者更换了远程仓库,新的仓库在你推送的时候会让你把你当前的分支和远程分支创建映射关系,最后的两个参数就是远程仓库名和远程仓库的分支名,操做对象是你当前分支。windows

3. 推拉提交,处理冲突

  • 推拉提交
git pull        //拉取最新代码
git push        //把本地提交推送到远程
git add [文件](多个文件空格隔开)        //把本地的更改添加到更改缓存中
git commit -m "提交注释"        //提交目前缓存中的更改

解释一下:缓存

  1. git的管理是针对修改的,而推拉的单位都是每次提交的修改,就是你每次拉取(pull)的时候,都是按照别人推送的内容拉取的。好比别人推送了三个文件的修改,那你拉下来,要么不拉取,要么就是这三个文件的改动。
  2. 而推送的时候,首先是有一个缓存区,你把你想要提交的修改文件添加到这个缓存区,而后提交的时候就会统一把这个缓存区里的全部修改都提交到本地。
  3. 提交是提交到本地,本地的修改推送(push)到远程仓库,别人才能拉取到你的修改。
  4. commit的注释必定要写明白。这是个合做工具。交流很重要。
  • 处理冲突
  1. 冲突是什么:好比一个文件,他修改了,而你在没有拉取他的代码以前,也对这个部分修改了,就会产生冲突。
  2. 为何会有冲突:前边说过,git是对修改进行管理的,好比原本是一个a,他把a->b,你把a->c,如今他先提交的,你拉取他的代码,你的git合并大家的修改的时候,要把a变成b,可是你已经把a变成c了,git就会把这个区域标出来
  3. 怎么改:冲突部分会用 >>>>>>>>分支 标出来,改为正确的,add而后commit就行。ssh

    4. 新分支,分支合并,分支删除

git checkout [分支名]  //切换分支
git checkout -b [新分支名]  //从当前分支copy一个新的分支
git branch -d [分支名]  //删除分支
git branch  //显示当前所在分支
git merge [分支名]  //当前分支合并目标分支的修改

5. 暂存stash

git stash   //暂存代码
git stash list  //查看stash存的内容
git stash pop  //恢复第一个暂存
git stash clear  //清理暂存

6. 查看log

git log  //查看提交记录
git log --oneline  //查看提交记录的简单模式

7. 回溯

git reset --hard commit_id  //回退到某个版本
相关文章
相关标签/搜索