文件管理 · 2022年9月15日

gitcommit多个文件|如何解决GitHub commit次数过多git文件过大的问题

A. git系统里,可以分批commit吗

当然可以,git有几个概念你需要理解下,分别是仓库,缓冲区,工作区内。我们看到的每一个提交(容commit)都是仓库中的(在.git/目录下);我们checkout一个提交,看到的文件,都属于工作区,所以我们修改、增加、删除文件,其实都是在操作工作区;而每当我们checkout一个提交之初,都会有一个我们看不到的缓冲区,内容和工作区是一样的。当我们操作了工作区后,工作区和缓冲区内容就不一致了,这时候就需要用add/rm命令,将工作区的改动同步到缓冲区。而commit的时候,其实就是把缓冲区的内容进行提交,保存到仓库中。如果上面的内容你理解了,那问题就很简单了。修改A和B之后,你只add A,然后commit就行了。这时候git就只会提交A的改动,提交的时候也不会去关心B,B的改动自然会保留。

B. 如何将一个d盘的代码提交到e盘git库

Git,是Linus花了两周时间用C写的一个分布式版本控制系统。牛该怎么定义?其实,很多人都不care谁写了Git,只在乎它是免费而且好用的!So do I!下面开始我们的学习:1.Git安装(略)。2.创建版本库首先,选择一个合适的地方(我选择了D盘,我的电脑是Win 7),常见一个空目录: $ mkdir Git$ cd Git$ pwd//显示当前的路径/d/Git注:Windows下,路径名不要包含中文,因为Git对中文支持不给力!第二步,通过git init命令把这个目录变成Git可以管理的仓库:12 $ git initInitialized empty Git repository in /d/Git/.git/这样就创建了你的Git仓库。 接下来,我们上传一个文件到Git。编辑一个readme.txt文件,内容如下: Git is a distributed version control system.Git is free software distributed under the GPL.Git has a mutable index called stage.Git tracks changes of files.将其放到/d/Git目录下,因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。将一个文件放到Git仓库需要两步:(1)使用git add将文件添加到仓库:1 $ git add readme.txt(2)使用git commit将文件提交到仓库: git commit -m "wrote a readme file"[master 48b9a84] wrote a readme file 1 file changed, 2 insertions(+)注:git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。commit可以一次提交多个文件:$ git add file1.txt$ git add file2.txt$ git add file3.txt$ git commit -m "add 3 files."3.Git的命令很多,下面再学习几个吧!继续修改readme.txt文件: Git is a distributed version control system.Git is free software.git status命令看看结果: $ git status# On branch master# Changes not staged for commit:# (use "git add <file>…" to update what will be committed)# (use "git checkout — <file>…" to discard changes in working directory)## modified: readme.txt#no changes added to commit (use "git add" and/or "git commit -a")git status查看仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。虽然Git告诉我们readme.txt被修改了,但如果能看看具体修改了什么内容,自然是很好的。比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的readme.txt,所以,需要用git diff这个命令看看:123456789 $ git diff readme.txtdiff –git a/readme.txt b/readme.txtindex 46d49bf..9247db6 100644— a/readme.txt+++ b/readme.txt@@ -1,2 +1,2 @@-Git is a version control system.+Git is a distributed version control system. Git is free software.git diff查看不同!在工作中,我们可能提交了几千个文件,如果想看历史记录,可以使用git log命令:123456789101112131415161718 $ git logcommit Author: Michael Liao <[email protected]>Date: Tue Aug 20 15:11:49 2013 +0800 append GPL commit Author: Michael Liao <[email protected]>Date: Tue Aug 20 14:53:12 2013 +0800
 add distributed commit Author: Michael Liao <[email protected]>Date: Mon Aug 19 17:51:55 2013 +0800
 wrote a readme file<br>………………………………………………………………………………<br>………………………………………………………………………………commit Author: lixiaolun <[email protected]qq.com>Date: Thu Jan 15 22:06:05 2015 +0800wrote a readme file(END)注:最后你可能会碰到这个(END),此后你怎么点都没有用。那么现在你要输入:wq或:q退出。这个命令同linux指令。git log命令显示从最近到最远的提交日志。如果嫌输出信息太多,看得眼花缭乱的,可以试试加上
–pretty=oneline参数:123456789101112131415 $ git log –pretty=oneline commit a file readme text1.txt commit wrote a readme file 2015-1-30 upload local_gitgub remove text1.txt remove text.txt add test.txt git tracks changes add 3 text.txt understand how stage modify reamde.txt add a new word distr wrote a readme file友情提示:你看到的一大串类似3628164…882e1e0的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示。 时光穿梭之版本回退!!如果你提交的一个文件,发现还不如你你上一个版本好,赶紧回退!怎么做呢?首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164…882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。回退到上一个版本的命令git reset:1 $ git reset –hard HEAD^–hard参数有啥意义?这个后面再讲,现在你先放心使用。查看文件命令cat readme.txt:123 $ cat readme.txtGit is a distributed version control system.Git is free software distributed under the GPL.git reflog记录了每一次命令:$ git reflogea34578 [email protected]{0}: reset: moving to HEAD^3628164 [email protected]{1}: commit: append GPLea34578 [email protected]{2}: commit: add distributedcb926e7 [email protected]{3}: commit (initial): wrote a readme file前面的数字是commit id。知道commit id可以回退上一次执行的命令,回退命令为git reset –hard <commit id>:1 $ git reset –hard 3628164

C. git如何提交多个修改的文件,必须要一个一个add吗

add命令是将目标文件加入跟踪列表,每一次跟踪以commit为准,也就是说你只要没有commit,不管你什么时候把这个文件add进去,最终结果是你文件最后一次修改的结果所以目前版本库里的应该是“好热”那个,另外,你的第二次的adda.txt是没有什么作用的

D. git 多提交文件了怎么重新提交

先用git log查看下上次提交的版本号就是那个哈希值,然后通过git reset –hard空格加上哈希值前几位,你试试吧,如果担心有什么问题,可以使用git stash保存当前的工作现场。

E. 4、git add和git commit

git中的文件对象,最终都是存储在.git/objects目录中,以二进制形式存储的。git既松散存储,也进行差异化存储。每次修改一个文件,会在.git/objects目录中,生成一个二进制对象,当再次修改时,又生成另一个二进制对象,这即是松散存储。但是当工作区的二进制对象数超过6700个时(数目可配置),git会进行一次打包行为,针对相同文件进行差异化存储来减少文件数。 git大概总共有100多个命令,命令不是很多,但是每个命令,都可以带很多参数,功能很强大。git命令总共分为两类:高级命令和底层命令。 git add和git commit都属于高级命令,高级命令是通过调用多个底层命令来完成操作,这一节希望大家能彻底搞明白git add和git commit. 举个例子,假如我们新建一个工程,并新建了一个test.go文件,在这个文件里边随便写一些内容,下面我们用底层命令来生成一个完整的git历史记录: 第一步:针对test.go文件生成二进制存储对象 git hash-object命令就是针对某一个文件生成它的二进制存储对象,并返回它的sha1签名码,假设返回的是"" 第二步:更新索引文件 这一步是将我们上一步生成的对象以及它的路径添加到索引中。用到了我们上一节讲过的updae-index命令。 以上两步命令和git add test.go命令完全等价。 第三步:生成目录树对象 调用write-tree命令之后,git会针对当前索引区的目录结构,生成一个tree对象,并返回这个tree对象的sha1签名码,假设返回:d8329f 第四步:生成commit对象 echo后边单引号里边的内容就是我们的提交message了。第三步和第四步就是完成了一次git commit命令的操作。 大家可以试着操作一下以上四部命令,并观察一下.git/objects目录和工作区git状态的变化。

F. git怎样commit全部文件

git add .

git commit -m "提交注释"

git push origin 分支名称

正常来说这三部就够了

git checkout master 先切换到 master 分支上面git checkout -b demo 在当前 master 分支上创建并切换分支(此时你刚刚 commit 的代码会自动到 demo 分支上)

G. git如何合并 多个commit

git只能两两合并,合并之后生成一个新的commit 然后再合并另外一个 语法:git checkout youWantToKeepBranchgit merge youWantToMergeBranchsharyuke

H. git 怎么commit 全部文件

git add .

git commit -m "提交注释"

git push origin 分支名称

正常来说这三部就够了

git checkout master 先切换到 master 分支上面git checkout -b demo 在当前 master 分支上创建内并切换分支(此时你容刚刚 commit 的代码会自动到 demo 分支上)

I. Github上如何合并多个Commit

在使用 Git 作为版本控制的时候,可能会由于各种各样的原因提交了许多临时的 commit,所以需要把多个Commit合并到一起,具体做法如下:

1、首先假设已经有3个 commit

J. 如何解决GitHub commit次数过多.git文件过大的问题

一:常规办法1.删除无用的分支$ git branch -d <branch_name>2.删除无用的tag$ git tag -d <tag_name>3.清理本地版本库$ git gc –prune=now二:高级办法注意高级办法会导致push冲突,需要强制提交,其他人pull也会遇到冲突,建议重新克隆。!!!注意这些操作都很危险,建议找个示例库进行测试,确保自己完全掌握之后再实际操作。1.完全重建版本库$ rm -rf .git$ git init$ git add .$ git cm "first commit"$ git remote add origin <your_github_repo_url>$ git push -f -u origin master2.有选择性的合并历史提交$ git rebase -i <first_commit>会进入一个如下所示的文件1 pick ba07c7d add bootstrap theme and format import2 pick 7d905b8 add newline at file last line3 pick 037313c fn up_first_char rename to caps4 pick 34e647e add fn of && use for index.jsp5 pick 0175f03 rename common include6 pick 7f3f665 update group name && update config将想合并的提交的pick改成s,如1 pick ba07c7d add bootstrap theme and format import2 pick 7d905b8 add newline at file last line3 pick 037313c fn up_first_char rename to caps4 s 34e647e add fn of && use for index.jsp5 pick 0175f03 rename common include6 pick 7f3f665 update group name && update config这样第四个提交就会合并进入第三个提交。等合并完提交之后再运行$ git push -f$ git gc –prune=now