导航:首页 > 文件教程 > gitcommit多个文件

gitcommit多个文件

发布时间:2022-09-13 08:05:05

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可以管理的仓库:

1
2

$ git init
Initialized 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这个命令看看:

1
2
3
4
5
6
7
8
9

$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 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命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

$ git log
commit
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 <303041859@qq.com>
Date: Thu Jan 15 22:06:05 2015 +0800
wrote a readme file
(END)
注:最后你可能会碰到这个(END),此后你怎么点都没有用。那么现在你要输入:wq或:q退出。这个命令同linux指令。
git log命令显示从最近到最远的提交日志。如果嫌输出信息太多,看得眼花缭乱的,可以试试加上
--pretty=oneline参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

$ 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:

1
2
3

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.

git reflog记录了每一次命令:

$ git reflog
ea34578 HEAD@{0}: reset: moving to HEAD^
3628164 HEAD@{1}: commit: append GPL
ea34578 HEAD@{2}: commit: add distributed
cb926e7 HEAD@{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进去,最终结果是你文件最后一次修改的结果
所以目前版本库里的应该是“好热”那个,另外,你的第二次的add
a.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 checkout master 先切换到 master 分支上面
git checkout -b demo 在当前 master 分支上创建并切换分支(此时你刚刚 commit 的代码会自动到 demo 分支上)

G. git如何合并 多个commit

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

sharyuke

H. git 怎么commit 全部文件

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 master

2.有选择性的合并历史提交
$ git rebase -i <first_commit>

会进入一个如下所示的文件
1 pick ba07c7d add bootstrap theme and format import
2 pick 7d905b8 add newline at file last line
3 pick 037313c fn up_first_char rename to caps
4 pick 34e647e add fn of && use for index.jsp
5 pick 0175f03 rename common include
6 pick 7f3f665 update group name && update config

将想合并的提交的pick改成s,如
1 pick ba07c7d add bootstrap theme and format import
2 pick 7d905b8 add newline at file last line
3 pick 037313c fn up_first_char rename to caps
4 s 34e647e add fn of && use for index.jsp
5 pick 0175f03 rename common include
6 pick 7f3f665 update group name && update config

这样第四个提交就会合并进入第三个提交。
等合并完提交之后再运行
$ git push -f
$ git gc --prune=now

阅读全文

与gitcommit多个文件相关的资料

热点内容
苹果手机电脑版文件手机怎么打开 浏览:878
八位数字组合的密码 浏览:18
红米note怎么分享wifi密码 浏览:798
ps文件里怎么加载pat文件 浏览:114
会计要准备哪些文件标签 浏览:651
电脑盘找不到文件 浏览:147
文件存放路径英文翻译 浏览:229
msu后缀是什么文件 浏览:886
施乐图片保存位置或文件名无效 浏览:165
老黄岛哪里有学习编程的 浏览:892
大数据策划公司 浏览:879
写文app或者网站哪些靠谱 浏览:761
ad18能打开brd格式文件吗 浏览:291
抖音短视频如何看后台数据 浏览:757
如何取数据前几位 浏览:415
计算机网络第4章答案解析 浏览:707
自己写编程书哪个好 浏览:541
微信发文件是问号怎么解决 浏览:670
老妖精网课下载内容在哪个文件夹 浏览:26
魅蓝note5应用商店app 浏览:536

友情链接