Git常用命令

Git常用命令

  • git官网:git-scm.com

设置个人身份:用户名和Email地址

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。

  • 你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的
全局用户名和邮箱设置
  • 注意git config命令的—global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址
  • 安装完成后需要此操作方能使用git命令,但是用户名和邮箱可以任意设置
# 一般方法
git config --global user.name "Your Name"
git config --global user.email "email@example.com"

# 在Mac下用如下命令设置全局姓名和email(其他也可)
git config --global --edit #会用vi打开文件编辑全局配置文件(~/.gitconfig)
git commit --amend --reset-author #似乎用来提交时重设作者,此处有疑问
每个项目单独的用户名和密码
  • 在每个项目的.git目录中的config文件中添加:
      [user]
          name = your_name_for_this_project
          email = you_email_for@this_project
    

一般使用流程

  • 创建目录并初始化git仓库->增加文件并添加到仓库控制中->提交
# 创建新的库
mkdir learngit
git init #在库所在文件夹内

# 增加文件(对于修改后的文件也要重新执行该命令)
git add filename

# 提交
git commit -m "message is necessary"

# 查看仓库状态
git status

# 查看文件和库中的不同
git diff filename

# 显示提交日志
git log
git log --pretty=oneline
# 图形化显示
git log --graph --pretty=oneline --abbrev-commit

版本回退

  • 基本法:当前版本HEAD,上一个版本:HEAD^,再上一个版本:HEAD^^,上100个:HEAD-100
      git reset --hard HEAD^ #HEAD是指向当前版本的指针
      git reset --hard 3628164 #完整版本号id的前几部分
    
  • 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
      #显示你的每一次命令
      git reflog
    
  • 查看工作区和版本库里面最新版本的区别
      git diff HEAD -- filename
    

撤销修改

  • 文件提交过程:工作区(vi等编辑器直接编辑后)->暂存区(git add之后)->永久版本(git commit后)
  • 在git add到暂存区前可以丢弃工作区的修改,即添加到最近一次git commit或git add后的状态
      git checkout -- filename
    
  • 已经git add后,撤销暂存区某个文件的修改,然后执行丢弃工作区修改的命令彻底撤销工作区的修改
      git reset HEAD filename
    
  • 删除文件:先本地rm命令删除后执行如下命令,记得commit
      git rm filename
      # 如果本地rm后发现删除错了
      git checkout -- filename #和版本库同步
    

.gitignore文件

  • 这是仓库的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。github官方准备的各种忽略配置文件:https://github.com/github/gitignore
    # 被.gitignore忽略后可以强制添加文件
    git add -f filename
    # 检查.gitignore文件
    git check-ignore -v addingfailedfilename
    

github

免账号和密码同步到github.com的方法
  1. 如果~/.ssh中无id_rsa.pub则用下边密码创建。一直按enter跳过输入密码的部分
     ssh-keygen -t rsa -C "youremail@example.com" #测试发现邮箱乱填都行
    
  2. 登陆github,点击setting->SSH and GPG keys->New SSH keys。然后将id_rea.pub的内容复制到其中即可。如果没有成功可能有id_rsa文件权限问题或者用了https协议而不是ssh
推送本地到github新仓库和克隆到本地
  • 将本地有的仓库推送到github.com上
    1. 在github.com点击Create a new repo创建新的仓库
    2. 关联远程仓库
       git remote add origin git@github.com:githubusername/repositoryname.git #或者https://github.com/githubusername/repositoryname.git
       #含义为增加一远程取名为origin(也可取为其他)
      
    3. 推送:第一次推送master分支的所有内容
       git push -u origin master #第一次推送需要-u参数,以后不用。把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到一名字叫origin的远程
      
  • 克隆到本地
      # 克隆一个本地库
      git clone git@github.com:github_username/repositoryname.git
    
远程库操作
  • 查看远程仓库信息
      # 查看远程仓库的信息
      git remote
      # 详细的信息
      git remote -v
    
  • 删除或重新关联远程库
      # 删除已经关联的远程库(包括删除了origin这个名字)
      git remote rm origin
      # 关联远程库,取另一个名字
      git remote add localrepositoryname remoterepositoryname
    
另有一个提供私有库的网站:gitee.com

分支

  • 创建并切换分支。PS:暂存区是通用的,因而在commit前切换分支,所有文件的未提交更改可见。当在一个分支上提交修改后,切换到其他分支后该修改才不可见
      git checkout -b branchname
      # 相当于
      git branch branchname
      git checkout branchname
    
  • 查看所有和当前分支
      git branch
    
  • 合并指定分支到当前分支
      git merge other_branch_name
      # 合并分支:git会尽可能用Fast forward模式,先删除掉分支,这会丢失分支信息
      # 如下命令禁用Fast forward模式并在merge时候生成一个新的commit
      git merge --no-ff -m "merge message" branchname
    
  • 删除分支
      # 删除分支
      git branch -d branchname
      # 强行删除未合并的分支
      git branch -D branchname
    
  • 分支的远程推送和下载
      # 推送分支
      git push orgin branchname
      # 在Git中,分支完全可以在本地自己藏着玩,是否推送,视你的心情而定!
      # 创建远程的分支到本地
      git checkout -b branchname1 orgin/branchname2
      # 指定本地和远程的分支的链接
      git branch --set-upstream branchname1 origin/branchname2
      # 推送失败则因为远程比本地新,用如下命令拉远程到本地,再push
      git pull
    

工作现场

  • 用于工作区的临时保存和恢复
    # 储存当前的工作现场
    git stash
    # 查看工作现场列表
    git stash list
    # 恢复现场(但不删除)
    git stash apply
    # 删除现场
    git stash drop
    # 恢复并删除
    git stash pop
    # 恢复指定的stash
    git stash apply stash@{number}
    

标签

  • 用于标记正式版本
    # 打标签
    git tag tagname
    git tag -a tagname -m "tagnessage" commitid
    # 查看所有标签
    git tag
    git show tagname # 查看标签详细信息
    # 对特定的commit打标签
    git tag tagname commitid
    # 用私钥签名一个标签,必须首先安装GnuPG
    git tag -a tagname -m "tagnessage" commitid
    # 删除标签
    git tag -d tagname
    # 推送一个或全部尚未推送的本地标签到远程
    git push origin tagname
    git push origin --tags
    # 删除已推送到远程到标签
    git tag -d tagname #先删除本地的标签
    git push origin :refs/tags/tagname #远程删除
    

其他内容

资料
  • 相关类似工具
    • BitKeeper
    • Mercurial
    • Bazaar
git Cheat Sheet
  • 廖雪峰提供国外网友制作的Git Cheat Sheet,建议打印出来备用。见其网站
设置命令别名
git config --global alias.selfdefinedcmd realcmd
git config --global alias.selfdefinedcmd 'a long cmd expression'
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" #示例
# 配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。每个仓库的Git配置文件都放在.git/config文件中。

其他命令(需要时再补充)

git显示颜色
# 设置让git显示颜色
git config --global color.ui true
查看跟踪了哪些文件
git ls-files
不下载历史记录只下载当前最新提交文件
git clone git://repo_url.git -depth=1
查看文件每一行详细修改信息
git blame file_name
git blame -L 100,+20 file_name #看100到100+20行

Ref

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值