过去的一年多中,我陆陆续续的记录了一些GIT操作中遇到的问题,以及对应的解决方法,在这里分享出来。
这个过程中,我参考了很多的文章,很遗憾没能一一记录。在这里,对所有帮助过的朋友表示感谢。如果您看到我有侵犯您的著作权,请联系我,及时处理。
1、Git忽略某些文件
在管理一个版本库时,有时候不想要管理某些文件,这个时候我就把这个问件写到.gitignore文件中,这样应该就可以将这个文件忽略,但是经常出现的情况是:将这些文件名写到其中了,使用
git status
查看发现这些文件并没有被忽略掉。查了资料发现,想要.gitignore起作用,必须要在这些文件不在暂存区中才可以,.gitignore文件只是忽略没有被staged(cached)文件,对于已经被staged文件,加入ignore文件时一定要先从staged移除,才可以忽略。
因此可以先从暂存区中删除掉这部分文件
git rm --cached testFile
如果删除整个文件夹
git rm --cached -r testFile
这样,在.gitignore
中写testFile
,这个文件才可以被忽略掉。
2、git强制中断,之后无法上传
将中断后生成的lock删除,rm -f ./.git/index.lock
然后再用git reset HEAD
回滚到add之前的版本中。
3、解决每次Git提交都要输入密码
3.1 临时方法
之前遇到一个问题,我们已经添加了ssh公钥,但是每次提交的时候,还是要我们输入密码,能不能不输入密码呢?
其实是可以的,步骤如下:
3.1.1、进入到所要提交的工程文件夹下
3.1.2、输入 ssh-add ~/.ssh/id_rsa命令,注意:id_rsa是你的私钥的名字
3.1.3、如果出现Could not open a connection to your authentication agent.
输入
ssh-agent bash
3.1.4、然后继续输入 ssh-add ~/.ssh/id_rsa
3.1.5、至此需求实现
3.2 永久方法–只对单个秘钥有效,创建一个新的秘钥
3.2.1、用当前的私钥创建一个不需要密码的私钥
$ openssl.exe rsa -in .ssh/id_rsa -out .ssh/id_rsa_new
Enter pass phrase for .ssh/id_rsa:
writing RSA key
3.2.2、将旧的私钥备份到id_rsa_old
mv id_rsa id_rsa_old
3.2.3、将新的私钥赋值到原来用于提交工程私钥
mv id_rsa_new id_rsa
4、如果commit时message写错了怎么办?
git commit --amend
Will open your editor, allowing you to change the commit message of the most recent commit. Additionally, you can set the commit message directly in the command line with:
git commit --amend -m "New commit message"
5、将本地分支推送到远程
5.1$ git push origin develop
6、将本地某一部分的代码,切换到以前版本的代码
git checkout f68b9748ae3 -- src/gisComponets/*
7、使用git远程登录linux
ssh centos@11.23.3.3
然后输入密码,就可以登录了
10、创建一个tag
在文件夹上右击“Git bash”出现命令框
git tag -a 1.2.6 -m 'version 1.2.6' 引号中是说明信息
git push --tags 就可以在Bitbucket网上看到创建的tag了
11、删除某个tag
在文件夹上右击“Git bash”出现命令框
git tag -d 1.2.6 删除这个tag(本地)
git push origin :refs/tags/1.2.6 删除这个tag(服务器),这时可以发现Bitbucket网上的那个tag不见了
12、git 删除已经追踪的文件
查看发现这些文件并没有被忽略掉。查了资料发现,想要.gitignore起作用,必须要在这些文件不在暂存区中才可以,.gitignore文件只是忽略没有被staged(cached)文件,对于已经被staged文件,加入ignore文件时一定要先从staged移除,才可以忽略。
删除文件
git rm –cached testFile
删除文件夹
git rm –cached -r testFileFloder
删除所有已被追踪的文件
git rm –cached -r .
这样,在.gitignore中写testFile,这个文件才可以被忽略掉。
13、git追踪已忽略文件夹下的个别文件
1)、主动忽略相关文件
/lib/rocket-theme
/lib/index.js
/lib/rocketUi.js
/lib/package-lock.json/lib/rocket-theme
/lib/index.js
/lib/package-lock.json
2)、忽略整个目录,然后强行追踪某个文件
在gitignore中添加要忽略的目录
/lib/
再强制追踪某个文件
git add /lib/test.txt -f
14、分支切换error: The following untracked working tree files would be overwritten by checkout
可以使用git clean命令清除某些文件。
git clean 参数
-n 显示将要删除的文件和目录;
-x —–删除忽略文件已经对git来说不识别的文件
-d —–删除未被添加到git的路径中的文件
-f —–强制运行
git clean -n
git clean -df
git clean -f
git clean -xf