git pull忽略指定文件_Git 实用笔记

  • Post author:
  • Post category:其他
9187e3c836b79fe1944e5facb670435c.png

更新于 2019/03/28 22:29:49

git 文件状态

这里说的是已被追踪的文件

分为未修改、已修改、已放入暂存区。

398b76c163a6a64393ee964ae170f355.png
各状态之间的转化
一般都会有两个远程分支,origin 代表自己的远程仓库,upstream 代表上游官方代码仓库

git add 命令作用:

  1. 开始跟踪新文件;
  2. 把已跟踪且修改过的文件放到暂存区;
  3. 将有冲突的文件标记为已解决;

HEAD 指针

HEAD 指针很重要,就把他放在第一项简单介绍了,官方文档中给出的解释如下:

HEAD 指向你正在工作的本地分支的指针,运行
git branch 命令,仅仅是建立了一个新的分支,但不会自动切换到这个分支中去。

远程仓库相关

 # 关联远程仓库
 git remote add [name] [xxurl]
 # 出现的问题:fatal: refusing to merge unrelated histories
 git pull origin master
 git pull origin master --allow-unrelated-histories
 git commit -m "xx"
 # 再执行 git pull origin master

 # 添加远程仓库
 git remote add [远程仓库别名] [url]
 # 远程仓库删除/重命名
 git remote rm [远程仓库别名]
 git remote rename [old] [new]

git fetch

 git fetch [remote-name]

从指定的远程仓库拉取本地仓库还没有的数据,执行之后本地仓库会拥有这个远程仓库中所有分支的引用,但不会自动合并或修改当前的工作空间。不推荐用 pull 命令,除非这个仓库只有你自己维护且不会产生冲突。实际工作中为防止冲突都用 fetch、rebase。

Github 同步 Fork 源项目更新

 # 关联官方远程仓库
 git remote add upstream http://ssx
 # 拉取官方仓库更新的数据
 git fetch upstream
 # 切换到本地 master 分支
 git checkout master
 # 把官方仓库的 master 分支合并到本地 master,完成同步且不会丢掉本地修改的内容
 git merge upstream/master
 # 更新到 GitHub 自己 Fock 的分支上
 git push origin master
af77b3aa8ec9efa0835a123f12e055bc.png

当官方仓库有新分支时:

5b85d6a2af6c1da2f09fb3599b285eb0.png

git stash 暂存

 git stash       #将当前所有修改项(未提交)暂存,工作空间返回致上一次提交
 git stash apply #回复之前暂存的修改

git 版本回退

 # --hard 会抛弃当前工作区的修改
 # --soft 会回到之前的版本,但保留当前工作区的修改,用于重新提交
 git reset <模式> xx版本号(head表示当前版本)
 ​
 # 这时再使用 git push 会提示当前版本小于远程版本
 git push
 #  ! [rejected]        LogbackFilter_AS-176 -> LogbackFilter_AS-176 (non-fast-forward)
 # error: 推送一些引用到 'https://code.xxx.com.cn/curriculum/owl.git' 失败
 # 提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。
 # 提示:再次推送前,先与远程变更合并(如 'git pull ...')。详见
 # 提示:'git push --help' 中的 'Note about fast-forwards' 小节。
 ​
 #强制提交
 git push origin <分支> --force

.gitignore 文件

不会对已被追踪的文件起作用

  1. a.txt 文件:忽略此仓库下的全部 a.txt 文件
  2. build/:忽略所有 build 目录中的文件

git 分支创建

 # 新建一个分支并切换到那个分支上
 git checkout -b xxx
 # 等同于 git branch xxx; git checkout xxx

git commit 指定文件

 git commit [file1] [file2] -m "xxx"

git rebase 和 git merge

git rebase 看起来会让当前分支没有经过任何合并一样

git merge xx 是将 xx 分支合并到当前分支,看起来好像是提一个新的「合并的提交」; git rebase xx 是取消当前分支的提交内容,并把它们保存为一个“补丁”,把当前分支更新为最新的 xx 分支,最后把这些补丁应用到当前分支。

8a175c274c7045957ddfe478a9c35c74.png
当前 git 分支状态
69de5420cfb1c5ba39ac0cb22c6a92a3.png
merge 操作生成了一个新的合并的提交
bbb6a5b2aebe503e7987a7f408571de4.png
rebase 会先将当前当前所在分支的提交取消掉

参考文章:

git rebase 使用笔记​www.jianshu.com

a9fd496a78a85df5724a65bc460e886f.png

版权声明:本文为weixin_36147145原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。