"工欲善其事,必先利其器", 代码管理亦是如此,目前主流的工具有SVN和git。
工具始终只是工具,当然我们可以选择好用的工具,仅此而已。
git的优点:多分支管理,记录清晰可见,链表的存储结构,切换HEAD指针无缝切换各个版本...不一一列举了,懂者自然懂,用过的都说好,不解释了,快上车!!!
git分本地库和远程库之分,顾名思义本地库只存在于本地,远程库存在于服务器端的某一个节点,而本地库也分暂存区和版本库, 一般在git代码管理中,git add之后的文件都存在于待提交的暂存区里,git commit之后才会进入版本库成为版本库的一部分,然后本地版本库更新比对远程库之后,push到远程库中,下一次修改前把最新的版本git pull拉取下来,即为一个闭环.
(本文只是一个学习笔记)
1.创建git
mkdir gitDemo//创建一个目录
cd gitDemo//进入这个目录
git init//实例化
或者
git clone https://www.guithub.com.XXXX/.git
然后根据提示输入用户名或者邮箱
//如果提示报错,之前有其他的git账户之类的 'fatal: Authentication failed for https://www.guithub.com.XXXX/.git' 重新设置一下git账户信息即可
git config --global user.name "xxxx"
2. git添加新的文件或者修改了的文件到暂存库中
git add .// 添加所有的更新到暂存区
3. 提交更新的改变
git commit -m"logmessage"//提交到版本库
4. 查看是否有更改未提交的情况
git status
5. 回滚之前版本
//一般 git commit 操作之后会log提示 HEAD->master也就是HEAD指针指向master刚刚提交的版本
git reset --hard HEAD^//回滚上一个版本,回滚到上上个则HEAD^^,以此类推往回回滚100次则很难数得清楚^的个数可以写成 HEAD~100这样
git reset --hard commit_id///提交id不用填写完整,前面几位可以区分的就可以~
git reflog///查看commit_id和提交历史记录
撤销修改:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退,不过前提是没有推送到远程库(推到远程库的情况得本地回退之后再push最新版本上去覆盖之)
6. 生成ssh key (必要的安全加密措施)
a. 检查是否有ssh key
cd ~/.ssh//查看这个目录下的文件
b. 生成key
c. 拷贝公钥,设置好对应的key github或者使用的站点
cat ~/.ssh/id_rsa.pub查看并拷贝到到github(远程库的站点设置)上添加设置key
//或者用命令添加到剪贴板
pbcopy < ~/.ssh/id_rsa.pub
d. 测试一下这个ssh能不能使用
7. 拉取远程库
//克隆下来
//cd 到要存储的目录下
// 执行 git clone + 链接
git clone https://github.com/WangGuibin/WGBTagViewDemo.git
//git fetch
git fetch://相当于是从远程获取最新版本到本地,不会自动merge
git fetch origin master
git log -p master..origin/master
git merge origin/master//合并远程分支的最新内容
git fetch origin master:tmp//拉取到tmp分支中
git diff tmp// 比较tmp与主分支有啥不一样
git merge tmp//合并掉tmp分支
//git pull
git pull://相当于是从远程获取最新版本并merge到本地
git pull origin master//拉取远程库
8. 推送到远程库
//第一次关联的时候使用
git remote add origin git@server-name:path/repo-name.git
//推送到远程
git push -u origin master
9. 分支管理
查看分支:git branch
创建分支:git branch
git push origin branchName :branchName// 本地分支推送到服务端,并远程建立一个新分支
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge --no-ff //合并子分支加--no-ff参数显示提交细节,不加的话相当于跳过子分支的提交细节
删除分支:git branch -d //删除本地分支
git push origin :branchName//删除远程分支
10. 打上tag
git tag //用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a -m "blablabla..."//可以指定标签信息;
git tag -s -m "blablabla..."//可以用PGP签名标签;
命令git tag可以查看所有标签。
git push origin //可以推送一个本地标签;
git push origin --tags//可以推送全部未推送过的本地标签;
git tag -d //可以删除一个本地标签;
git push origin :refs/tags///可以删除一个远程标签
11. 查看log提交记录
/// 生动形象查看git log
git log --graph或者
git log --graph --pretty=oneline --abbrev-commit
12. 使用快捷短键操作,使用git像开挂一样
使用shell终端zsh插件oh my zsh中的 plugin = ( git ) 添加git即可
alias grep git//召唤所有快捷命令
zsh具体教程查看本文尾部链接
13. 如果你在主分支(master)上做了修改,子分支(dev)想要同步主分支的修改,那么有以下两种操作:
# 方式一: git merge 合并分支
git checkout dev#切换到子分支
git merge master#合并主分支 即让主分支覆盖子分支 拥有主分支的当前所有更新
# 方式二: git rebase 好像也叫合并分支
git checkout dev
git rebase master// 将master上的修改合并到 dev 分支(当前分支)。
[廖雪峰的官方网站] (https://www.liaoxuefeng.com)
[猴子都能懂的git教程](https://backlog.com/git-tutorial/cn/)
[SVN菜鸟教程](http://www.runoob.com/svn/svn-tutorial.html)
[zsh学习教程](http://wdxtub.com/2016/02/18/oh-my-zsh/)
领取专属 10元无门槛券
私享最新 技术干货