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.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一下

原文地址:https://www.cnblogs.com/tjp40922/p/11315505.html