Git学习笔记

Git学习笔记-Cmd MarkDown

基本操作

初始化

git init                     #进入一个目录,初始化为git仓库
git status                   #查看状态
git add                      #新增/修改文件后,添加至暂存区(Stage)
git diff                     #对比缓存与仓库文件的区别
git commit -m "message"      #提交到仓库

版本穿梭

git log                         #查看提交日志
git log --pretty=oneline        #每行显示一个提交日志
git reset --hard HEAD~          #回退到上一个版本
git reset --hard HEAD~~         #回退到上上个版本
git reset --hard HEAD~100       #回退到上100个版本

git reflog                      #查看每一次的命令信息
    ea34578 HEAD@{0}: reset: moving to HEAD^
    3628164 HEAD@{1}: commit: append GPL
    ea34578 HEAD@{2}: commit: add distributed
    cb926e7 HEAD@{3}: commit (initial): wrote a readme file

git reset --hard 3628164c      #返回指定是ommit_id 版本

撤销修改

git checkout -- filename
#将最近一个版本checkout到本地
#如果修改前的file已经add到暂存区,但未commit,checkout撤销修改就回到添加到暂存区后的状态
#如果修改前的flie已经commit,checkout撤销修改就回到和版本库一模一样的状态

git reset HEAD readme.txt    #把暂存区的修改撤销掉(unstage)

删除文件

#本地删除文件后,删除仓库中文件
git rm filename #文件名大小写敏感
git commit -m "remove filename"
git rm -r    #移除整个文件夹

远程仓库

生成SSH KEY

ssh-keygen -t rsa -C "youremail@example.com"

生成KEY路径:C:\Users\SP52479.ssh
两个文件:id_rsaid_rsa.pubid_rsa.pub为公钥,添加到github账户。

远程库关联

将本地库关联到远程库

git remote add origin git@github.com:ds17/git_ex.git        #通过SSH关联
git remote add origin https://github.com/ds17/git_ex.git    #通过https关联
git remote rm origin                                        #删除origin
git push -f origin master                                   #强制推送到远程
git push origin master                                      #普通推送

远程库clone到本地

git clone https://github.com/ds17/git_ex

分支管理

创建与合并分支

git branch                   #查看分支,带*的为当前分支
git branch dev               #创建分支dev
git checkou dev              #move current head to dev
git checkout -b dev          #创建dev分支并切换

git add filename
git commit -m "message"      #dev分支工作完

git checkout master
git merge dev                #合并指定分支到当前分支
git branch -d dev

git push origin dev          #推送到GitHub dev分支
git push orogin :dev         #删除分支dev

git log --graph --pretty=oneline --abbrev-commit    #图形化查看修改日志

合并分支 no ff

git checkout master
git merge --no-ff -m "commit with no ff" dev   #以commit方式merge

BUG分支

临时需要修复BUG
1. stash dev分支的未commit内容(stash前先add);
2. 返回master分支;
3. 创建issue-bug分支进行bug修复;
4. 修复完,返回master分支,并以--no-ff形式merge
5. 返回dev分支,查看stash list , pop需要的stash

git add test.txt
git stash
git checkout master
git checkout -b issue-101
git add filename
git commit -m "message"
git checkout master
git merge --no-ff -m "message" issue-101

git checkout dev
git stash list
git stash apply stash{0}
git stash drop stash{0}
git stash pop stash{0}    #返回工作现场,并删除stash内容

Feature分支

当前在dev分支上,并且工作区clean

git branch -D feature-vulcan #强制删除未合并的分支

多人协作

远程库中有masterdev
clone完之后只显示master分支
即使git branch也只显示master分支

git remote -v
git checkout -b dev origin/dev    #在本地创建一个dev分支并指向origin/dev

clone后直接创建dev并修改,将导致冲突

git clone https://...
git checkout -b dev      #查看远程库信息
...
git add test.txt
git commit -m "message"
git push origin dev   #推送失败,原因是远程库被修改过,需要先pull

git pull   
#pull失败:There is no tracking information for the current branch.
#需要先将本地dev链接到远程dev
git --set-upstream dev origin/dev
git pull       #文件修改冲突,修复冲突并`commit`, ok 
git push origin dev

标签管理

git tag v1.0
git tag v1.1 commit_id
git show tag_name
git tag -a tag_name -m "tag_message" commit_id

git tag -d tag_name                          #删除tag
git push origin tag_name                     #push tag 到远程
git push origin --tags                       #一次性push所有tags

#删除远程tag
git tag -d tag_name                          #先删除本地tag
git push origin :refs/tags/tag_name          #push到远程

Git配置

.gitignore

新建txt文件,sublime打开,save as,文件类型选择All Files(.): .gitignore

.gitignore语法

folder_name/        #ignore the whole folder
*.db                #ignore file type: db
filename            #ignore the filename,本项目下路径的该名字文件均被ignore

命令行别名

alias

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ck checkout    #ck,co都指向 checkout
git config --global alias.cm commit 
git config --global alias.br branch 
git config --global alias.untage 'reset HEAD'
git config --global alias.lg 'log --prretty=oneline --abbrev-commit'
git config --global alias.lgg 'log --graph --pretty=oneline --abbrev-commit'

C盘用户目录下隐藏文件:config

[alias]
    st = status
    ck = checkout
    cm = commit
    co = checkout
    br = branch
    unstage = reset HEAD
    last = log -1
    lg = log --pretty=oneline --abbrev-commit
    lgg = log --graph --pretty=oneline --abbrev-commit

GIt 大小写敏感

git config core.ignorecase false
git config core.ignorecase true

附件资料
搭建Git服务器
Git Cheat Sheet

参考资料

  1. Git教程-廖雪峰
  2. .gitignore语法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值