git重新学习
一个学习网址: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
、.pyo
、dist
等文件或目录:
# 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 网址}