Git学习日志
上传至远程仓库
一、进入项目所在文件夹,右键点击选择git bash here
。(如果此文件夹里有.git文件,请删除!)
二、输入命令 git init
三、输入命令 git remote add origin https://…get
(https://…get为在码云上新建项目时获取的链接地址)
四、输入命令git add .
(add
后面要有一个空格后再加上.
)
五、输入命令 git commit -m"xxx"
(“xxx”
为备注信息,可写项目版本号,如:1.0、2.0等)
六、输入命令 git push origin master
(git push -u origin master -f为强制提交代码上码云的命令,但最好还是使用git push origin master命令上传,如无特殊情况请勿使用强制命令上传)
七、在我的码云处查看项目是否上传成功!
配置ssh-key
生成秘钥
ssh-keygen -t rsa -C "你的邮箱" //一直回车,然后y
~/.ssh/ 目录会生成 XXX-rsa (私钥)和 XXX-rsa.pub (公钥)
将XXX-rsa.pub (公钥)
复制到Git网页-设置-ssh配制-新建秘钥-粘贴
设置姓名和电子邮件地址:git config
git config --global user.name "XXX"
git config --global user.email XXX@163.com
配置.gitignore
文件
不希望 Git 自动添加这些文件
.gitignore
模式规则如下:
- 空行或以开头的行将被忽略。
#
- 标准 glob 模式有效,并将在整个工作树中递归应用。
- 您可以使用正斜杠 () 开始模式以避免递归。
/
- 您可以使用正斜杠 () 结束模式以指定目录。
/
- 您可以通过以感叹号 () 开始模式来否定模式。
!
一、创建.gitignore
文件
二、定义Git全局的 .gitignore
文件
git config --global core.excludesfile ~/.gitignore
三、举例文件内容
# 表示此为注释,将被Git忽略
*.a //表示忽略所有 .a 结尾的文件
!lib.a //表示但lib.a除外
/TODO //表示仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ //表示忽略 build/目录下的所有文件,过滤整个build文件夹;
doc/*.txt //表示会忽略doc/notes.txt但不包括 doc/server/arch.txt
bin/: //表示忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
/bin: //表示忽略根目录下的bin文件
/*.c: //表示忽略根目录下.c文件,不忽略 build/.c文件
debug/*.obj: //表示忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj
**/foo: //表示忽略/foo,a/foo,a/b/foo等
a/**/b: //表示忽略a/b, a/x/b,a/x/y/b等
!/bin/run.sh //表示不忽略bin目录下的run.sh文件
*.log: //表示忽略所有 .log 文件
config.php: //表示忽略当前路径的 config.php 文件
/mtk/ //表示过滤整个文件夹
*.zip //表示过滤所有.zip文件
/mtk/do.c //表示过滤某个具体文件
实际应用
.gitignore
应用
要忽略.idea文件夹及其下面所有文件的变更,你只需在.gitignore
文件中添加以下一行:
.idea/
如果你之前已经将.idea目录或其下的文件添加到了Git仓库中,执行以下步骤来从Git跟踪中移除:
git rm -r --cached .idea/
提交这个更改到Git仓库:
git commit -m "Remove .idea directory from Git tracking"
注: git rm 与git rm --cached区别
当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用
git rm file_path
如若本地又需要使用, 只是不希望这个文件被版本控制, 可以使用
git rm --cached file_path
回退操作
**情况1:**最近一次提交的记录有遗漏未提交,将两个commit合为一个
git commit --amend // 把上一次的commit记录去除,修改commit信息。
按 a
或者i
或者o
进入编辑模式,修改好commit信息后按Esc键退出编辑模式,然后:wq
保存编辑的信息。
**情况2:**回退代码到某次 commit
git log //查看提交记录
(说明:commit 单词后面红框里的十六进制字符串,就是每次提交代码时,git生成的唯一记录编码。Git 可以通过该编码准确锁定每次的提交记录)
git reset --hard commitID //回退代码到某次 commit
(其中,
commitID
根据实际情况,确定需要回退的 commit 记录ID。)git reset --soft // 回退到指定commit,该commit之后的提交内容,保留工作目录,并把重置 HEAD 所带来的新的差异放进暂存区
git reset --hard // 回退到指定commit,该commit之后的提交内容,工作区和暂存区的内容都被抹掉
git reset 或 git reset --mixed // 不带参数,或带参数–mixed(默认参数),与git reset --soft 不同,它将会把差异放到工作区
代码冲突
本地代码不是最新代码,既要更新代码 又要提交编写代码
先更新在提交 详细参考–链接