暂且记录一下,作为一个备忘录,方便之后查阅。也可作为初学者上手用。主要还是之前创作过程中提到了需要使用Git
哦。
原文链接:
1. 安装后的配置
安装Git
后,我们需要本地Git
与远程GitHub
连接的建立,只有将Git
本地与远程的GitHub
建立了连接以后我们本地的项目才能上传至远程服务器。
注:下面的命令请使用自己的用户名密码替换
1.1 在Git
中配置全局的GitHub
账号信息
1 | git config --global user.name "username" |
1.2 生成RSA
公、私钥文件
1 | ssh-keygen -t rsa -C "email" |
1.3 配对公、私钥
命令执行成功后,在本地电脑的名为.ssh
的目录下(例如C:\Users\gulei\.ssh\
)找到名为id_rsa.pub
的文件,打开这个文件后将里面的内容先复制下来。
然后我们找到GitHub Settings
https://github.com/settings/keys:
在左边的栏目中选择SSH and GPG Keys
:然后在出来的右边的框框中选择 New SSH
:其中Title
可以随意写个名字,Key
里面的内容需要把刚刚复制的id_rsa.pub文件中的内容拷贝进去,最后点击Add SSH key
即可。
我们如何检测是否已经连接上了呢?使用以下命令:
1 | ssh -T git@github.com |
2. 命令列表
说明:
workspace
:工作区
staging area
:暂存区/缓存区
local repository
:版本库或本地仓库
remote repository
:远程仓库
1、查看用户名和邮箱地址:
1 | git config user.name |
2、修改用户名和邮箱地址
1 | git config --global user.name "xxxx" |
3、如果我们是直接拉下代码库
1 | git clone url |
那么我们这个文件夹本身已经就是一个git
仓库了
4、如果我们是本地已有的文件去与远程代码库相关联的话,需要执行以下步骤:
1 | cd 文件/ #即需要进入这个文件 |
5、查看本地分支
1 | git branch |
注:名称前面加* 号的是当前的分支
6、在本地创建新的分支并切换到该分支上
1 | git checkout -b private |
等价于
1 | git branch private #在本地新创建private分支 |
7、查看远程分支
1 | git branch -r |
8、查看所有的分支(包括本地分支以及远程分支)
1 | git branch -a |
加上-a
参数可以查看远程分支,远程分支会用红色表示出来(如果你开了颜色支持的话)
9、查看本地分支与远程分支的映射关系
1 | git branch -vv |
10、重命名本地分支
1 | git branch -m |
11、删除本地分支
1 | git branch -d name |
12、删除远程分支
1 | git branch -r -d origin/name |
13、查看当前远程仓库信息
1 | git remote -vv |
14、远程新建分支后,本地查看不到,使用以下命令同步
远程新建分支,本地在未创建此新分支前便已经clone
下来,现在本地查看分支时没有发现远程新建的 分支,使用如下命令更新,即可查看远程新建的分支
1 | git remote #列出远程主机 |
15、当我们手动在远程分支上建立了一个新的分支,本地也有一个新的分支时,想要本地的新分支提交到这个远程的新分支上时,我们需要新建本地分支与远程分支的关联
1 | git branch --set-upstream-to=origin/name name |
eg:我的本地新建了一个分支private
远程新建了一个分支dev
把二者进行关联起来
1 | git branch --set-upstream-to=origin/dev private |
如果此时已经在本地private分支上,可以直接
1 | git branch -u origin/dev |
输出:Branch private
set up to track remote branch dev
from origin
.
16、如果本地有分支,但是远程没有分支对应,如何把本地的分支提交到远程
假设有本地分支dev
,远端没有该分支。此时push
或者pull
时,就不知道跟踪的是哪个分支。使用以下指令:
1 | git push --set-upstream origin dev |
推送后远程也会出现dev
分支,二者建立连接,注意此时的dev
并不是你给远程分支起的名字,而是根据本地的分支推送上去的远程分支。后续push
和pull
时,就不用指定分支。
17、本地没有某个分支,远程仓库有此分支,怎样拉取远端分支代码到本地分支?
1 | git checkout --track origin/name |
此时,本地会自动创建分支name
与远端分支同名,并与远端分支name
关联。
建议在弄分支的时候最好本地与远程的名字相同便于区别
18、如果我们的本地文件已经关联了远程代码仓库,现在想关联新的代码仓库
一种方法是将原来的远程仓库重新命名,另一种是删除原来的远程仓库;二者选其一,然后再新关联现在的远程仓库即可
1 | #方法一:重命名原来的远程仓库 |
19、撤销本地分支与远程分支的映射关系
1 | git branch --unset-upstream |
此时,当前的本地分支与远程分支解除关系
20、Git
在本地新建分支后,可做远程分支关联。关联目的是,如果在本地分支下进行pull
和push
操作时 ,便不需要指定远程的分支。
21、新建本地分支与远程分支相关联
1 | git checkout -b dev origin/dev # 新建本地分支dev与远程dev分支相关联 |
22、执行push
推送代码
1 | git push |
23、本地分支push
到远程分支
本地分支 v2
远程分支dev
如果没有建立关系时
1 | git push origin v2:dev |
如果已经建立关联 且目前的本地分支就在v2
上,我们可以直接使用
1 | git push |
24、多人合作提交代码
在我们自己提交之前如果有别人提交了代码,我们需要先进行合并代码,再进行push
1 | 方案一:合并远程分支代码 |
25、git fetch
与 git pull
的区别
git fetch
是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。
而git pull
则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge
,这样可能会产生冲突。
26、git fetch
的常见命令如下:
1 | git fetch <远程主机名> //这个命令将某个远程主机的更新全部取回本地,一般远程主机名为origin |
例如:返回origin
主机的maste
分支的更新 git fetch origin master
取回更新后,会返回一个FETCH_HEAD
,指的是某个branch
在服务器上的最新状态,我们可以在本地通过它查看刚取回的更新信息:
1 | git log -p FETCH_HEAD |
可以看到返回的信息包括更新的文件名,更新的作者和时间,以及更新的代码(红色删除和绿色新增)。
我们可以通过这些信息来判断是否产生冲突,以确定是否将更新merge
到当前分支。
如果我们需要合并的话执行以下代码
1 | git merge FETCH_HEAD |
总结:fetch
合并到分支需要两步
1 | git fetch origin master //从远程主机的master分支拉取最新内容 |
27、git pull
的常见用法
将远程主机的某个分支的更新取回,并与本地指定的分支合并
1 | git pull <远程主机名> <远程分支名>:<本地分支名> |
如果需要合并的本地分支就是目前的分支,则后面的本地分支名可以省略
28、还原代码至某个版本
1 | git reset --hard 版本号 |
如果不加版本号,默认恢复上一个版本
29、合并分支到master
上
首先切换到master
分支上
1 | git checkout master |
如果是多人开发的话 需要把远程master
上的代码pull
下来
1 | git pull origin master |
然后我们把dev
分支的代码合并到master
上
1 | git merge dev |
30、查看状态
1 | git status |
31、git配置的一些其他的命令
1 | git log # 查看提交历史 |
32、git的提交
1 | git diff # 查看变更内容 |
33.查看历史
1 | git log # 查看提交历史 |
34.撤销
1 | git reset --hard HEAD # 撤消工作目录中所有未提交文件的修改内容 |
35.分支与标签
1 | git branch # 显示所有本地分支 |
36.合并与衍合
1 | git merge # 合并指定分支到当前分支 |
37.远程操作
1 | git remote -v # 查看远程版本库信息 |
38.打包
1 | git archive --format=zip --output ../file.zip master # 将master分支打包成file.zip文件,保存在上一级目录 |
39.远程与本地合并
1 | git init # 初始化本地代码仓 |
3. .gitignore
文件
在主目录下创建 .gitignore 文件
忽略文件中的空行或以井号(
#
)开始的行将会被忽略。可以使用Linux通配符。例如:星号(
*
)代表任意多个字符,问号(?
)代表一个字符,方括号([abc]
)代表可选字符范围,大括号({string1,string2,…}
)代表可选的字符串等。如果名称的最前面有一个感叹号(
!
),表示例外规则,将不被忽略。如果名称的最前面是一个路径分隔符(
/
),表示要忽略的文件在此目录下,而子目录中的文件不忽略。如果名称的最后面是一个路径分隔符(
/
),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。1
2
3
4
5
6#为注释
*.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
THE END感谢您的阅读~