关于git的常用方法,多账号以及一些规范(更新)

Git知识:
  • Working Directory - 工作目录。Git仓库位于工作目录之下,工作目录下的文件有加入Git仓库(tracked)和没加入Git仓库(untracked)的区别。
  • Stage Area - 暂存区。如上所述,已加入Git仓库并被修改(尚未提交)的文件。
  • Local Repository - 本地仓库。
  • Remote Repository - 远程仓库。
git初始化 (了解如何初始化仓库)
  • git init // 初始化一个文件夹作为一个仓库
  • ssh-keygen -t rsa -C “您的邮箱地址” // 生成id_rsa秘钥文件在用户目录的.ssh文件下
  • git config –list // 查看当前配置的用户名和邮箱
  • git config –global user.name // 更改用户名
  • git config –global user.emeil // 更改用户邮箱
  • git config // 利用这个命令可以新增、更改Git的各种设置,例如’git config branch.master.remote origin’就将master的远程版本库设置为别名叫做origin版本库
增加删除文件
  • git add [file] // 添加文件到文件暂缓区
  • git add [dir] // 添加文件夹到文件暂缓区
  • git add . // 添加所有文件
  • git rm [file] [file] // 删除文件,并且放入暂缓区
  • git rm –cached [file] // 停止追踪指定的文件,保留在工作区内(把特定文件从暂存区删除)
  • git mv [origin file name ] [new file name] // 更改文件名字,并保存在暂缓区内
代码提交
  • git commit -m [mssge] //提交暂缓区到仓库区
  • git commit [file] [file] //提交文件
  • git commit -a //提交工作区自上次commit之后的所有变化
  • git commit -v //commit之后显示所有的diff信息
  • git commit –amend -m [message] //如果没有任何新的改变,则更改上一次commit的提交信息
  • git commit –amend [file] [file] //重做上一次commit并提交本次的变化
分支(branch)操作相关命令
  • git branch // 查看本地分支
  • git branch -r // 查看远程分支
  • git branch [name] //创建本地分支 —-注意新分支创建后不会自动切换为当前分支
  • git branch –set-upstream <分支> <主机名/分支> // 手动建立追踪关系
  • git branch -a // 查看所有分支
  • git branch -d [name] // 删除分支:—- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
  • git branch –track [branch] [remote branch] // 新建一个分支,与远程分支进行关联
  • git checkout [name] // 切换分支
  • git checkout -b [name] // 创建新分支并立即切换到新分支
  • git checkout projectname // 转换分支
  • git push origin [name] // 创建远程分支(本地分支push到远程)
  • git push origin :heads/[name] // 删除远程分支
  • git push origin test:master // 提交本地test分支作为远程的master分支 //好像只写这一句,远程的github就会自动创建一个test分支
  • git push origin test:test // 提交本地test分支作为远程的test分支。如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。
  • git push origin –delete [branch name] //删除远程分支
  • git merge [name] //合并分支: —-将名称为[name]的分支与当前分支合并
  • git cherry-pick [commit] //选择一个commit,与当前分支进行合并
远程仓库相关命令(主要指本机下的远程主机的别名)
  • git clone git://github.com/jquery/jquery.git
  • git clone -o <主机名> <地址> // 克隆的时候指定主机名
  • git remote -v // 查看远程主机以及名称,以及当前项目远程连接的是哪个仓库地址。
  • git remote add <主机名> <网址> // 添加远程主机和名称
  • git remote show <主机名> // 查看本季下主机名和远程网址的详细信息
  • git remote remove <主机名> // 删除远程主机
  • git remote rename <原主机名> <新主机名 > // 重命名远当前的主机连接
  • git remote update <分支名> //更新与上游分支同步
标签
  • git tag //列出所有的tag
  • git tag [name] //为当前的缓冲区加tag
  • git show [tagname] //查看tag项目的信息
  • git push [remote] [tagname] //推送tag到远程
  • git push [remote] –tags //推送所有的tag到远端
  • git checkout -b [branch] [tagname] //新建某个branch指向某个tag
查看信息
  • git log // 查看日志
  • git status // 显示有变更的文件信息
  • git log state // 查看推送的历史消息
  • git log –follow // 查看当前文件的历史提交信息包括文件改名
  • git whatchanged [file] //查看历史变动信息
  • git log -p [file] // 显示指定文件的每一次diff
  • git blame [file] // 显示具体是什么人在什么时候修改以及信息
  • git diff // 显示暂缓区和工作区文件的变动
  • git diff HEAD // 显示工作区与最新commit之后的仓库区的区别
  • git diff [branch1]…[branch2] // 显示两次提交的区别
  • git show [commit] // 显示某次提交的原数据和内容的变化
  • git show [commit]:[file] // 显示某次提交某个文件的变化
  • git reflog // 显示最近几次的提交
远程同步
  • git checkout filename //将本地的文件恢复到与远程仓库版本一致的文件。
  • git chekcout . //恢复所有的文件
  • git fetch [remote] //下载远程仓库的所有变动
  • git push [remote] –force //强行推送即使有冲突
  • git push [remote] –all //推送所有的分支到远程仓库
  • git pull [remote] [branch] //取回远程仓库的变化
  • git push -u origin master //将本地的项目提交到远程仓库中。
  • git reset HEAD //清空暂存区
  • git revert:还原一个版本的修改,必须提供一个具体的Git版本号,例如’git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20’,Git的版本号都是生成的一个哈希值
  • git fetch -all //只是下载远程的库的内容,不做任何的合并,加下一句可以强制更新
  • git reset –hard origin/master //把HEAD指向刚刚下载的最新的版本
建立子模块
  • git submodule add <仓库地址> <路径> // 为工程添加submodule,删除submodule,稍微麻烦点:首先,要在“.gitmodules”文件中删除相应配置信息。然后,执行“git rm –cached ”命令将子模块所在的文件从git中删除。
  • git submodule update –init –recursive // 当使用git clone下来的工程中带有submodule时,初始的时候,submodule的内容并不会自动下载下来的,此时,只需执行上述命令
// 删除子模块,需要先把子模块文件删除,这个还不会把git内容从work tree上移除,只会从.git/config删除关联  
git submodule deinit subModuleName 
//从work tree上移除子模块  
git rm subModuleName  
//在删除之后从work tree上保留子模块
git rm --cached subModuleName 
合并
  • git rebase <主机名> // 当当前代码与远程仓库分叉,也就是本地更改了东西,远程也更新了东西,这个方法可以,解决冲突,但是不会以分叉的形式展示。与git merge的区别可以参考该博客
  • git rebase –continue // 当有冲突时,解决后此命令可以继续合并
  • git rebase –abort // 向结束合并时,通过此命令完成
  • git merge <分支名> // 合并当前分支和另一分支
  • git pull –rebase // 表示把本地当前分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到”.git/rebase”目录中),然后把本地当前分支更新为最新的远程分支,最后把保存的这些补丁应用到本地当前分支上
缓存
  • git stash:将当前未提交的工作存入Git工作栈中,时机成熟的时候再应用回来
  • git stash pop // 回退stash
  • git stash list // 列出stash记录
多账号

1.新建USER2的SSH Key

# 进入SSH目录
$ cd ~/.ssh
# 新建SSH Key
$ ssh-keygen -t rsa -C "user2@mail.com"
# 设置名称为id_rsa_github,其他的步骤可以回车即可,按照github上的教程
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): id_rsa_github

2.将密钥添加到SSH agent里,由于默认只读取id_rsa,通过agent可以识别其他密钥

ssh-add ~/.ssh/id_rsa_github

如果出现问题,可以尝试:

ssh-agent bash
ssh-add ~/.ssh/id_rsa_github

3.修改config文件,如果没有就创建一个

# 如果没有就创建一个,有的话就在后面继续添加就可以
touch config

# 以下是文件内容
Host git@github.com
 HostName github.com
 User git
 IdentityFile C:/Users/Administrator/.ssh/id_rsa_github

4.将新的id_rsa_github.pub拷贝,然后复制到Github上
5.测试:

ssh -T git@github.com
使用git的团队合作规范,一般是gitlab

1.先fork团队项目到自己的远程仓库,然后git clone到本地。
2.当完成了功能的开发,add然后commit改动和需要提交的文件。更新文件信息的固定的格式按照规定。
3.pull远程将要提交的团队项目到本地,先解决冲突。然后push到自己的远程分支。
4.申请merge request,让同事review。

问题
  • error:failed to push some refs to …
    原因是:远端上的代码版本和本段的不一致
    解决方法:强制覆盖版本或者更新版本,方法分别是,git push -f或者git fetch && git merge等价于git pull
  • warning: LF will be replaced by CRLF问题
    解决方法:Git提供了一个换行符检查功能(core.safecrlf),可以在提交时检查文件是否混用了不同风格的换行符。这个功能的选项如下:
    false - 不做任何检查
    warn - 在提交时检查并警告
    true - 在提交时检查,如果发现混用则拒绝提交
    建议使用最严格的 true 选项。
    windows中 git config –global core.autocrlf false
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值