一个学习网址:https://learngitbranching.js.org/

一.对于一个新的远程空仓库

  本地新建文件后推送

#初始化
git init
#添加文件
git add README.md
#提交版本
git commit -m "first commit"
#添加远程仓库
git remote add origin https://github.com/tjp40922/test.git
#把提交版本推送到远程仓库
git push -u origin master #或者直接推送
$ git push https://github.com/tjp40922/test.git #虽然第一次推送指定了目标仓库地址,但是并没有进行永久关联仓库,下一次推送还是会有这样的提示(直接Git pull拉去之后挨次提交也是会有这样的提示,也是要进行下面的操作):
$ git push
fatal: No configured push destination.
Either specify the URL from the command-line or configure a remote repository using git remote add <name> <url> and then push using the remote name git push <name> #进行仓库关联
git remote add master https://github.com/tjp40922/test.git #再次推送了
$ git push master
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use git push --set-upstream master master #需要进行身份验证(验证完成就可以直接推送了)
$ git push --set-upstream master master
Username for 'https://github.com': tjp40922
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 304 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/tjp40922/test.git
04475e7..588c8af master -> master
Branch master set up to track remote branch master from master. #这样操作后翼子操作的都是主分支

二.当本地新建一个空文件夹

#从远程克隆主分支(克隆完记得进入克隆下来的项目文件夹再进一步操作)
git clone https://github.com/tjp40922/test.git
#查看分支(还是在主分支)
git branch
#创建新并切换到的分支(dev)
git checkout -b dev
#再次查看新分支(已经切换到新的分支)
git branch
#把dev分支推送到远程仓库
git push origin HEAD -u #因为克隆下来的会有仓库跟中记录的,不需要像第一种情况还需要进行关联
#这样以后推动的都会直接推动到dev分支,master在从dev拉去代码进行合并
#但是这样默认每次pull/push都是到dev分支的,所以每次需要拉拉取主分支就需要pull + 主分支的地址 如果本地分支已经关联远程的主版本,直接pull即可
否则,可用
git pull origin 远程主分支名:本地分支名
进行拉取
git pull origin master:dev #对于文件夹可以通过进入文件夹把文件夹的文件进行提交,文件夹就会被一并提交

三.创建忽略文件以及过滤规则

今天讲讲Git中非常重要的一个文件——.gitignore。

首先要强调一点,这个文件的完整文件名就是“.gitignore”,注意最前面有个“.”。这样没有扩展名的文件在Windows下不太好创建,这里给出win7的创建方法:

创建一个文件,文件名为:“.gitignore.”,注意前后都有一个点。保存之后系统会自动重命名为“.gitignore”。

一般来说每个Git项目中都需要一个“.gitignore”文件,这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中。

实际项目中,很多文件都是不需要版本管理的,比如Python的.pyc文件和一些包含密码的配置文件等等。

这个文件的内容是一些规则,Git会根据这些规则来判断是否将文件添加到版本控制中。

下面我们看看常用的规则:

/mtk/ 过滤整个文件夹

*.zip 过滤所有.zip文件

/mtk/do.c 过滤某个具体文件

很简单吧,被过滤掉的文件就不会出现在你的GitHub库中了,当然本地库中还有,只是push的时候不会上传。

需要注意的是,gitignore还可以指定要将哪些文件添加到版本管理中:

!*.zip

!/mtk/one.txt

唯一的区别就是规则开头多了一个感叹号,Git会将满足这类规则的文件添加到版本管理中。

为什么要有两种规则呢?想象一个场景:我们只需要管理/mtk/目录中的one.txt文件,这个目录中的其他文件都不需要管理。那么我们就需要使用:

/mtk/

!/mtk/one.txt

假设我们只有过滤规则没有添加规则,那么我们就需要把/mtk/目录下除了one.txt以外的所有文件都写出来!

最后需要强调的一点是,如果你不慎在创建.gitignore文件之前就push了项目,那么即使你在.gitignore文件中写入新的过滤规则,这些规则也不会起作用,Git仍然会对所有文件进行版本管理。

简单来说,出现这种问题的原因就是Git已经开始管理这些文件了,所以你无法再通过过滤规则过滤它们。

所以大家一定要养成在项目开始就创建.gitignore文件的习惯,否则一旦push,处理起来会非常麻烦。

# 此为注释 – 将被 Git 忽略

*.a       # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

  

假设你在Windows下进行Python开发,Windows会自动在有图片的目录下生成隐藏的缩略图文件,如果有自定义目录,目录下就会有Desktop.ini文件,因此你需要忽略Windows自动生成的垃圾文件:

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini

然后,继续忽略Python编译产生的.pyc.pyodist等文件或目录:

# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build

加上你自己定义的文件,最终得到一个完整的.gitignore文件,内容如下:

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini # Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build # My configurations:
db.ini
deploy_key_rsa

  

最后一步就是把.gitignore也提交到Git,就完成了!当然检验.gitignore的标准是git status命令是不是说working directory clean

使用Windows的童鞋注意了,如果你在资源管理器里新建一个.gitignore文件,它会非常弱智地提示你必须输入文件名,但是在文本编辑器里“保存”或者“另存为”就可以把文件保存为.gitignore了。

有些时候,你想添加一个文件到Git,但发现添加不了,原因是这个文件被.gitignore忽略了:

$ git add App.class
The following paths are ignored by one of your .gitignore files:
App.class
Use -f if you really want to add them.

如果你确实想添加该文件,可以用-f强制添加到Git:

$ git add -f App.class

或者你发现,可能是.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查:

$ git check-ignore -v App.class
.gitignore:3:*.class App.class

Git会告诉我们,.gitignore的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。

小技巧:

  让Git记住仓库的账号密码的方法

#执行以下命令(让计算机缓存我们输入的账号密码)
git config --global credential.helper store #然后执行:
git push origin your-branch #会让你输入用户名和密码,这时你输入就好了,然后下次再git push /pull 的时候就不用密码了~ #检验方式:C:\Users\你的电脑名; 这个文件夹下面是否能找到.git-credentials文件,如果文件的内容是有关你的git的设置,格式为:http://{用户名}:{密码}@{git 网址}

#切记,每次要推送之前最好新git pull一下

#切记,每次要推送之前最好新git pull一下

#切记,每次要推送之前最好新git pull一下

最新文章

  1. ABP文档 - Javascript Api - AJAX
  2. 第10章 嵌入式Linux的调试技术
  3. 手把手写php框架中三大“自动功能”
  4. 老生常谈,正确使用memset
  5. Openstack+Kubernetes+Docker微服务实践之路--选型
  6. 转帖不会乱码的,powershell网络蜘蛛
  7. python学习,dict的映射练习
  8. fadein()
  9. ubuntu14.04下unix网络编程环境的配置
  10. IOS XMPP
  11. 创建C#DLL
  12. spring框架总结(01)
  13. 详解功能版本管理之使用eoLinker
  14. 简单使用zabbix监控nginx是否存活
  15. vue笔记-生命周期
  16. NVMe协议1.3c(一) 概述
  17. python 全栈开发,Day38(在python程序中的进程操作,multiprocess.Process模块)
  18. 题解—— 洛谷 p1269 信号放大器(贪心)
  19. Problem A: 踢罐子 解题报告
  20. input的text输入框设置大一点

热门文章

  1. SVN 常用资源
  2. LeetCode Day 1
  3. Nginx笔记总结二十一:隐藏或者混淆nginx返回的Server信息
  4. Protein interaction|insight QUANTA|SYBYL COMPOSER|MODELLER|SWISS_MODEL|WHAT IF|3D-JIGSAW|CPH-ModelGPCRs|Membrane protein|
  5. HHP|HPLC-MS/MS|PMT|PST|de novo|
  6. sm4算法(附源码、测试代码)
  7. 吴裕雄--天生自然HTML学习笔记:HTML 图像
  8. MongoDB的初级安装和使用
  9. 吴裕雄--天生自然 R语言开发学习:时间序列(续三)
  10. 吴裕雄--天生自然 人工智能机器学习实战代码:LASSO回归