一、git安装
二、git初始化版本库
在需要版本控制的目录进行版本初始化
git init
git 的工作区 、暂存区和master分支
工作区: 用来平时的开发、编辑文件只用,在你创建的目录下,就是工作区
暂存区: 存放需要提交到版本库文件的地方 在 .git目录下。
master分支:真正用来存放和发布已经完成的代码文件的地方,在 .git 目录下。
使用git之前需要声明作者或者邮箱
git config --global user.name "用户名" //设置用户名
git config --global user.email "邮箱" //设置邮箱
提交本地代码到github仓库
上面你已经创建了一个仓库,如果你的仓库下没有 README, LICENSE, and .gitignore这些文件,是个空的,那么请按照下述方法:进入到本地的代码所在文件夹下,输入如下命令:
git init //这是在当前目录初始化git,你的目录下会多个.git文件夹
git add . //添加当前文件夹下所有的文件,如果你想添加单独的,用add xxx/xxx
git commit -m "这里是注释" //提交代码到本地,并且加上注释
git remote add origin https://github.com/仓库的地址 //后面的网址改为你github仓库的地址
git push -u origin master //提交代码到远程仓库,即github端
之后会提示你输入github的账户和密码,成功后会出现上传成功的图:
如果你的用户名密码输错了,也会有响应提示,但是如果上述的你都确定没有错,出现了类似如下的错误:
这就是说你现在的远程仓库已经有人push了一次,你要先pull下拉再push一次,如果我们在第一步创建了那三个文件的话,你的仓库里就有东西了,你可以想象成是github公司的电脑帮你放进去的,那么我自己的电脑再往上push的时候就需要先pull下来,合并之后再push上去,这样你下次再push的时候就不用pull了,而别人的电脑如果要push就需要先pull下你更新的内容,再push……
1.git pull origin master //如果pull未成功就进入2,成功并且已经init、add、commit就进入7
2.git stash //隐藏冲突
3.git pull //再次pull,这一次就会pull成功
4.git stash pop //这个地方可以在代码里查看冲突的地方进行修改
5.git add . //更改完冲突后,添加到git管理
6.git commit -m "注释" //提交到本地
7.git push -u origin master //提交到github仓库
另:如果在pull了之后,bash跳出了一个新的窗口:
“please enter a commit message to explain why this merge is necessary,especially if it merges an updated upstream into a topic branch”
这是提示你编写合并注释信息的,你需要:
1.press “i”
2.write your merge message
3.press “esc”
4.write “:wq” then press enter
如果你直接想要拷贝github一个项目到本地,只需要:
git clone https://github.com/zhangzijian111/red_packets.git
如果想看git中所有相关的命令:
git+空格+两次Tab
如果想看当前文件夹下的文件列表:
git+空格+cd+空格+两次Tab
git分支
创建分支:git branch <name>
查看分支:git branch
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
撤销对文件的修改
git checkout - file
改文件会还原到add 暂存区的状态,如果暂存区是空的则会还原到 上一个版本文件的样子
** 注:没有 “ - ” 是切换分支 (如果文件名和分支名相同的话 )**
将文件撤出暂存区
git reset HEAD file
回滚到上一个版本
git log #查看所有版本
it log --author=xiaojiang #查看作者是xiaojiang的版本
git reset --hard 版本ID号 #回滚到相应的版本
git reflog #查看对版本控制的所有操作
恢复到上一个版本
git reset HEAD^
一个压缩后的每一条提交记录只占一行的输出:
git log --pretty=oneline