目录
一、基础命令
git init :初始化仓库
git clone url :从远端克隆 git clone <版本库的网址> <本地目录名(选填)> exp:git clone ssh:git@dfdf.re/s/re/test
git add :添加文件 git add a/b/c/file.txt
git commit :提交代码 git commit -m '代码提交信息' exp:git commit -m ‘添加一个名为file的文件’
git status :查看状态 (显示你是否add和commit,可查看那些文件提交)
git push origin<branch> 推送到远端仓库 git push origin 远端分支名:本地分支民
git branch -a 查看所有分支
git branch -d 删除分支 git branch-d 分支名
git checkout 切换分支 git checkout -b zj_test :创建分支zj_test并切换到该分支
git diff <file> 查看代码修改内容
git stash:将修改后的代码存入缓存
git stash pop : 将缓存的代码弹出(保持原来的状态)
git stash apply stash@{1}
git rm :删除暂存区
git pull:拉取远端分支到本地
git fetch: 从远端获取最新版本,不合并
git remote :列出远端所有主机
git remote -v :查看远端主机网址,查看远端仓库地址
git config -l :查看姓名+邮箱等信息
git log:查看日志
git branch -m oldbranchname newbranchname :修改本地分支名称
如果修改远程分支,只需要将本地分支重命名为新分支名称,然后删除远端分支,再把本地分支上传即可
二、进阶命令
git pull origin master:localbranchname
git pull = git fetch + git merge
git pull --rebase : 采用rebase方式合并
git reset --hard <hash> : 重置分支commit值,重置暂存区,重置工作区,hash值为4位即可
git branch -vv : 查看本地分支所跟踪的远端分支
git branch -help : 查看帮助文档
git commit --amend -m '修改最新的提交说明' : 修改最新的提交说明
git config --global alias.st status : 给git status修改别名为git st
cat .git/config : 查看我们克隆的url地址
git remote set-url origin ssh://git@*********************.git
1. git 打补丁:
git add file.java
git commit -m '将文件名为file的java文件打成补丁'
git format-patch -1
则在当前工作目录中创建.patch文件
2. 将本地项目推送到远端git仓库
git init 本地项目
git add .
git commit -m ‘推送本地项目到远端git仓库’
git remote add origin 远端仓库地址
git push -u origin master
eg:
git remote add origin git@github.com:GitHub42096/newproject.git
git push -u origin master
3. 取消本地目录下关联的远程库:
git remote remove origin
重点*****4. 拉取远端仓库到本地未绑定的分支:
出错:
当前分支没有跟踪信息。
请指定您要合并哪一个分支。
详见 git-pull(1)。
git pull <远程> <分支>
如果您想要为此分支创建跟踪信息,您可以执行:
git branch --set-upstream-to=origin/<分支> zj_test需使用如下命令:
git branch --set-upstream-to=origin/materzj_test
三、git合并:
1. git merge:
git merge <分支名> : 合并分支
若有冲突:HEAD指向当前分支,可直接对有冲突分支进行编辑修改。也可使用解决冲突版本:使用我的版本解决冲突(当前所分支)和使用他人版本解决冲突(合并的分支)。
最后:提交解决冲突信息
中止或重新启动合并
在合并提交执行最后的 git commit 命令前,使用如下命令:
git reset --hard HEAD
2. git rebase
四、git如何忽略文件或者文件夹:
在仓库目录下新建一个名为.gitignore的文件(因为是点开头,没有文件名,没办法直接在windows目录下直接创建,必须通过右键Git Bash,按照linux的方式来新建.gitignore文件)。如下图所示。
.gitignore文件对其所在的目录及所在目录的全部子目录均有效。通过将.gitignore文件添加到仓库,其他开发者更新该文件到本地仓库,以共享同一套忽略规则。
然后就直接写要忽略的文件或者文件夹,例如忽略到cache目录
/cache
这样即可
具体使用请看 man gitignore
在项目根目录下面 添加 .gitignore文件
文件中每一行表示需要忽略的文件的正则表达式。
.gitignore文件过滤有两种模式,开放模式和保守模式
1. 开放模式负责设置过滤哪些文件和文件夹
例如: /target/ 表示项目根目录下的target文件夹里面所有的内容都会被过滤,不被GIT 跟踪
.classpath 表示项目根目录下的.classpath文件会被过滤,不被GIT跟踪
2. 保守模式负责设置哪些文件不被过滤,也就是哪些文件要被跟踪。
例如:
!/target/*.h 表示target文件夹目录下所有的.h文件将被跟踪
如果你不清楚GIT会跟踪哪些文件,你可以先用git status命令查看一下
C代码
- $git status
- # On branch master
- # Untracked files:
- # (use "git add <file>..." to include in what will be committed)
- #
- # .metadata/
- # gitignore
像这样的话,就是.metadata文件夹和gitignore被跟踪。
另外别忘记了在.gitignore文件中加入一行.gitignore,否则的话.gitignore将会被传到GIT服务器上
五、sourcetree、git中遇到的问题:
git文件内容没变但status显示修改了很多文件:
(该问题参考:https://blog.csdn.net/u012109105/article/details/51252242)
用git diff 查看文件的不同,显示如下效果:
这里提示的不同,是文件的权限改变了。
解决方案:不让git检测文件权限的区别
使用命令:git config core.filemode false
sourcetree未检测出jar包
解决:设置------>高级----->编辑------->把.ignore文件中忽略jar的删除后保存即可
soucetree未检测出大小写改变:
解决:git config core.ignorecase false
六、git 将本地代码(第三方库)关联的远端仓库:
新建远端仓库并创建初始化文件(readme.md)
1. 添加远端仓库地址
2. 使用git fetch
3. 使用git pull
报错:refusing to merge unrelated histories 参考:https://blog.csdn.net/u012145252/article/details/80628451
则使用命令 git pull origin master --allow-unrelated-histories
4. git push
推送全部分支到远程仓库:
git push --all origin -u
七、gitignore文件中忽略项不起作用的解决方法
参考:https://blog.csdn.net/zero__007/article/details/106333059
原因:新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,这时候我们就应该先把本地缓存删除,然后再进行git的push,这样就不会出现忽略的文件了。git清除本地缓存命令如下:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'