Ste*_*eve 610 git commit staging gitignore
我运行了"git status",下面列出了一些被修改的文件/或标题为"未提交更改的更改"标题.它还列出了一些我想忽略的未跟踪文件(我在这些目录中有一个".gitignore"文件).
我想将修改后的文件放在暂存中,以便我可以提交它们.当我运行"git add."时,它将修改后的文件和我想忽略的文件添加到登台.
如果使用下面的git状态显示,如何仅添加已修改的文件并忽略未跟踪的文件.
另外,我的".gitignore"文件是否正常工作?
$ git status
# On branch addLocation
# 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: someProject/path/domain/viewer/LocationDO.java
# modified: someProject/path/service/ld/LdService.java
# modified: someProject/path/service/ld/LdServiceImpl.java
# modified: someProject/path/web/jsf/viewer/LocationFormAction.java
# modified: someProject/war/WEB-INF/classes/message/viewer/viewer.properties
# modified: someProject/war/page/viewer/searchForm.xhtml
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .metadata/
# someProject/build/
no changes added to commit (use "git add" and/or "git commit -a")
Run Code Online (Sandbox Code Playgroud)
man*_*lds 840
理想情况下,你.gitignore应该防止未跟踪(和忽略)的文件显示在状态,添加使用git add等.所以我会要求你纠正你的.gitignore
您可以这样git add -u做,它将分阶段修改和删除文件.
您还git commit -a可以执行仅提交已修改和已删除的文件.
请注意,如果您在2.0之前使用Git版本并使用git add .,那么您需要使用git add -u .(参见" 差异git add -A"和" git add ." ").
use*_*329 92
这对我有用:
#!/bin/bash
git add `git status | grep modified | sed 's/\(.*modified:\s*\)//'`
Run Code Online (Sandbox Code Playgroud)
甚至更好:
$ git ls-files --modified | xargs git add
Run Code Online (Sandbox Code Playgroud)
git commit -a -m "message"
Run Code Online (Sandbox Code Playgroud)
-a:在此提交中包括所有当前已更改/删除的文件。但是请记住,不包括未跟踪的(新)文件。
-m:设置提交的消息
我想将修改后的文件放入暂存区,以便我可以提交它们
长话短说:开始
使用交互模式 ( git add -i),选择更新(在中键入2或),选择全部(在提示中键入),退出交互模式(在 中键入或)。uWhat now> prompt*Update>>7qWhat now> prompt
长话短说:结束
对于更有耐心的人:---
步骤1
您可以使用交互模式。
git add --interactive
Run Code Online (Sandbox Code Playgroud)
或简写形式,
git add -i
Run Code Online (Sandbox Code Playgroud)
这将给出所有已修改文件的列表及其状态,以及一堆您可以使用的命令选项,例如:
staged unstaged path
1: unchanged +17/-0 package-lock.json
2: unchanged +2/-0 package.json
3: unchanged +2/-28 src/App.js
4: unchanged +7/-6 src/App.test.js
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now>
Run Code Online (Sandbox Code Playgroud)
第2步
对于您的情况,请键入u或2What now>,
What now>u
Run Code Online (Sandbox Code Playgroud)
你到下面,
staged unstaged path
1: unchanged +17/-0 package-lock.json
2: unchanged +2/-0 package.json
3: unchanged +2/-28 src/App.js
4: unchanged +7/-6 src/App.test.js
Update>> *
Run Code Online (Sandbox Code Playgroud)
步骤3
在Update>>提示符中,键入*将上述列表中的所有文件添加到暂存区域(您也可以通过提供逗号分隔的数字来添加单个文件),
Update>> *
Run Code Online (Sandbox Code Playgroud)
此时,所有修改的文件都已添加到暂存区域,您可以通过在提示符中键入1或 来验证状态(或者通过键入或退出交互模式并运行常用命令),sWhat now>q7git status
What now> 1
Run Code Online (Sandbox Code Playgroud)
这会向您显示状态,
staged unstaged path
1: +17/-0 nothing package-lock.json
2: +2/-0 nothing package.json
3: +2/-28 nothing src/App.js
4: +7/-6 nothing src/App.test.js
Run Code Online (Sandbox Code Playgroud)
我们可以在这里看到,未暂存的列为列表中的所有文件显示文本“nothing” 。
对于有关忽略未跟踪文件的问题的第二部分,我相信这个答案会有很大帮助。
我碰巧尝试了这个,所以我可以先看到文件列表:
git status | grep "modified:" | awk '{print "git add " $2}' > file.sh
cat ./file.sh
Run Code Online (Sandbox Code Playgroud)
执行:
chmod a+x file.sh
./file.sh
Run Code Online (Sandbox Code Playgroud)
编辑:(见评论)这可以一步实现:
git status | grep "modified:" | awk '{print $2}' | xargs git add && git status
Run Code Online (Sandbox Code Playgroud)