from my blog:xdo0.github.io
理解Git
强烈建议先看这篇git - 简易指南,有助于理解
补充一些git操作
相信官方文档是最准确的指导,而以下只是适合新手用来快速掌握git
与远端repo相连
github提供两种方式的链接,HTTPS和SSH,其中SSH方式需要rsa密码,其详细使用可以参考这篇,如果你只想把代码放在本地,这步可以不需要。
git init
会生成.gitgit remote add origin github仓库的ssh链接
本地仓库关联远端仓库(默认远端仓库是origin)git push -u origin master
(由于新建的GitHub仓库是空的,所以第一次推送master分支时需要加-u参数<同--set-upstream>,以后再推送就不用加了)
clone已经存在的远端repo
-
git clone github仓库的ssh链接
-
可以把repo导入到码云里去,然后
git clone
码云的repo,在git remote add
添加github的repo链接
把github的commit记录清除
在git bash上输入这些命令,其中序号是注释,这样可以看到github上只剩下1 commit
1. Checkout
git checkout --orphan latest_branch
2. Add all the files
git add -A
3. Commit the changes
git commit -am "commit message"
4. Delete the branch
git branch -D master
5.Rename the current branch to master
git branch -m master
6.Finally, force update your repository
git push -f origin master
git add将文件添加至暂存区
git add [参数] [--] <路径>
具体看Git add常见用法,对于git add -i
,见官方文档
git commit提交暂存区文件到项目
见Git commit常见用法,-m其中提到的message,就是相当于对提交的修改起个注释/关键字方便标识,当你git push后会在github上的commit那栏和被修改的文件看到这个注释,如图。
可以参考以下命名:
- bugfix: 表示修复 bug
- feature: 表示增加新功能
- add: 表示增加类、文件、代码块等
- delete: 表示删除类、文件、代码块等
- update: 表示对代码块、功能的更新
- refactor: 表示对代码块、功能重构
- arch: 表示输出中间版本,用于测试等
- release to v1.0.0: 表示打包输出的版本号
- style:格式(不影响代码运行的变动)
git reset
-
git reset --hard (commit id)
版本回退,其中commit id通过git log
查看--hard参数将会将会重置(HEAD,INDEX(STAGING),WORKING COPY),其他参数有:
1、soft: 重置git commit
2、mixed: 重置git commit 和 git add
3、hard: 重置git commit 和 git add 和工作副本的修改。
-
git reset HEAD
就是回退到当前版本(没有commit)。git reset HEAD^
回退到上一版本
其他
-
git status <-s如果写上,给出简洁形式>
查看项目状态 -
git remote -v
查看与哪个远端仓库相连 -
创建新分支:
git branch (branchName)
-
切换到新分支:
git checkout (branchName)
-
上面两个命令也可以合成为一个命令:
git checkout -b branchName
-
git log <--oneline(如果写上,就显示简洁版)>
查看更改历史,ctrl+c退出 -
通常在发布软件的时候打一个tag,tag会记录版本的commit号,方便后期回溯,比如v1.0:
git tag -a (标签名) <版本(结点)编号,如果不写,默认给当前结点打编号>
-a应该是annotate(注解),没有-a是查看标签 -
git merge branchname
合并分支 -
git branch -d branchname
删除分支,-d是delete -
git fetch
将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中, -
git pull
则是将远程主机的最新内容拉下来后直接合并,即:git pull
=git fetch
+git merge
,这样可能会产生冲突,需要手动解决。
困惑之处
-
git与github客户端的区别
git作为一个分布式版本控制系统,能够记录你代码的修改版本,也能创建不同分支,有助于与他人协作,在没有与github的repo(repository仓库)建立连接前,代码都在本地的文件夹里。
而gitbub提供了远端的repo,可以用git来操作。github客户端相当于集成了git的功能并提供了GUI(当然git也有GUI,但个人感觉没有github界面友好,我都是使用git bash,一个命令窗口).
所以你只需要下载git就好,安装过程按默认的来就可。
-
git如何记录代码历史版本的
本地上都在
.git
文件夹里(需要打开隐藏的项目才能看到),你操作git bash来选择提交或回滚版本;github上在
commit
中查看,不过download zip不会下载相应的.git
文件夹,也就是说你下载的是github repo的最新版本。 -
git clone太慢,可以把github上的repo下载的zip解压后与github上的repo建立连接吗
可以,大部分git出现的问题都是版本不同步导致的,需要git pull来同步。但是由于一些项目commit记录太多太大,导致这样和git clone相比速度也没快多少。我还是推荐使用码云gitee来加速