git使用总结
要使用Git,第一步当然是安装Git了。安装完成后,你就可以开始git的使用啦。
(1)创建版本库
版本库又名仓库,英文名repository,你可以简单理解成一个被git管理起来的目录。
创建版本库很简单,新建一个目录,初始化就可以了。
mkdir learngit
cd learngit
git init
git - 如何从项目中删除git跟踪?
rm -rf .git
(2)把文件(修改)添加到版本库
我们可以在learngit目录下新建一个readme.txt文件,然后你可以做一些修改。
- 第一步,用命令git add告诉Git,把文件添加到仓库:
$ git add readme.txt
命令git add <file>,注意,可反复多次使用,添加多个文件;
git add . 将所有修改添加到暂存区
- 第二步,用命令git commit告诉Git,把文件提交到仓库:-m后面输入的是本次提交的说明
$ git commit -m "add an apple"
(3)版本回退之回到过去
我们再次修改readme.txt文件,然后提交。这里我们介绍两个git命令
git log命令显示当前版本从最近到最远的提交日志
git reflog用来记录你的每一次命令
-
命令: git log // 显示所有提交记录.
log1.png
- 在所有提交记录中,选择需要回退到的commit ID,复制.
- 命令: git reset --hard A // A是commit ID.完成回滚操作.
- 命令: git log // 显示新的提交记录.
(4)版本回退之回到未来
现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?
-
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本
reflog.png -
然后再使用git reset --hard B,完成回到未来(相对于当前版本而言)的版本
完成上面的步骤后,我们需要将本地仓库与远程仓库建立联系
(5)添加远程仓库
这种情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作。
-
首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库(名字与本地git仓库相同)
-
将本地仓库与之关联
git remote add origin git@github.com:zhuozenghua/learngit.git
git@github.com:zhuozenghua/learngit.git要你自己项目的地址
- 本地仓库的内容推送到GitHub仓库
git push -u origin master
我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
git push origin master or git push
(6)从远程仓库克隆
上面是先有本地库,后有远程库的时候,如何关联远程库。
现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。
-
首先,登陆GitHub,创建一个新的仓库
-
远程库准备好后,下一步是用命令git clone克隆一个本地库
-
然后我们就可以修改我们的项目,并push到远程仓库
vi readme.txt
git status //工作区的状态
git add readme.txt
git commit -m 'message'
git push //提交到远程仓库
输入github用户名和密码
git status //再次工作区的状态
(7)解决git冲突
解决git冲突,假设同一个F文件,被操作者A和B都修改了.
解决思路:
- A先提交文件F,正常提交,无冲突问题
- B提交文件F时,报冲突.(git push),这是需要合并远程的变更
- B需要执行: git pull 操作,会自动将服务器端最新文件合并到本地F.(该文件F中,同时保留2个不同的修改点)
- B执行: git status 操作,显示冲突文件信息
- B执行: git diff 操作,显示文件F中的冲突点
- B执行: 用vi 打开 文件F, 查看到冲突处标记 <<<<<XXXXXXXYYYYYY=======>>>>>,手动删减,保留需要确认的部分
- 到这里,B本机的文件F已经在同步服务器端最新的F基础上,做了修改,变成"更加新的文件F"(比服务器端还新).
- 这样,再提交文件F.就不存在冲突问题.剩下的操作,就是正常的提交步骤
- git add XXXX
- git commit "xxxxyww"
- git push
- 输入账号名,密码
- 这样,就将"更加新的文件F"上传到服务器端.解决冲突问题
- 这个冲突解决问题,实际上和其他版本管理工具,没有啥本质区别
- 切换至A用户,再pull才能保持与远程一致
(8)分支管理
上面一切尝试我们都是基于master分支进行的。我们这里讲一下分支push过程中关联的问题,详细的分支操作参考文章后面的链接。
这里需要注意的本地git仓库中分支与github远程仓库中的分支没有一一对应的关系。
因此我们用git push命令的时候,必须先关联远程仓库的分支。
一种情况是远程没有该分支
新建分支用于开发:
git branch develop master //新建一个叫develop的分支,基于master分支
切换到这个分支:
git checkout develop
合并上面两步:git checkout -b develop master
现在可以在这个develop分支上做一些改动,并且提交。
然后设置一个远程仓库分支与之关联,git push -u origin命令会提示我们用下面的命令来完成
git push --set-upstream origin develop
以后我们就可以用git push origin提交了。
上面在远程仓库上新建分支我们也可以用:git push -u origin develop来实现
另一种情况是远程已经有你想要的分支
git clone+github地址的方法,项目默认只有master分支。git branch也只有master
要看所有的分支:git branch -a或者是git branch -r
这时候要新建一个分支,叫做dev,基于远程的dev分支:git branch dev origin/dev。我们也可以在创建是切换分支:git checkout -b dev origin/dev
合并分支
git checkout master
先转到主分支
git merge --no-ff develop
然后把develop分支merge过来
(9)建立里程碑
里程碑 = 稳定版本号.
里程碑的含义是: 一个阶段比较稳定的版本,正式提交发布出去.提供zip下载.
操作步骤:
- 在github网站上.进入项目首页.
- 横栏按钮(commits, branches, release等),找到release按钮.
- 找到按钮:draft a new release,点击进入下一页面.
- 填入版本号,以及说明信息.
- 完成后,点击publish release,将软件发布出去.
- 这样就完成里程碑建立,同时会自动生成zip下载链接.
(10)删除github上的文件夹,而不删除本地文件
git rm --cached -r admin
git commit -m "delete admin directory"
git push
其他
参考:
廖雪峰git教程