• git 学习笔记


    1、创建版本库
    在工作目录下:git init

    2、添加文件到版本库
    git add <file>( <file2> <file3>…) --将工作区的文件添加到暂存区,可一次性提交多个文件
    git commit -m "注释性语句" --将暂存区中的文件提交到版本库中

    3、查看工作区状态
    git status --查看工作区状态,会说明哪些修改未add,哪些修改需要commit,
    如果没有,则会显示nothing to commit, working directory cleaning。

    git diff
    git diff (<file> --查看工作区与暂存区文件差异
    git diff --cached (<file>) --查看暂存区与本地版本库文件差异
    git diff head (<file>) --查看工作区与本地版本库文件差异

    4、回退版本
    git log (--pretty=oneline) --查看历史提交记录
    git reflog --查看历史操作命令
    git reset --hard HEAD^ --将当前版本回退到上一个版本,
    HEAD指向的是当前版本,上一个版本HEAD^,上上一个版本HEAD^^,往上10个版本HEAD~10
    git reset --hard commit_id --将当前版本回退到指定提交ID对应的版本,提交ID可以通过git log和git reflog查找
    注:git log显示的内容可能会比较多,但git bash上显示不下时,最下面会有一个冒号:,指示还有更多的内容,这是通过上下箭头就可以选择内容进行查看,要退出按q键即可,要查看其他命令,按h键。

    5、撤销修改
    git checkout -- file --可以丢弃工作区的修改,把版本库的文件替换工作区的版本。
    当自修改后文件未被添加到暂存区,则撤销修改回退到提交到版本库后的状态;
    当文件已经添加到暂存区,又做了修改,则撤销修改回退到添加到暂存区后的状态。
    git reset HEAD file --将暂存区的修改回退到工作区

    eg:当不但改乱了工作区某个文件的内容,又添加到了暂存区,如果想撤销修改,先git reset,后git checkout -- file

    6、删除文件
    rm file --将工作区中的文件删除
    git rm --将暂存区的文件删除,之后commit,即可删除版本库中的文件
    git checkout -- file 将版本库的文件替换到工作区,可恢复误删的文件

    7、与远程仓库相连
    1)在Git Bash中:ssh-keygen -t rsa -C "youremailaddress",一路回车,将在用户目录的.ssh中产生两个文件id_rsa和id_rsa.pub,是产生的秘钥对,id_rsa是私钥,不可泄露,id_rsa.pub是公钥。
    2)在GitHub中SSH Keys中将公钥添加上即可
    3)在GitHub上创建仓库test
    4)在本地仓库下运行命令:git remote add origin git@server:XXXXXXXXX/test.git
    5)第一次将本地仓库文件上传到远程仓库中:git push -u origin master
    6)后续再推送:git push origin master

    在上传文件到远程仓库时,可能出现如下错误:
    error: failed to push some refs to 'git@server:XXXXXXXXX/mytest.git'
    hint: Updates were rejected because the remote contains work that you do
    hint: not have locally. This is usually caused by another repository pushing
    hint: to the same ref. You may want to first integrate the remote changes
    hint: (e.g., 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    大多是因为远程仓库中README.md不在本地仓库中
    解决方法:先pull再push
    git pull --rebase origin master :README.md将出现在本地
    git push -u origin master --将文件上传到远程仓库

    8、克隆远程仓库到本地
    首先在远程先创建好仓库
    在Git Bash中:git clone git@server:XXXXXXXXX/mytest.git,在当前目录会出现一个mytest文件夹
    注:git支持多种协议,有多个地址 ,包括https,以及通过ssh支持的原生git协议,后者速度最快。
    使用https,速度慢每次推送必须输入口令,在只开放http端口的时候,不能使用ssh协议,只能使用https

    9、分支管理

    git branch --查看分支

    git branch <name> --创建分支

    git checkout <name> --切换分支

    git checkout -b <name> -- 创建并切换分支

    git merge <name> --合并某个分支到当前分支,当有冲突时,需要手动处理

    git merge --no-ff <name> --禁用fast-forward模式,合并后的历史分支,可看出曾经做过合并,fast-forward看不出

    git branch -d <name> --删除分支

    git brach -D <name> --强行删除分支,适用于需要丢弃没有被合并过的分支

    git log --graph --pretty=oneline --abbrev-commit --查看分支合并图

     

    10、stash

    当当前分支还有未提交的修改,又需要另开分支时,可使用stash将当前工作现场储存起来。

    git stash --储藏当前工作现场,执行后,使用git status查看工作区,没有未提交的修改

    git stash list --查看stash列表

    git stash apply stash@{n} --恢复工作现场,n表示序号,在list中有,恢复后,list内容依旧存在

    git stash pop --恢复工作现场,同时把stash list内容删除

     

    11、多人协作

    git remote -v --查看远程库信息

    将本地分支推送到远程分支:

    • 本地新建分支若不推送到远程,则对其他人不可见

    • git push origin <branch> --从本地推送分支,若失败,先用git pull抓取远程的新提交

    • git checkout -b <branch> origin/<branch> --在本地创建与远程分支对应的分支,本地和远程分支名称最好一致

    • git branch --set-upstream <branch> origin/<branch> --建立本地分支与远程分支的关联

    • git pull --从远程抓取分支,若有冲突,需先处理冲突

    12、标签

    git tab <tagname> --新建标签,默认HEAD,也可指定commit_id

    git tab -a <tagname> -m '<comments>' --指定标签描述信息

    git tab -s <tagname> -m '<comments>' --用PGP签名标签,但是必须安装gpg(GunPG),若没找到gpg或无gpg密钥,会报错

    git tab --查看所有标签

    git show <tagname> --查看某个标签的具体信息

    git push origin <tagname> --可将一个本地标签推送到远程

    git push origin --tags --可将全部未推送过的本地标签推送到远程

    git tag -d <tagname> --可删除一个本地标签

    git push origin :refs/tags/<tagname> --可删除一个远程标签

     

    13、忽略特殊文件

    场景:在提交时将某类文件忽略提交

    在工作区的根目录新增一个文件.gitignore,将需要忽略的文件名放入即可。

    也可将GitHub上各种情景的.gitignore文件组合使用,在线浏览地址:https://github.com/github/gitignore

    .gitignore文件本身要放到版本库中,且可对该文件进行版本管理

    git add -f <fillname> --强制对某文件添加到暂存区,忽略.gitignore文件的作用

    git check-ignore -v <filename> --检查igitignore文件中具体哪个规则将文件忽略

     

    14、配置文件

    git config --global alias.st status --配置别名,st是status别名,

    --global说明该配置对当前用户生效,配置信息添加在用户主目录下的.gitconfig(D:UsersXXX.gitconfig);如果没有则对当前仓库起作用,配置信息添加在仓库根目录下的.git文件夹下的config文件中。若需要删除配置,直接删除文件中对应行即可

    git config --global alias.st --查看配置信息,--global查看全局配置变量,去掉--global查看当前仓库生效的配置信息

     

  • 相关阅读:
    Python菜鸟之路:Python基础-线程、进程、协程
    Python菜鸟之路:Python基础-Socket编程-2
    Python菜鸟之路:Python基础-Socket基础-1
    react-native 使用 antd-mobile-rn UI进行开发app
    Java基础
    Java基础
    Java基础
    Java基础
    Java基础
    Java基础
  • 原文地址:https://www.cnblogs.com/yichuan2014/p/7884961.html
Copyright © 2020-2023  润新知