具体问题是这样的, 我的工作内容是项目里的两个文件 A,B,需要修改,提交,推送远程。然后为了方便,我在项目里加了一个 ccc 的文件,这个文件只是我想在本地用的,不想给它提交。 这样的话我在 Visual Studio 里工作的时候,每次提交都要手动选择 AB 两个文件提交,而且文件 ccc 会一直在更改区等着我提交。 我知道有种方法是把文件 ccc 添加到 gitignore 规则里,但是添加规则意味着“.gitignore”文件会被修改,文件修改就导致了这个文件等着我去提交,然而“.gitignore”文件是项目项目整体规定好的,我不能去提交“.gitignore”的修改。 所以说,有什么方法,能让我在当前工作分支愉快地修改 A 、B 、ccc 三个文件,还能够不让未提交的 ccc 文件更改影响我对分支的 merge 和 rebase ?
1
victor 2020-12-22 09:47:09 +08:00
|
2
zmxnv123 2020-12-22 09:51:15 +08:00
.git/info/exclude
|
3
basefas 2020-12-22 09:51:27 +08:00 2
不要 git add 这个文件就好
|
4
hakono 2020-12-22 09:53:41 +08:00 1
目测 LZ 已经把 git add * 用得炉火纯青了
|
5
f6x 2020-12-22 09:53:54 +08:00
每次提交确认文件列表, 不是应该有的好习惯么....
|
6
ZZITE 2020-12-22 09:56:47 +08:00 1
.git/info/exclude
项目目录下有个.git 文件,看不到的话搜索下怎么显示。然后在底下这个文件里把不需要提交的文件添加进去 |
7
ZZITE 2020-12-22 09:57:05 +08:00
.git 文件夹
|
8
wgbx 2020-12-22 09:57:44 +08:00
git update-index --assume-unchanged
|
9
huang86041 2020-12-22 10:03:39 +08:00
我觉得这样刚好能让你提交的时候确认一下提交文件.蛮好
|
10
Vveeb OP @hakono 萌新,命令行敲命令什么的,根本不会去做的,只是用 VS 自带的 Git 界面这样,鼠标点一点就能完活儿,哇敲好用的~
|
11
misaka19000 2020-12-22 10:16:27 +08:00 1
设置全局 ignore
|
12
Vveeb OP @basefas 对的,我应该是没有 add 的,VS 里面的自带的 Git changes 窗口显示的更改数,我没有加到暂存区或者提交什么的,什么都没做。这种情况下我试了把别人的分支 merge 进来是可以的,但是如果我想 rebase 的话,会提示我有未提交的更改,不知道是不是因为我有更改没有 add+commit 的问题导致的?
|
14
Vveeb OP @ZZITE Ohhhhh !成功了!简单且有效,thanks !添加文件之后在 VS 里,文件没有被立即忽略掉,我随便改了一下文件再保存,它就不在 git changes 的列表里了!
|
15
shuqin2333 2020-12-22 10:53:21 +08:00
一般用 idea 操作 git,可以创建多个 change list,提交时提交某个 list 就行了
|
16
basefas 2020-12-22 10:57:12 +08:00
@Vveeb 没用过 VSCode 的 Git 功能,刚才看了下,在设置中搜索 Git: Untracked Changes 选择 separate,就可以在 UI 上区分出 Changes 和 Untracked Changes,其中已经 git add 的文件标记为 A,未追踪的文件标记未 U,文件后边有个加号的图标就表示 git add,所以你操作时,不要把你不想追踪的文件也点击那个加号就可以。希望能帮你找到问题的原因。
|
17
HENQIGUAI 2020-12-22 11:22:20 +08:00
把 ccc 文件放到别的文件夹下面去,既然是一个和此仓库无关的文件,干嘛非得放在仓库的目录里呢。
|
18
Vveeb OP @HENQIGUAI 嗐,ccc 其实就是个子类啦,在写基类的时候,想时不时地在子类里调调方法,改改属性这样的,然而这个子类只是我自己测试用的,不是业务需要的。所以说我还在想,有没有一种方法我可以创建个“本地-私人用-dev”分支,这里有全部我自己加的乱七八糟的文件,而且可以用这个分支保存我的修改记录。然后创建个“本地-作业用-dev”分支,这个分支里只有 A 、B 两个文件,我在“本地-私人用-dev”分支里一通开发完了,只把 A 、B 俩文件的修改并到我的“本地-作业用-dev”分支上,然后提交+推送,而且切换到我的作业用分支,里面也只有 A 、B 俩文件,这样的。不知道可不可以这样操作的说
|
20
nextvay 2020-12-22 14:31:05 +08:00
## 没有 add 的可以用这个
ignorev2(){ n=1 for comm in "$@" do # echo "第$n 个参数:" $comm echo $comm >> .git/info/exclude let n+=1 done tail .git/info/exclude } unignorev2(){ for comm in "$@" do `sed -i -e "s/$comm//g" .git/info/exclude` done `sed -i -e "/^[ ]*$/d" .git/info/exclude` tail .git/info/exclude } 根据楼上的,写个 shell 多方便 ## 已经 add 的可以用这个 ignore(){ git update-index --assume-unchanged $1 } unignore(){ git update-index --no-assume-unchanged $1 } |
21
charlie21 2020-12-22 14:38:36 +08:00
思路:新建一个文件夹 供放置你觉得是临时文件的文件,在 git 系统里忽略整个此文件夹
git ignore a folder simple way - Google 搜索 https://stackoverflow.com/questions/343646/ignoring-directories-in-git-repositories-on-windows/37846411#37846411 |
22
dingwen07 2020-12-22 14:53:18 +08:00 via iPhone
用 GitHub Desktop 打开,写好 commit 并提交,之后回有提交凭据的地方 push
|
23
shm7 2020-12-22 19:06:09 +08:00 via iPhone
git stash
|