git&github的原理和使用问题汇总

文章目录

      • 1. git提交大文件到github中
      • 2. git不慎提交了大文件
      • 3 git push项目到github上时免密码
      • 4. failed to push some refs to git
      • 5 git上传时忽略指定文件
      • 6. 利用git bash(git命令行)将本地代码上传到github上

1. git提交大文件到github中

这里的大文件指的是大小超过100M的文件
(1)安装git lfs

  • 下载安装 windows installer
  • 运行 windows installer

不知道是已经安装过我忘记了还是其他原因,我没有执行这一步,也没有问题,大文件也传上去了

(2)初始化git lfs
在命令行执行 git lfs install

(3)大文件追踪
使用 git lfs track 命令进行大文件追踪 例如git lfs track "*.png"追踪所有后缀为png的文件

(4)提交

git add 
git commit 
git push 

这些命令跟以前是一样的

2. git不慎提交了大文件

(1)保存重要的文件到移动硬盘或者其它目录下
(2)查看之前的commit情况
这里就是查看之前所有的commit的版本情况

$ git log     查看所有的commit版本

查询结果

commit 69e4c353eff2587b312ab8ab9118bf6e52339f73
Author: kaikai-sk <**********@qq.com>
Date:   Thu May 7 18:51:12 2020 +0800

    修改之后的稿子

commit 5ac0fcbe0ed960ca90fa55326e4cad53a88eb476
Author: kaikai-sk <*********@qq.com>
Date:   Fri Apr 24 21:37:54 2020 +0800

    添加了一些参考文献或者其他资料

类似于5ac0fcbe0ed960ca90fa55326e4cad53a88eb476这种的就是版本号
(3)回退到某个commit
这里会回退到某一个时刻的状态,所以就有了第(1)步提前备份的操作。

$ git reset --hard HEAD^         回退到上个版本
$ git reset --hard HEAD~3        回退到前3次提交之前,以此类推,回退到n次提交之前
$ git reset --hard commit_id     退到/进到 指定commit的sha码

3 git push项目到github上时免密码

$ touch ~/.git-credentials
$ vim ~/.git-credentials

添加内容

https://{username}:{passwd}@github.com

添加git配置

$ git config --global credential.helper store

查看~/.gitconfig文件变化

[credential]
    helper = store

4. failed to push some refs to git

创建仓库时,建立了README.md,导致该文件不在本地代码中。
可以通过以下方式解决

git pull --rebase origin master

执行后可以看到本地代码中多了README.md文件
再次执行git push origin master即可完成代码上传

5 git上传时忽略指定文件

使用gitignore文件来解决这个问题,步骤是:

S1:      touch  .gitignore     #创建gitignore隱藏文件  
S2:      vim    .gitignore     #编辑文件,加入指定文件  
         #下面是我的gitignore文件的内容  
         #忽略gitignore文件  
         .gitignore  
         #忽略后缀名为.o和.a的文件  
         *.[oa]  
         #显示指定忽略名称为main的文件  
         main  

文件.gitignore的格式规范:
A:#为注释
B:可以使用shell所使用的正则表达式来进行模式匹配
C:匹配模式最后跟"/"说明要忽略的是目录
D:使用!取反(例如目录中包含 test.a,并且gitignore文件中包含 *.[oa],如果在文件中加入 !test.a 表明忽略除test.a文件以外的后缀名为.a或者.o的文件)

6. 利用git bash(git命令行)将本地代码上传到github上

git命令工具Git Bash 。
首先在Git Bash中使用cd命令进入对应的本地项目路录,按照下面的命令操作:

git init    表示在当前的项目目录中生成本地的git管理。
git add .
表示你要提交到github上的文件,如果你要将所有文件都添加上去的话,
使用git add . “.”表示添加当前目录中的所有文件。
git commit -m “first commit”    表示提交,并带有注释。

git commit -m “提交的描述信息”
如果我们这里不用-m参数的话,git将调到一个文本编译器(通常是vim)来让你输入提交的描述信息

git commit -a -m “提交的描述信息”
git commit 命令的-a 选项可只将所有被修改或者已删除的且已经被git管理的文档提交倒仓库中。如果只是修改或者删除了已被Git 管理的文档,是没必要使用git add 命令的。

git commit –-amend 对于已经修改提交过的注释,如果需要修改,可以借助 git commit –-amend 来进行。

git remote add origin https://github.com/huangtianyu/mytest
这个URL就是项目地址。
git push -u origin master

用于将本地分支的更新,推送到远程主机,最后根据提示输入用户名和密码。-u选项指定一个默认主机。这一步可能会提示你: ! [rejected] master -> master (fetch first),这事因为git仓库已经有内容了,这时你需要先利用git pull命令同步代码,步骤如下:直接用git pull origin <分支名称(默认master)> 拉下服务器代码,如果没问题即解决了。如果提示:fatal:refusing to merge unrelated histories,这时执行如下命令:git branch --set-upstream-to=origin/<分支名称> master,之后执行git pull origin master --allow-unrelated-histories,即可拉下代码,然后调用git push -u origin master即可上传代码。

注意:输入密码的时候,是不会有反应的,所以需要认真输入。
键盘的上下键可以挑选之前和之后的命令,重复执行。

你可能感兴趣的:(Git)